Posted at

TF-IDF

More than 1 year has passed since last update.


TF-IDF

今日も、機械学習やその他色々について得た知識を

復習and記事作成の練習and個人の備忘録としてまとめていきます!

今回は、TF-IDFという自然言語処理の分野でよく使われる手法について説明します!

⚠︎※※注意※※⚠︎

・出来るだけ専門知識のあまりない人に対して、分かりやすく書くことを目標にしています。

 そのため、厳密に言うと間違っている部分があると思いますがご容赦ください。

・また、ネットで調べたレベルの知識がほとんどなので、

 "厳密に言うと"レベルではなく間違っている箇所があるかもしれません。。

 その場合は非常に申し訳ないです。指摘していただけると幸いです!


参考サイト

TF-IDFで文書内の単語の重み付け


前回までの記事

機械学習について

教師あり学習 〜回帰〜

教師あり学習 〜分類〜

Random Forest

階層型クラスタリング

非階層型クラスタリング k-means

主成分分析


TF-IDFとは

TF-IDFとは、Term Frequency(TF)と、Inverse Document Frequency(IDF)のことです。

文書の中から、その文書の特徴語を抽出する時に使う値です。

いくつかの文書があったときに、それらに出てくる単語とその頻度(Frequency)から、

ある文書にとって重要な単語はなんなのかというのを数値化します。


TF

TFは、単語の文書内の出現頻度です。

ある文書中に出現する頻度が多ければ多いほど、その単語は重要である可能性が高い!というわけです。

\textrm{tf}(t,d) = \frac{n_{t,d}}{\sum_{s \in d}n_{s,d}}

$\textrm{tf}(t,d)$ : 文書 $d$ 内のある単語 $t$ のTF値

$n_{t,d}$ : ある単語 $t$ の文書 $d$ 内での出現回数

$\sum_{s \in d}n_{s,d}$ : 文書 $d$ 内のすべての単語の出現回数の和


IDF

IDFは、ある単語が出てくる文書頻度の逆数です。

多くの文書中に登場する単語は、一つの文書の特徴語にはなりにくいというわけです。

\textrm{idf}(t) = \log{\frac{N}{df(t)}} + 1

$\textrm{idf}(t)$ : ある単語 $t$ のIDF値

$N$ : 全文書数

$df(t)$ : ある単語 $t$ が出現する文書の数

対数をとっているのは、文書数の規模が大きくなっても値があまり変化しないようにするためです。

また、1を足しているのは、全文書に登場する単語のTF-IDFが強制的に0になってしまうのを防ぐためです。


これらTFとIDFをかけあわせることによって、ある文書において、

その文書内での出現回数が多い(TFの値が大きい) かつ、

他の文書であまり出てこない(DFの値が小さい=IDFの値が大きい) 

という単語ほど、値が大きくなり、その文書を特徴付ける単語を抽出できるというわけです。

実際に計算してみましょう。

[文書A] スポーツ 野球 野球 バット

[文書B] サッカー サッカー サッカー スポーツ ゴール

という二文書があったとします。

たった二文書ですし簡易にするため、今回IDFは、

$\textrm{idf}(t) = \log{\frac{N}{df(t)}} + 1$ ではなく、 $\textrm{idf}(t) = \frac{N}{df(t)}$として考えます。

$\textrm{tf}(スポーツ,文書A)$ * $\textrm{idf}(スポーツ)$ = 0.25 * 1 = 0.25

$\textrm{tf}(野球,文書A)$ * $\textrm{idf}(スポーツ)$ = 0.5 * 2 = 1.0

$\textrm{tf}(バット,文書A)$ * $\textrm{idf}(スポーツ)$ = 0.25 * 2 = 0.5

$\textrm{tf}(サッカー,文書A)$ * $\textrm{idf}(スポーツ)$ = 0.6 * 2 = 1.2

$\textrm{tf}(スポーツ,文書A)$ * $\textrm{idf}(スポーツ)$ = 0.2 * 1 = 0.2

$\textrm{tf}(ゴール,文書A)$ * $\textrm{idf}(スポーツ)$ = 0.2 * 2 = 0.4

両方の文書に登場している「スポーツ」という単語のスコアは小さく、

自文書にしか登場しない、かつ出現回数の多い「野球」や「サッカー」といった単語のスコアが高くなっていることがわかります。


まとめ

・TF-IDFは、その文書の特徴語を抽出する時に使う値。

・TFは、Term Frequencyで文書内の出現回数。一つの文書内で出現する回数が多ければ重要である可能性が高い!

・IDFは、Inversed Document Frequencyで単語の出現文書数。多くの文書に出現している単語は重要である可能性が低い!


あとがき

シンプルかつ理にかなっている!僕はTF-IDFはなんだか結構好きです。笑

もちろん、文書の特徴語ってだけでなく、文書をカテゴリに分類した後に、カテゴリの特徴語みたいなのも同じく抽出できます!

ここまで読んでいただき、ありがとうございました!