今日は TF-IDF についてざっくりとまとめます。
特徴量と特徴抽出
TF-IDF は情報検索や文書推薦などで幅広く利用される特徴量の指標です。
- 特徴量 - 対象の特徴を表現する値
- 特徴抽出 - 対象から特徴量を取り出す
日本語の特徴抽出
英語の場合はホワイトスペースで分割してから記号などを取り除くだけで特徴抽出できます。
日本語の場合は形態素解析または N-Gram などの索引文字列抽出方法を利用します。
索引語頻度 TF (Term Frequency)
ある文書 d の中に出現する索引語 t の頻度です。文書中にその単語が何回現れたかをあらわします。
単語 | 回数 |
---|---|
私 | 1 |
東大 | 1 |
受験 | 1 |
合格 | 1 |
勉強 | 2 |
徹夜 | 2 |
これを tf(t,d) であらわします。これは索引語 - 文書行列の要素です。この索引語 t の重みを次式であらわします。
w_t^d = tf(t,d)
DF (Document Frequency)
文書全体でその単語が何回現れたかをあらわします。
単語 | 回数 |
---|---|
合同 | 6 |
合格 | 3 |
合法 | 6 |
合流 | 7 |
合理 | 3 |
つまり文章全体で登場回数が少ない単語は、よりその文書を特徴付けるものだとして取り扱われるわけです。
DF の対数を IDF (Inverse Document Frequency) と言います。なぜ対数を取るのかというと、文書集合の規模に対して IDF の値の変化を小さくするためです。
IDF は次式であらわされます。
idf(t) = log\frac {N} {df(t)} + 1
TF-IDF
TF / DF であらわします。 (IDF は DF の対数)
ある辞書が 24 万語の単語を格納していたとします。この場合、文書は 24 万次元の空間上の点としてあらわされます。なお文書に登場しない単語は TF が 0 になりますから TF-IDF も 0 になります。
あとはこれを 24 万の要素を持つ数値の配列として、類似度を求めるなりすれば文書の推薦や情報検索をすることができるようになります。
じゃあこれだけで良いのかというとそうではなく、雑音を排除したり、特徴量を正規化したりする必要があります。そのあたりの話はまた次回に。
参考
情報検索と言語処理 (言語と計算)
http://www.amazon.co.jp/dp/4130654055