本文へ移動

G検定(ジェネラリスト検定)

てぃーえふあいでぃーえふ

TF-IDF

TF-IDF

Term Frequency - Inverse Document Frequency

TF-IDFは、単語が文書内でどれだけ多く現れるかを表すtfと、その単語が現れる文書の少なさを表すidfを掛け合わせ、文書に特徴的な単語ほど大きな値を与える重み付けの方法です。

詳しい説明

TF-IDFは2つの項の積です

TF-IDFは、term frequency(tf)とinverse document frequency(idf)という2つの項の積として定義されます。tfは単語がある文書の中でどれだけ頻繁に現れるかを表し、idfはその単語がコレクション全体のうち何個の文書に現れるかをもとに、現れる文書が少ないほど大きくなる重みを表します。単語tの文書dにおけるTF-IDFの値は次の式で求めます。

tf-idf(t,d) = tf(t,d) × idf(t)

2つの項はそれぞれ別の観点から単語の価値を測っています。tfはその文書の中でよく使われているかどうか、idfはほかの文書と区別する手がかりになるかどうかです。両者を掛け合わせることで、ある文書の中で多く使われ、しかも限られた文書にしか現れない単語ほど高いスコアを持つ仕組みになっています。

tfは出現回数そのものではなく対数を使います

tfの考え方は、ある文書の中でより多く現れる単語は、その文書の内容を知る手がかりになりやすいというものです。ただし、生の出現回数をそのまま使うのではなく、通常は出現回数の常用対数(log10)を使います。その理由は、ある単語が文書中に100回現れたからといって、その単語が文書の意味にとって100倍重要になるわけではない、という直感にあります。

単語tの文書dでの生の出現回数をcount(t,d)とすると、tfは次のように定義されます。

tf(t,d) = 1 + log10(count(t,d)) (count(t,d) > 0 のとき)
tf(t,d) = 0 (それ以外のとき)

この対数による重み付けでは、出現0回の単語はtf=0、1回ではtf=1+log10(1)=1、10回ではtf=2、100回ではtf=3、1000回ではtf=4となります。出現回数が10倍になるごとにtfは1ずつしか増えないため、極端に多く現れる単語の影響が抑えられます。

idfは多くの文書に現れる単語の重みを下げます

idfの前提となるのがdocument frequency(df)です。単語tのdf(t)は、その単語が現れる文書の数を指します。少数の文書にしか現れない単語は、それらの文書をコレクションのほかの文書から見分けるのに役立ちます。反対に、コレクション全体にまんべんなく現れる単語は、文書を見分ける手がかりとしてはあまり役に立ちません。

この考え方を重みにしたものがidfで、次のように定義されます。

idf(t) = log10(N / df(t))

Nはコレクションに含まれる文書の総数、df(t)は単語tが現れる文書の数です。単語が現れる文書が少ないほどこの重みは大きくなり、すべての文書に現れる単語にはN/df(t)=1となるため、最小の重みである0が割り当てられます。

シェイクスピア劇37作品で見るidfの値

シェイクスピアの劇37作品をコーパスとした例では、次のようなidfの値が示されています。

  • Romeo: df=1、idf=1.57
  • salad: df=2、idf=1.27
  • Falstaff: df=4、idf=0.967
  • forest: df=12、idf=0.489
  • battle: df=21、idf=0.246
  • wit: df=34、idf=0.037
  • fool: df=36、idf=0.012
  • good: df=37、idf=0
  • sweet: df=37、idf=0

1作品にしか現れないRomeoは非常に情報量の多い単語として最も高いidfを持ち、数作品に現れるsaladやFalstaffがそれに続きます。foolのようにほとんどの作品に現れる単語のidfはごく小さく、goodやsweetのように37作品すべてに現れる単語はidfが0となり、作品を見分ける力をまったく持たないことになります。

2つの項を掛け合わせる意味

tfだけを使うと、どの文書にもよく現れる単語まで高く評価されてしまいます。idfだけを使うと、その文書の中で実際にどれだけ使われているかが反映されません。TF-IDFはtfとidfを掛け合わせることで、両方の条件を同時に満たす単語、つまりその文書の中で多く使われ、かつコレクション全体では限られた文書にしか現れない単語を高く評価します。すべての文書に現れる単語はidfが0になるため、文書内でどれほど多く現れてもTF-IDFの値は0になります。

試験で問われること

G検定

  • TF-IDFはどの2つの項の積として定義されるか。それぞれの項が単語のどのような性質を表すかをあわせて説明できるか。
  • tfで生の出現回数ではなく対数(1+log10(count(t,d)))を使うのはなぜか。出現回数が1回、10回、100回のときのtfの値とあわせて説明できるか。
  • idf(t)=log10(N/df(t))において、Nとdf(t)はそれぞれ何を表すか。単語が現れる文書の数が少ないほどidfが大きくなる理由を説明できるか。
  • コレクション内のすべての文書に現れる単語のidfはいくつになるか。そのときTF-IDFの値がどうなるかを説明できるか。
  • 文書内で多く使われ、かつ限られた文書にしか現れない単語のTF-IDFが高くなるのはなぜか。tfとidfの役割の違いから説明できるか。

最終更新日: 2026/09/23