Tommy's Blog

tf・idfをなんとなく理解する

こんにちは。今日はtf・idfについてです。

tfとは

tf・idfとは、文書内の単語に対して、その単語は文書の特徴を表しているかを測る指標のことです。
tfとは単語出現頻度です。文書をd、語をwとするとdの中にwが何回出ているかを意味します。本記事では、TF(d, w)とおきます。

dfとは

dfについて述べます。dfとは文書頻度で、文書の集合をD、語をwとすると、wが出現している文書の数となります。本記事では、DF(D, w)とおきます。

idfとは

idfはdfの逆数にlogを取ったもので、式で書くと次のとおりです。

log(|D| / DF(d, w))

|D| / DF(d, w)は、DF(d, w)が小さいほど大きな値をとります。英語の文書を考えると「the」、「You」といったような単語はどのような文書でも出てくるはずなので値は小さくなります。すなわち、特定の文書にしか出ないかどうかを表す指標といえます。

tf・idfとは

tf・idfとは、ある文書をdとしたときに、dの中にある語wが文書dの特徴を表しているかの指標となります。
式で書くと、

tf・idf(d, w) = TF(d, w) ・ DF(D, w)

となります。tf・idfが大きいほどwは特徴語であろうと推測されます。
tfは「文書内に語wが何回出るか」ですから、頻繁に出る語ほどその文書の主題を表していそうです。一方で、tfだけだと、「the」や「You」のような単語も特徴語と判断されてしまうので、idfをかけることによって「どの文書にも出てくるような語」を除くようにしています。

idfの定義再考

idfとは以下の式で表されました。

log(|D| / DF(d, w))

しかし、

|D| / DF(D, w)

だけでも「特定の文書にしか出ないかどうか」を表す指標といえそうです。ここでは、なぜlogをとるかについて考えます。
文書数|D|を大幅に増やした時のことを考えてみます。この時、「the」や「You」のような単語の場合はDF(D, w)の値も大きく増えるはずですから、結果として、|D| / DF(D, w)の値はそこまで変動しないでしょう。
一方で、「ある特定の文書にしか出てこなさそうな単語」の場合はどうでしょうか。|D|が増えたとしてもDF(D, w)はほとんど増えないと考えられます。よって|D| / DF(D, w)の値は大きく増えます。

ここで、特徴語かどうかの指標を
TF(d, w) ・ |D| / DF(D, w)
で表したとします。wは「ある特定の文書にしか出なさそうな単語」で、かつ今注目している文書にはあまり出てこない単語とします。このとき、wは明らかに特徴語にはならないと考えられます。しかし、|D|を増やしたとき、|D| / DF(D, w)が非常に大きくなるので、結果として特徴語であろうと判断されそうです。

しかし、logをとると文書数|D|を増やした時の|D| / DF(D, w)の変動は抑えられるので上記のようなことは起こりにくくなります。すなわち、logをとることによってTFとIDFの両方の影響をバランスよく含ませることができます。

以上がlogをとる理由です。