TF-IDF

Term Frequency-Inverse Document Frequency の略。文書内での単語の重要度を数値化する手法。

TF-IDF (Term Frequency-Inverse Document Frequency) は、文書集合の中で特定の単語がどれだけ重要かを数値化する手法です。情報検索、テキストマイニング、自然言語処理の分野で 1970 年代から使われている古典的かつ実用的な指標であり、検索エンジンのランキングアルゴリズムの基礎としても知られています。

TF-IDF は TF (Term Frequency: 単語頻度) と IDF (Inverse Document Frequency: 逆文書頻度) の積で算出されます。TF は対象文書内での単語の出現回数を文書の総単語数で割った値で、その文書における単語の重要度を示します。IDF は全文書数をその単語を含む文書数で割った値の対数で、文書集合全体における単語の希少性を示します。「の」「は」「が」のような頻出語は IDF が低く、専門用語や固有名詞は IDF が高くなります。

実務で最初につまずきやすいのが IDF の実装差です。基本形は「全文書数をその単語を含む文書数で割った値の対数」ですが、その単語が 1 文書にも現れないときのゼロ除算を避けるために分子と分母に 1 を足す実装、対数の底に自然対数を使う実装と常用対数を使う実装が混在しており、同じ文書集合でもライブラリを変えると値が変わります。例えば 100 文書のうち 10 文書に出現する単語の IDF は、自然対数の基本形なら log(100 / 10) = 約 2.30 ですが、分子と分母に 1 を足したうえで全体に 1 を加える実装では約 3.22 になります。したがって TF-IDF 値は絶対値の大小を他システムと比べるのではなく、同一の計算式・同一の文書集合の中での順位として読むのが安全です。

もう一つの落とし穴は、IDF が文書集合そのものに依存する点です。IDF は対象の 1 文書だけでは決まらず、比較対象となる文書集合全体の統計から算出されます。そのため、分類器の学習時に使った IDF を保存せずに、推論時に手元の少数の文書から作り直すと、同じ単語に別の重みが付いて精度が落ちます。文書集合を入れ替えるときは、IDF を再計算するのか学習時の値を固定するのかを先に決めておくのが実務上の分岐点です。なお基本形では全文書に出現する単語の IDF は log(1) = 0 となるため、ストップワードを明示的に除外しなくてもスコアから自動的に消えます。

TF-IDF の実務での活用場面は多岐にわたります。検索エンジンではクエリと文書の関連度スコアリングに使われ、文書分類ではテキストを特徴ベクトルに変換する手法として利用されます。キーワード抽出では TF-IDF 値の高い単語を文書の代表的なキーワードとして選定し、文書要約では重要な文を特定する指標として活用されます。SEO 分析ツールの一部にも、競合ページと比べて語彙の偏りを確認する指標として TF-IDF が組み込まれています。ただし TF-IDF 値そのものが検索順位を決めるわけではなく、自分の文章の語彙構成を点検する道具として扱うのが実務的です。

TF-IDF にはいくつかの限界があります。単語の出現頻度のみに基づくため、単語の意味や文脈を考慮できません。「銀行」が金融機関と川岸のどちらを指すかは TF-IDF では判別できません。また、同義語 (「車」と「自動車」) を同一概念として扱えないため、検索の再現率が低下することがあります。これらの限界を補うために、Word2Vec のような単語の分散表現や、BERT のように文脈に応じて表現が変わるモデルが登場しましたが、TF-IDF はその計算の軽さと解釈のしやすさから、2026 年時点でも広く使われています。

類似の指標として BM25 があります。BM25 は TF-IDF を改良したもので、文書の長さによる正規化と TF の飽和関数を導入しています。Elasticsearch では既定のスコアリング関数として BM25 が採用されており、全文検索基盤で関連度順の並びを扱うときは TF-IDF そのものではなく BM25 系の式が動いていると考えたほうが実態に近いです。

文字数カウントの観点では、TF-IDF は単語の出現回数 (頻度) に基づくため、テキストの文字数や単語数が直接的に影響する指標です。文書の文字数が多いほど TF の分母が大きくなり、個々の単語の TF 値は相対的に小さくなります。そのため、文書の長さを正規化する処理が TF-IDF の精度向上に重要です。

この記事を共有