導入
近年、TwitterやFaceBook等のSNSやAmazonや価格.comにおける口コミなど、ユーザーからの投稿を利用したサービスが普及し、家族や友人、有名人などの近況や売れ筋の商品や飲食店などの情報を気軽に取得できるようになりました。
利用者数はスマートフォンの普及により増加し、ユーザーから投稿される書き込みの量も膨大になりつつあります。
多くのショッピングサイトでは商品に対する口コミと評価値が存在しますが、口コミの内容と評価値が必ずしも一致しないのが現状です。
評価値というのは投稿者の主観で決定されるもので、正確に判断するためには評価値以外の判断基準が必要であると考えました。
そこで、投稿時の投稿者の感情は「喜び」や「悲しみ」など言葉に表れることから、「感情語」を活用した文章の解析が判断基準になるのではないかと思いました。
じゃあどのように感情語を分類するの?
感情語を分類する方法としてはいくつかあります。例えば、著者:中村明の感情表現辞典という書籍から、
感情語のカテゴリを「喜, 怒, 哀, 怖, 恥, 好, 厭, 昂, 安, 驚」の10種類に分類するという手法を用いることもできます。
しかし、このカテゴリの分類の弱点として、ポジティブな表現の方が収録されている語録数が多いことから、感情分析を行った際に偏ってしまうという問題があります。
この偏りから、ネガティブな傾向にあるカテゴリは意味を持たなくなってしまいます。
重要な点としては、全てのカテゴリが均等に語録が収録され、投稿者の感情を汲み取ることのできるカテゴリの分類が必要になります。
そこで、今回は5つのカテゴリに分類する手法を用います。
先ほどの感情表現辞典からネガティブなカテゴリを取り除き、語録を均等に分配した
「喜, 楽, 安, 好, 驚」
この5つのカテゴリに分配する方式です。
これにより、辞書による語録数の偏りが起こらず、投稿者の感情を汲み取ることのできるカテゴリの分類に近いと思いました。
この導入の詳細は参考文献に全て記載されているので、そちらを参考にしていただければ幸いです。
それでは作ってみよう
というわけで実際に作って見ました。
今回は大々的にやる予定もないできないので、シェルスクリプトで簡単に作成しました。
処理としては、解析する文章をMeCabによる形態素解析を行い、分割した単語と感情語辞書に登録されている感情語と一致したらカウントするといったものです。
$ emotion 楽しい嬉しい驚き桃の木クッション完備
enjoy:1 happy:1 like:0 relief:0 surprise:1
と行った感じになっています。
ちなみに、-fオプションをつけることによりファイルから読み取ることもできます。
$ emotion -f review.txt
enjoy:1 happy:1 like:7 relief:1 surprise:0
まだREADMEも書いていないし、それ以前にガバガバな内容ですが、これから少しずつ改善できたらと思っています...
Github
参考文献
口コミ解析システムのための感情語辞書の検討 - 情報学広場
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=177165&file_id=1&file_no=1