2014年1月4日
第1回では、初心者の方々向け、形態素解析と検索エンジンへの応用を説明しました。
今回はもう少しテキストマイニングらしい応用例を見てみましょう。
「応用例2」クチコミ評価
例えば、「Aビール」という商品に対して、ネット上の評判を測定したいとします。
「Aビールがうまい」という意見があれば、プラス評価となり、
「Aビールがまずい」という意見があれば、マイナス評価となるとします。
但し、「Aビールがうまい」という意見は色々な言い方で表現される可能性があります。
Aビールがうまい。
Aビールを飲んだけど、うまい。
うまいAビールを飲んだ。
さて、「うまい」というキーワードが検索できた時、その「うまい」が指しているのはAビールなのかどうかは、どうすれば分かるでしょうか。
一つのやり方は、「うまい」キーワードの近く(10文字以内、かつ、文末「。」を超えない)で探し、「Aビール」というキーワードがあれば、その「うまい」がAビールを指すことにするという方法があります。
但し、その時、以下の書き込みはプラスの評価でしょうか、それともマイナスの評価になるのでしょうか?
Aビールが今まで飲んだまずいBビールとCビールよりうまい。
上記の「10文字以内」のルールを適用すれば、「うまい」が指すのは正解のAビールではなく、Cビールとなってしまいます。
この問題を解決するためには、「係り受け解析」が必要です。
「係り受け解析」
係り受け解析は、簡単に言えば、文中の各単語の間に関連を付ける処理です。
例えば、
となります。
「うまい」は「地元」を指すのではなく、「ビール」を指す(係る)という結果が得られます。
また、隣り合っているのに、「うまい」と「地元」は何も関係が無いことも分かります。
上の方に挙げた例を解析見ると、
注)一部の係り受けが省略されました。
のような結果となります。
よって、Aビールの評価を知りたければ、「Aビール」という単語から係り受けの関係を辿っていけば良いです。
係っている先に「うまい」という単語があれば、プラスの評価を付け、
係っている先に「まずい」という単語があれば、マイナスの評価を付ければ良いのです。
「係り受け解析エンジンの例」
無償: KNP, CaBoCha
有償: Perceptrons Engine, SemanticFinder
などがあります。
「どうやって実装されているの?」
先ず、品詞間のルールの元に、ある程度係り受けが決められます。
例えば、
名詞 + 「は」+ 動詞
名詞 + 「の」+ 名詞
名詞 + 「を」+ 動詞
形容詞 + 名詞
の場合、両端にある単語の間には、関連(係り受け)があると判断できます。
但し、品詞間のルールのみでは、解決できない例があります。
うまいモルツから作られたビール
この場合、「うまい」が「モルツ」に係る(指す)解釈もあり得るし、
「うまい」が「ビール」に係る解釈もあり得ます。
複数の解釈があることを、自然言語処理上の「曖昧性」と呼びます。
複数の解釈から、それなりの解釈を選ぶには、また統計的な手法が用いられます。
非常に簡単に言えば、学習データから各解釈の確率を計算し、全体的に一番確率が高い解釈を選ぶ訳です。
この係り受け用の学習データも、第1回で紹介した「コーパス」(人間が既に解析してあるテキストデータ)から作成できます。
以上、第2回の「係り受け解析」でした。
第3回は近日に掲載する予定です。ご期待下さい。