プログラマでありたい

おっさんになっても、プログラマでありつづけたい

ヤフー「つぶやき感情分析」で、衆議院議員の人気度を見る

 ネットを見てると、面白いサービスが出ていました。

 ヤフー株式会社は12日、ソーシャルメディア上の投稿を検索できるYahoo!検索の「リアルタイム検索」において、「つぶやき感情分析」の正式版を公開した。

 つぶやき感情分析は、Twitter上の投稿を分析し、検索したキーワードについてユーザーがどのような感情を持っているかを、「ポジティブ」「ネガティブ」の割合でグラフ表示する機能。2013年9月にベータ版として提供を開始し、今回、正式版として公開した。

ヤフー「つぶやき感情分析」、Twitter上の感情を「ポジ/ネガ」で判定 -INTERNET Watch

 Twitterの情報をもとに、感情分析をするというサービスです。簡単にいうと、入力されたキーワードに対して、世間は好きか嫌いかを出すというサービスです。こういったことをやりたいなぁと思って、Twitterのデータを大量に収集したり、そのデータを分析したりしたことがあります。
 こういった感情分析があれば何が出来るのか、いろいろ妄想がはかどります。今回は旬なテーマとして、衆議院議員に対する世間の反応をみてみましょう。

「つぶやき感情分析」を使ってやったこと



 

  • 衆議院サイトの議員一覧から、全議員の名前を収集する
  • 議員一人一人に対して、Capybara+Seleniumを使って「つぶやき感情分析」をする
  • 結果を一覧化する

その結果は、次の通りです。

名前 ポジティブ(%) ネガティブ(%) 備考
逢沢一郎 0 0  
青木愛 35 7  
青柳陽一郎 0 0  
青山周平 61 0 同名のオートレーサーがいる
赤枝恒雄 0 0  
赤澤亮正 0 0  
赤羽一嘉 0 0  
あかま二郎 0 0  
赤松広隆 0 0  
赤嶺政賢 0 0  
秋葉賢也 0 0  
秋元司 0 0  
秋本真利 0 0  
浅尾慶一郎 0 0  
安住淳 0 0  
麻生太郎 10 14  
足立康史 0 0  
穴見陽一 0 0  
阿部寿一 0 0  
安倍晋三 0 22  
あべ俊子 0 0  
阿部知子 0 26  
甘利明 0 32  
荒井聰 0 0  
安藤裕 0 0  
池田道孝 - -  
池田佳隆 0 0  
伊佐進一 0 0  
井坂信彦 0 0  
石井啓一 0 0  
石川昭政 0 0  
石崎徹 0 0  
石関貴史 0 0  
石田祝稔 0 0  
石田真敏 0 0  
石破茂 0 28  
石原慎太郎 34 9  
石原伸晃 0 18  
石原宏高 0 0  
泉原保二 - -  
泉健太 0 0  
井出庸生 0 0  
伊藤信太郎 0 0  
伊藤忠彦 0 0  
伊藤達也 0 0  
伊東信久 0 0  
伊東良孝 0 0  
伊藤渉 0 0  
稲田朋美 0 3  
稲津久 0 0  
井野俊郎 0 0  
井上信治 0 0  
井上貴博 0 0  
井上英孝 0 0  
井上義久 0 0  
井林辰憲 0 0  
伊吹文明 0 0  
今井雅人 0 62  
今枝宗一郎 0 0  
今津寛 0 0  
今村洋史 0 0  
今村雅弘 0 0  
岩田和親 0 0  
岩永裕貴 0 0  
岩屋毅 0 0  
上杉光弘 0 0  
上田勇 0 0  
上西小百合 0 0  
うえの賢一郎 - -  
上野ひろし 0 0  
浮島智子 0 0  
生方幸夫 0 0  
浦野靖人 0 0  
漆原良夫 0 0  
江崎鐵磨 - -  
江田憲司 0 28  
江田康幸 0 0  
枝野幸男 3 17  
江渡聡徳 0 0  
衛藤征士郎 0 0  
江藤拓 0 6  
遠藤敬 0 0  
遠藤利明 0 0  
大岡敏孝 0 0  
大串博志 0 0  
大串正樹 0 0  
大口善徳 0 0  
大久保三代 0 0  
大熊利昭 0 0  
大島敦 0 0  
大島理森 0 0  
太田昭宏 0 0  
大塚高司 0 0  
大塚拓 0 0  
大西健介 0 0  
大西英男 0 0  
大野敬太郎 0 0  
大畠章宏 0 0  
大見正 0 0  
岡田克也 0 27  
岡本三成 0 0  
小川淳也 0 0  
奥野信亮 0 0  
奥野総一郎 0 0  
小熊慎司 0 0  
小倉將信 0 0  
小此木八郎 0 0  
小里泰弘 0 0  
小沢一郎 1 33  
小沢鋭仁 0 18  
小田原潔 0 0  
越智隆雄 0 0  
鬼木誠 0 0  
小野寺五典 31 0  
小渕優子 3 40  

実装について



 チョロチョロっと書いたので、手抜きの極みです。Gistを貼り付けておくので、マサカリ歓迎です。

衆議院議員一覧から名前を抜き出して、ヤフー「つぶやき感情分析」で好悪を調べる


 実装に際して、名簿を集めるのは単一ページに対してNokogiriを使ってスクレイピングするだけなので苦労はなかったです。しかし、「つぶやき感情分析」の検索結果を取得するのが悩みどころです。結果を画像で表示していて、その画像はJavaScriptで取得して描画しているようです。ちょっとその辺りを解析するのが面倒くさかったので、Seleniumで画面キャプチャしてその結果を手で起こしました。ビバ手作業!!ちなみにNokogiriやSeleniumを使ってスクレイピングする方法は、Rubyによるクローラー開発技法に書いている模様ですw

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

感想



 取得対象者が少ないなぁと思ったら、取得ページが分割されていて"あ行"しか取っていませんでした。面倒くさいので、そのまま放置しています。今回は半自動でしたが、全て手作業でするより10倍くらいは早かったと思います。全部自動化とかすると逆に大変な場合もあるので、ケースバイケースで使い分けるのもありなのではないでしょうか?
 ちなみに結果を眺めてたのですが、「つぶやき感情分析」はネガティブに傾きすぎる傾向があります。政治絡みの単語そのものがネガティブな得点与えられているのかなと思います。今度、別分野で試してみます。(結果取得の部分も、暇見つけて自動化考えてみます。)
 また、あまり呟かれていない、阿部知子さんとか小沢鋭仁さんなどもネガティブな評価が高くなっています。恐らく苗字と名前でもそれぞれ評価をして、総合的に判断するといった処理をしているのではないでしょうか。(それで、何故評価が下がるかは、リストの前後をみてください)
 誤解のないように言っておくと、この呟きの評価と選挙の当落は全く相関はないと思います。マイナスの投票が出来ない分、より嫌われている方が存在感が大きさを示している可能性があります。ここで大事になるのは、一定の基準で毎日の推移が見えることによって、何らかの指標に使えるという可能性があるということです。

See Also:
RubyでWebスクレイピングの話をしてきました。第1回Webスクレイピング勉強会@東京
「第2回Webスクレイピング勉強会@東京」に参加&発表してきました
『Rubyによるクローラー開発技法』を書きました
Rubyによるクローラー開発技法の目次

参照:
Yahoo!検索(リアルタイム)
ヤフー「つぶやき感情分析」、Twitter上の感情を「ポジ/ネガ」で判定 -INTERNET Watch

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例