TF-IDFってなに?(logが出てきて訳分からん。。。)


背景

「TF-IDF」は文章中の単語の重要度を測るのに使われる。
ex) 自然言語処理・レコメンド・検索などで活躍します

今回はYahoo!,Googleなどの検索エンジンであるワードを入力した時に、どのようなページを上位に載せるべきか、ということを考えながら進めると理解が容易くなります。

例えば、"自然言語処理とは"と調べると。。。
 

どのようなサイトを上位に載せるべきでしょうか?
例えば、

  • 「自然言語処理」「とは」の2単語が多く含まれているサイトを上位に出力する

とするのがシンプルな考えだと思います。

しかしこのままでは、いくつか問題点があります。

① 長文のサイトが圧倒的に有利になる
「とは」のみが多すぎるサイトだと意味を為さない

このような問題を解決できる単語の重要度の指標として、「TF-IDF」があります。

TFの定義

\begin{align}
TF(t,d) &= \frac{単語tの登場回数}{文章dの単語数} \\
&= \frac{\# \ \ of \ \ t \ \ in \ \ d}{\#d}
\end{align}

「TF」"文章dの中の単語tの割合”を意味するため、
先程述べた、"①長文のサイトが圧倒的に有利になる"の問題を解消できる!

IDFの定義

\begin{align}
IDF(t) &= log \frac{全文章数}{単語tを含む文章数} \\
&= \frac{\#D}{\# \{d∈D | t∈d\}}
\end{align}

「IDF」"単語tを含む文章の割合、確率の逆数"を表す。
先程述べた、"②「とは」のみが多すぎるサイトだと意味を為さない"の問題を解消できる!

logを用いる理由

\begin{align}
p(t) &=  \frac{単語tを含む文章数}{全文章数}とすると、 \\
\frac{1}{p(t)}&= \frac{全文章数}{単語tを含む文章数} は単語tのレア度を表していることが分かる。
\end{align}

突然だが、「情報量」の定義をしておく。
「情報量」…あるできごと(事象)が起きた際、それがどれほど起こりにくいかを表す尺度。ありふれたできごとが起こったことを知ってもそれはたいした「情報」にはならないが、逆に珍しいできごとが起これば、それはより多くの「情報」を含んでいると考えられる。

【具体例】
ルーレットには1~40までの番号が振られています。
そして、あなたは「ルーレットが出た目」を当てればお金がもらえます。

A:1~20のうちのどれかの目が出るよ
B:1~10のうちのどれかの目が出るよ

Q.ルーレットを当てるにはAとBのどちらの手がかりを得たいですか?

【答え】
Aが発生する確率は2分の1。
Bが発生する確率は4分の1。
そして、Bのほうが情報量が多い

これを一言でいうと「発生する確率が低いこと(珍しいこと)が分かった時のほうが、情報量が多い」ということになります。

以上より、
確率p(t)が小さいほど、$\frac{1}{p(t)}$ が大きくなる。
確率p(t)が大きいほど、$\frac{1}{p(t)}$が小さくなる。
これは情報量の意味と等しいため、より定量的に扱いやすい「情報量」を採用するべく、 logを用いている。

\begin{align}
log\frac{1}{p(t)}は”情報量”を表す
\end{align}

具体例

  • 文章1:"犬","は","可愛い"
  • 文章2:"猫", "は","小さい"
  • 文章3:"猫", "は", "可愛い"

【TFを計算する】

【IDFを計算する】

【TF-IDFを計算する】

「は」は特徴的なワードではないため、TF-IDFの値が他のワードに比べて低くなっていることが分かる。(文章1では、「犬」という特徴的なワードが値が高くなっていることが分かる。)