最近、ブログやSNSの記事を検索して、どんなことに関心をもっているかを調べる解析エンジンが話題になっています。
検索エンジンの場合は、検索語を集計していけばよいのですが、ブログやSNSの記事を対象にするとなると、ちょっとめんどうです。
まず、日本語を解析しなくてはなりません。
このためによく使われる手段は、日本語形態素解析です。
形態素解析(Wikipedia)
http://ja.wikipedia.org/wiki/%E5%BD%A2%E6%85%8B%E7%B4%A0%E8%A7%A3%E6%9E%90
とりあえず、それぽいものを作ってみようと思い立ち、土曜日に作ってみました。
対象とするのは、Windows Server 2003上で運用しているWebチャットシステムです。
形態素解析は、MeCabのWin32バイナリを使い、C#からMeCabのDLLを直接コールするようにしました。
MeCabの解析結果から、固有名詞、一般名詞、未知語の一部を抜き出し、出現回数の統計をとりました。
出力は、結果の統計をソートし、上位を抜き出して、フォントサイズを変えたHTMLを生成して、逐次レポートするようにしました。
こんな感じになりました。
わりと、それっぽいです。
ただ、使ってみると、気に入らないことがでてきました。
MeCabは、IPA辞書を使って形態素解析を行いますが、細かくバラけてしまうのです。
たとえば、こんな感じです。
(1) バランスボール
バランス 名詞,一般,*,*,*,*,バランス,バランス,バランス
ボール 名詞,一般,*,*,*,*,ボール,ボール,ボール
(2) ストロングセブンビール
ストロングセブンビール
スト 名詞,一般,*,*,*,*,スト,スト,スト
ロング 名詞,一般,*,*,*,*,ロング,ロング,ロング
セブン 名詞,一般,*,*,*,*,セブン,セブン,セブン
ビール 名詞,一般,*,*,*,*,ビール,ビール,ビール
(3) ガンダムOO
ガン 名詞,一般,*,*,*,*,ガン,ガン,ガン
ダム 名詞,一般,*,*,*,*,ダム,ダム,ダム
O 記号,アルファベット,*,*,*,*,O,オー,オー
O 記号,アルファベット,*,*,*,*,O,オー,オー
(4) 安藤美姫
安藤 名詞,固有名詞,人名,姓,*,*,安藤,アンドウ,アンドー
美姫 名詞,一般,*,*,*,*,美姫,ビキ,ビキ
これを解決しないと、実用的ではありません。
この解決策は、連接する名詞を認識して連結し、複合語として扱うようにすれば、かなり改善されます。
そのへんは、また暇なときに作って遊んでみようと思っています。
※2008/10/28 07:27:00 加筆
コメント