PythonでTwitterでのツイートをネガポジ判定してみた結果。。。

単語感情極性対応表」なるものを発見し、これを使えばネガポジ判定が容易にできるかなーと試してみました。

MeCab等の形態素解析器を使って形態素解析すればツイート等のテキストからそのテキストを構成している単語を抽出するのは簡単なのですが、そこから先のハードルが高く、なかなか進めずにいたのですが、おもしろい結果がでそうで楽しみです。

どういう結果が出るのか、この時のハセテツは知らなかった。そう、知らなかったんだ。

さて。

コードは別途公開するとして、手順としては

  1. 単語感情極性対応表から単語と極性値を読み込み、辞書として登録。
  2. TwitterAPI経由で自分のツイートを読み込み、MeCabで形態素解析。
  3. そのツイートのスコアを保持しておく空のリストを作成しておく。
  4. 形態素解析した後、名詞、動詞、形容詞、副詞だけを抽出、時制は統一しておく。
  5. 抽出した単語を辞書から探して、存在した場合はその極性値をスコアとしてリストに追加しておく。
  6. ひとつのツイートに使われた単語のスコアの平均を求め、そのツイートのスコアとする。
  7. 50ツイートほど計算して平均を出し、自分のツイートのネガポジ判定スコアとする。

ざっとこんな感じです。大した処理はしてません。もう単語感情極性対応表とMeCabの素晴らしさに頼りっきりです。あ、MeCabの辞書はUniDicを使わせて頂きました。

結果!

あまりの暑さに強力そうな水鉄砲を買った。しかも2丁。勢いに任せてビーチベッドまで買った。後悔はしてない。 http://t.co/o0uN3CKPBN
SCORE: -0.6720994

真夏にTシャツとジーンズで外にでたら寒くて具合悪くなるなんて誰が想像するか
SCORE: -0.337328933333

電車の中が寒くてゲンナリしてる
SCORE: -0.8192795

頭のなかでドリフの雷様が再生されている
SCORE: -0.4950561

外からゴロゴロと不穏な音が聞こえているのだが聞こえてないフリをしよう
SCORE: -0.869670333333

50ツイート(公式RT除く)を計算して、最終的な平均スコアは

AVG: -0.576440346667

ネガティブ!しかもややネガティブじゃなくてけっこうネガティブ!まあ自覚はあったんですけどねー、こうして数字にされちゃうとねー。

ってスネスネになりつつ単語感情極性対応表を調べてみたところ、全単語55,125中、ポジティブワード(スコア0以上)が5,242語、ネガティブワードが49,983語と、単語数に大きな開きがありました。

いやー、これじゃネガティブ判定もしかたないね☆

極性値0(ゼロ)をポジティブとして扱うのはちょっと違和感あったんですけど、ニュートラルの扱い方がいまいちわかんなかったのでひとまずこのまま。

そこそこおもしろい結果がでたので、別のアプローチとかも調査していこうと思います。

最後となりましたが、単語感情極性対応表MeCabUniDicの素晴らしさに敬意を払い、心から感謝します。ありがとうございました。