文章の極性を判定する

 特定の話題について追いかける際、ツイートなどの文章を収集・観察したい事があります。その際、単純に検索して目視するより、多少の分類を行ったり定量的な指標を持っておくと、人がチェックする際には整理された内容を確認するだけでよくなります。

 先行研究は沢山あるのですが、今回は文章がポジティブかネガティブか(極性)を判定する事にしました。文中に何度ポジティブとネガティブそれぞれのキーワードが出現するかカウントし、多かった方を文章の評価値とする、シンプルな方法を取ります。この方法は既に何度も試されている内容ですが、とりあえず手元で実装してみましょう。

 使用している辞書はこちらのものです。
Open Resources/Japanese Sentiment Polarity Dictionary - 東北大学 乾・岡﨑研究室 / Communication Science Lab, Tohoku University
 実装はこちらです。
text2sentiment.rb

適用結果

 いくつか文章を評価してみましょう。

吉川英治「三国志」より
『「――そんな所で、今朝からなにを待っているんだね。このごろは、黄巾賊こうきんぞくとかいう悪徒が立ち廻るからな。役人衆に怪あやしまれるぞよ」』
"score = 0, match = まれ"
"score = -1, match = 悪"
"score = 0, match = 黄"
"score = 0, match = 今"
"score = 0, match = 人"
"score = -1, match = 賊"
"score = 0, match = 朝"
"「――そんな所で、今朝からなにを待っているんだね。このごろは、黄巾賊こうきんぞくとかいう悪徒が立ち廻るからな。役人衆に怪あやしまれるぞよ」"
"result = -2"

夏目漱石「こころ」より
『精神的に向上心がないものは馬鹿だといって、何だか私をさも軽薄もののようにやり込めるのです。』
"score = -1, match = 軽薄"
"score = 1, match = 向上"
"score = 1, match = 向上心"
"score = 0, match = 神"
"score = 0, match = 精"
"score = -1, match = 馬鹿"
"精神的に向上心がないものは馬鹿だといって、何だか私をさも軽薄もののようにやり込めるのです。"
"result = 0"

坂口安吾「桜の森の満開の下」より
『桜の花が咲くと人々は酒をぶらさげたり団子だんごをたべて花の下を歩いて絶景だの春ランマンだのと浮かれて陽気になりますが、これは嘘です。』
"score = 0, match = げた"
"score = -1, match = 嘘"
"score = 0, match = 花"
"score = 0, match = 気"
"score = 1, match = 春"
"score = 0, match = 人"
"score = -1, match = 絶"
"score = 1, match = 絶景"
"score = 1, match = 陽"
"score = 1, match = 陽気"
"桜の花が咲くと人々は酒をぶらさげたり団子だんごをたべて花の下を歩いて絶景だの春ランマンだのと浮かれて陽気になりますが、これは嘘です。"
"result = 2"

谷崎潤一郎「春琴抄」より
『佐助、それはほんとうか、と春琴は一語を発し長い間黙然と沈思ちんししていた佐助はこの世に生れてから後にも先にもこの沈黙の数分間ほど楽しい時を生きたことがなかった』
"score = 1, match = 楽しい"
"score = 0, match = この世"
"score = 1, match = 楽"
"score = 1, match = 春"
"score = 0, match = 助"
"score = 0, match = 生"
"score = 1, match = 長"
"score = 0, match = 沈黙"
"佐助、それはほんとうか、と春琴は一語を発し長い間黙然と沈思ちんししていた佐助はこの世に生れてから後にも先にもこの沈黙の数分間ほど楽しい時を生
きたことがなかった"
"result = 4"

 形態素解析してないので変な所に適用されているのも問題がありますが、やはり文章全体を否定するような文では誤判定されています。文意を解釈していないので、単語の出現傾向だけを単純に文意とみなすのは難しそうです。

先行研究

 なお先行研究としては、形態素解析してから辞書を適用したり、係り受け解析を行う、ルールベースで要望を抽出するなど、様々な方法がありますので、まずはこれらの方法を適用していくのが良いでしょう。いくつもの先行研究があります。

要望抽出に対象を絞った事例
https://kaigi.org/jsai/webprogram/2015/pdf/1H3-3.pdf
この手法を適用したもの
https://developers.cyberagent.co.jp/blog/archives/2707/

係り受け解析を組み合わせる事例
http://qiita.com/kenmatsu4/items/52ab6deffdd61e7d8c0f

再帰的ニューラルネットワークによる手法(を発展させたもの)
http://cl.sd.tmu.ac.jp/~miyazaki/publish/nl201607.pdf
http://cl.sd.tmu.ac.jp/~miyazaki/publish/nl201607_presentation.pdf

参考文献

小林のぞみ,乾健太郎,松本裕治,立石健二,福島俊一. 意見抽出のための評価表現の収集. 自然言語処理,Vol.12, No.3, pp.203-222, 2005. / Nozomi Kobayashi, Kentaro Inui, Yuji Matsumoto, Kenji Tateishi. Collecting Evaluative Expressions for Opinion Extraction, Journal of Natural Language Processing 12(3), 203-222, 2005.
東山昌彦, 乾健太郎, 松本裕治, 述語の選択選好性に着目した名詞評価極性の獲得, 言語処理学会第14回年次大会論文集, pp.584-587, 2008. / Masahiko Higashiyama, Kentaro Inui, Yuji Matsumoto. Learning Sentiment of Nouns from Selectional Preferences of Verbs and Adjectives, Proceedings of the 14th Annual Meeting of the Association for Natural Language Processing, pp.584-587, 2008.

Webページを保存するサービスを作成

 見ているwebページを保存できるサービスはいくつかあります。Pocket(Read It Later)やInstapaper、Readability、OneNote, Evernoteなどが代表的なものです。しかし、どれも特定のサービスへ保存することが前提になっています。この種のサービスでは保存したデータを移動できる方が、長期間にわたり利用する場合に都合が良いです。
 「あとで読む」は見ている内容をメールで送る単機能なサービスです。その分融通が利くため、現在こちらを利用しています。しかしこちらのサービスでは、httpsのサイトを保存することができません。Bookmarkletが呼び出すJavaScriptがhttpのサイトに置いてあるためです。
 またこのような機能のみのサービスは広告を挟み込む余地が少なく、マネタイズしづらい構造です。またメールを前提としているため、今後盛り上がるジャンルのサービスではないと考えています。そのため、サービスがどうなったとしても大丈夫にしておく必要性を感じていました。
 そこで今回、同じような挙動をするものを作成しました。こちらです。

https://github.com/tattyamm/atodeyomo

 Bookmarkletを使うとサイト側のJavaScriptが読み込まれ、それがサイト内の情報をAPIサーバーに送り、APIサーバーは設定した送信先にメールを送ります。とりあえずHerokuで動作させてhttps化を実現しています。


 作る上で参考になる情報はいくつかありますが、全部入りはこちらです。
The Web Clipper Goes Open-Source ? OneNote Dev Blog

 使用したサービス・フレームワークなど
Heroku (Postgresプラグイン)
Ruby 2.3.0
Ruby on Rails 5.0.0.1
SendGrid


iOSアプリを更新しました


iTunesストア

挙動に変更はありませんが、サーバー含めて変更が入っています。

アプリ側
github
・ATS(App Transport Security)対応
・Swiftのバージョンアップ対応
・ライブラリ管理をCarthageとCocoaPodsの併用に変更

サーバー側
github
・playframework2からrailsに変更(現在は平行運用)
・一部文字化けに対応
・https化
このサイトは
 Webアプリケーション開発のことや、iPhone・Android向けアプリ開発の話題がメインです。技術情報を取り扱っています。
 管理:えんたつ。twitter: @tattyamm
mimage
検索
広告
カテゴリ別アーカイブ
twitter
RSS
リンク
プログラミング本
アプリを作る時などに読んだ本
iPhoneプログラミングUIKit詳解リファレンス iPhoneプログラミングUIKit詳解リファレンス Android Layout Cookbook アプリの価値を高める開発テクニック パーフェクトPHP (PERFECT SERIES 3) JavaプログラミングBlack Book 2nd Edition (Black Bookシリーズ)
広告
検索