« 早寝しました | メイン | スパイダーマン3 »

2007年05月12日

TF-IDF を改めて調査中

ナイーブベイズ分類器のソースコードを整理しているときに、単語データベースを作成しているのだから TF-IDF に基づいて重要単語の抽出も出来るのではないかと思ったわけです。

TF-IDF は情報検索の考え方なので、重要単語の抽出元となる文書は、既に学習済みの文書集合に含まれているという前提から計算されます(たぶん)。ということで、学習されていない場合は DF が 0 になる可能性があるわけで、演算が不可能(ゼロ頻度問題?)。ナイーブベイズを調べたときに知った加算スムージングに似た手法を用いることにしたけど、良いのだろうか…。

TF-IDF の基になっている、索引語の重み付け(term weighting)に関しても調べてみた。

・局所的重み (local weight)
・大域的重み (global weight)
・文書正規化係数 (document normalization factor)

の3要素から成り立っており、

索引語の重み = 局所的重み * 大域的重み / 文書正規化係数

という式で表せるらしい。

それぞれには、さまざまな手法が提案されており、その一部が TF-IDF になります(* で示すもの)。

局所的重み付け
・2進重み (binary weight)
・索引語頻度 (term frequency, TF) *
・対数化索引語頻度 (logarithmic TF)
・拡大正規化索引語頻度 (augmented normalized TF)

大域的重み付け
・重み付けなし
・文書頻度の逆数 (inverse document frequency, IDF) *
・確率的 IDF (probabilistic IDF)
・大域的頻度 IDF (global frequency IDF)
・エントロピー (entropy)

文書正規化
・正規化なし *
・コサイン正規化 (cosine normalization)
・ピボット正規化 (pivoted normalization)

検索結果のスコア付けに関する技術でもあるので、単語抽出だけなら、そんなに難しく考える必要もないはずだけど、知っていて損することは無いと思うので。詳しい式や概念は Google や書籍でどうぞ。

単語の抽出手法も検討しないと。形態素解析器 MeCab を用いますか。

【関連情報】
Text Classification with CEEK.JP NEWS (2005年09月08日)

【関連商品】
情報検索アルゴリズム (北 研二)
言語と計算 (4) 確率的言語モデル (北 研二)

【関連情報】
・形態素解析と検索APIとTF-IDFでキーワード抽出 - たつをの ChangeLog
 http://chalow.net/2005-10-12-1.html
・TF・IDF - 長岡技科大 自然言語処理研究室
 http://nlp.nagaokaut.ac.jp/wiki/wiki.cgi/term?page=TF%A1%A6IDF

2007年05月12日 13:01 | Technology

トラックバック

コメント

ヒューリスティックだと思われていたTF-IDFが、実際には合理的な理由があると
第一人者 工藤拓氏が 自身のblogで解説してますね。

http://chasen.org/~taku/blog/archives/2005/11/_tfidf_1.html

投稿者 tak : 2007年05月15日 11:46

>> tak さん
ナイーブベイズにも似たような話があるのを聞いたことがあります。
経験則を数学的に説くことは、パズルのような感じで面白いですよね :)

投稿者 ceekz : 2007年05月15日 13:20