キーワード抽出:連結コスト VS TF-IDF

会社の忘年会で、わけちの運用面の話をLTでしたんですが、色々とヒントを貰った。
やってよかった!
#プレゼンは内輪な感じなので、どこかに載せたりはしません

botの返信方法を素人なりに考えると、返信元の文章からキーワードを選択し、そこから文章を組み上げる、という方法を思いつきました。
やりたいことは、「今日は焼酎を飲んだ」から「焼酎」を抜き出して、そこから文章を作ること。

連結コスト(累積コスト)

MeCabはその形態素まで掛かったコスト、累積コストを返してくれます。
そこにいたるまでにかかったコストで、単語そのもののコストではありませんでした。
以前、MeCabのパラメータに関して調べたのに、ちゃんと理解していませんでした。
コストが低いほどよく使われる形態素。
コストが高い=あまり使われない連鎖なので、キーワードとしてはダメな気がする…。
これを使うぐらいなら、単語の頻度が高いものを使うほう(現状)がまだ良さそうだ。
mwSoftさんの日本テレビ東京で学ぶMeCabのコスト計算がとても参考になりました。

TF-IDF

例のごとくgoogleると、wikipediaがトップに来て、マルコフ連鎖の計算式の意味が全くわからなかったの苦い記憶が甦ったのですが、なんとか僕でもおぼろげに理解できました(今見ると流石にちょっとわかるぞ!)。
僕のあんまりな感じの日本語で云々書くよりも、[を]形態素解析と検索APIとTF-IDFでキーワード抽出が凄く分かりやすい。
Twitter botの場合、N(Total number of documents)は学習したツイートの数かな?
現在の作りだと、正確なN、TF、IDFの値は求められないけど、近い値は求められそう。
これは試してみたい。

会社にある技術書はよく読むんだけど、この手のは自分で買って勉強しないから、よろしく無いな…。「入門 自然言語処理」が欲しいんだけど、高いんだもの…。


以上が僕の冬休みの宿題の結果でしたorz
他の大きなイベントというと釣りに連れてって貰ったくらいで、初詣や挨拶にもいかなかった。
あとは自炊して、お酒(しかも通販)飲んでたくらい…というダメ人間っぷりでしたが、しっかり休めた気がする。