初学者の統計学習ノート統計学およびR、Pythonでのプログラミングの勉強の過程をメモっていくノート。Pandas負のオーラを自動検出したい前回のエントリで、著作権侵害にあたる違法アップロード動画を自分のTwitterで拡散してしまっている懸念を考えて、YouTube動画のリンクが貼ってあるツイートをまとめて削除しました。前回のエントリでも言いましたが、著作権侵害モノ以外にも、「残しておくとまずいツイート」は色々ある可能性があり、たとえば誹謗中傷の類いがあるかと思います。誹謗中傷ツイートを自動抽出する方法はにわかには思いつきませんが、たぶん「クソ」とか「死ね」とか「バカ」とかそういう悪口の辞書が必要になりそうです。ところで、言語データの分析手法として、単語ごとに感情特性を評価した辞書というものがあちこちで作られていまして、これを使ってツイートがどのような感情を帯びているか分析するということが、よくやられています。Yahoo!がそういうツールを提供してたりもします(参考リンク)。Yahoo!のリアルタイム検索にキーワードを入れると(この場合は「ちきりん」)、そのキーワードに関係するツイートが流れてくると同時に、画面に右の方に、ポジティブなつぶやきが多いかネガティブなつぶやきが多いかのグラフが表示されます(この場合はネガティブが74%、ポジティブが0%、中立が26%)。したら、感情分析の手法を用いて、自分のツイートの中から「負のオーラ」が漂っているものを自動的に抽出し、削除するというアプローチがあり得るかもしれません。いうわけで今日は簡単な感情分析を行ってみました。最初に言っておきますが、今回やったような単純な手法では精度が低く、実用は厳しいです。試しにやってみました程度のアウトプットになっております。それでも、取っ掛かりとして手を動かして解析してみるというのは、色々知識が広がるものではあります。Table」というやつです。Tableこの辞書の中身は、めでたい:めでたい:形容詞:0.999645賢い:かしこい:形容詞:0.999486善い:いい:形容詞:0.999314適す:てきす:動詞:0.999295過小:かしょう:名詞:-0.942846塗る:ぬる:動詞:-0.943453器量負け:きりょうまけ:名詞:-0.943603固まる:かたまる:動詞:-0.943991こんな感じで、単語に対応する極性情報が-1〜+1の間で割り当てられており、-1に近いほどネガティブ、+1に近いほとポジティブということになっています。後述するように、ゼロがニュートラルと言っていいのかはよく分かりません。Dictionary」というのがあり、東大のサイトにそのページがありますが、ダウンロード可能なものとして公開されてるわけではないようです。Tableの作成に関する高村教授らの論文は以下の場所で読めます。Tableは根性で大量の単語に極性を割り振っていったわけではなく、大部分の単語の極性情報が機械的に導出されています。物理学の理論を応用したモデルの詳細は、難しくて理解できねーと思いよく読んでませんが、「各電子のスピンは,上向きと下向きのうちどちらかの値をとり,隣り合ったスピンは同じ値をとりやすい.我々は,各単語を電子と見なし,単語の感情極性をスピンの向きと見なす.関連する単語ペアを連結することにより語彙ネットワークを構築し,これをスピン系と見なす.」そうです(汗)その利点として、「我々のモデルでは,平均場近似により語彙ネットワーク上の単語の感情極性が大域的に決定される.このような大域的な最適化を用いるからこそ,語釈文やコーパスのような,シソーラスと比べてノイズが含まれやすい(すなわち,隣り合っていても同じ極性を持たないことが起こりやすい)リソースを取り入れることが可能になるのである.最短距離を利用した手法や単純なブートストラッピングを利用した手法のような既存手法では,そのようなリソースを取り入れることはできない.」らしいです(汗)(汗)私にはよく分かりませんが、ともかくそういう理論物理学にヒントを得たモデルによって、まず、辞書・シソーラス・コーパスから「語彙ネットワーク」を形成しておき、そこにgood/badなどすでに判明している極性情報を注入してやることで、ネットワーク内の語彙に極性情報が伝搬されて、自動的に極性辞書ができあがるというプロセスのようです。