TF-IDF (Term Frequency-Inverse Document Frequency) について
TF-IDF(Term Frequency-Inverse Document Frequency)は、情報検索分野で、
文書集合(
コーパス)における単語の重要度を測るための
統計量です。これは、ある単語が特定の
文書内でどれだけ頻繁に出現するか(Term Frequency, TF)と、その単語が
コーパス全体でどれだけ稀であるか(Inverse Document Frequency, IDF)を掛け合わせた値で、情報検索、テキストマイニング、ユーザーモデリングなどで重み付け係数として広く用いられます。
TF-IDFの基本的な考え方
TF-IDFは、単語の出現頻度が高いほどその
文書にとって重要であると同時に、
コーパス全体で出現頻度の低い単語ほど、その
文書を特徴づける重要な単語であると捉えます。一般的に出現頻度の高い単語(例:助詞や接続詞)は、多くの
文書で頻繁に現れるため、
文書の区別に役立ちません。TF-IDFはこの点を補正し、特定の
文書を特徴づける単語をより重視する仕組みです。
検索エンジンでは、ユーザーの検索クエリに適合する
文書をスコア化し、順位付けする際にTF-IDFの考え方が活用されています。また、自動要約や
文書分類など、テキストデータを扱う様々な分野で、ストップワードフィルタリングと組み合わせて用いられています。
最も単純なランキング関数の一つに、クエリに含まれる各単語のTF-IDF値の合計を用いる方法があります。より洗練されたランキング関数も、多くはこのシンプルなモデルを基盤としています。
TF(Term Frequency:単語頻度)
TFは、
文書内における単語の出現頻度を表します。
文書dにおける単語tのTF値は、次のように計算できます。
tf(t, d) = ft,d / (Σt'∈d ft',d)
ここで、ft,dは
文書dにおける単語tの出現回数(raw count)です。分母は
文書dに含まれるすべての単語の出現回数の合計です。TFの定義にはいくつかのバリエーションがあり、以下のようなものが考えられます。
ブール値: 単語tが文書dに含まれていれば1、そうでなければ0。
出現回数: そのままの出現回数(ft,d)を用いる。
文書長正規化: 出現回数を文書dの単語数で割る(上記式)。
対数スケール: 対数を用いた正規化(log(1+ft,d))。
最大頻度による正規化: 出現回数を文書内で最も出現頻度の高い単語の出現回数で割る。
IDF(Inverse Document Frequency:逆文書頻度)
IDFは、単語がコーパス全体でどれだけ稀であるかを表す指標です。IDF値が高いほど、その単語は希少で文書を特徴づける情報量が多いと判断できます。IDFは、単語が出現する文書数の逆数を対数スケールにしたもので、次のように計算できます。
idf(t, D) = log(N / |{d ∈ D : t ∈ d}|)
ここで、Nはコーパス内の総文書数、|{d ∈ D : t ∈ d}|は単語tを含む文書の数です。もし単語tがコーパスに存在しない場合、分母が0になるのを避けるために、1を加えるなどの調整が行われます。
TF-IDFの計算
TF-IDFは、TFとIDFを掛け合わせて計算されます。
tfidf(t, d, D) = tf(t, d) idf(t, D)
TF-IDF値は、
文書内で頻繁に出現し、かつ
コーパス全体では出現頻度が低い単語ほど高くなります。これにより、
文書を特徴づける単語を抽出することができます。
IDFの妥当性
IDFは1972年にカレン・スパルク・ジョーンズによって「単語の特異性」として導入されました。IDFは経験的に有効であることが示されていますが、その理論的な根拠については長年議論の対象となってきました。現在では、IDFを
確率論的に解釈する試みも行われています。
TFとIDFは
情報理論の観点からも定式化できます。
文書と単語の同時
確率分布の仮定の下で、TF-IDFの合計は、
文書と単語の間の相互
情報量を表すという解釈も可能です。この解釈によれば、TF-IDF値は、単語と
文書のペアが持つ「情報の
ビット」と捉えることができます。
TF-IDFの例
以下のような2つの
文書で構成される
コーパスを例に、TF-IDFの計算を説明します。
文書1: "this is a document"
文書2: "this is another document example example example"
"this"のTFは、
文書1では1/4、
文書2では1/7です。IDFはlog(2/2) = 0です。結果として、TF-IDFは両方の
文書で0となります。一方、"example"のTFは、
文書1では0、
文書2では3/7です。IDFはlog(2/1) ≈ 0.301です。結果として、
文書2の"example"のTF-IDF値は0.129となり、
文書の特徴を示す単語として重要であることがわかります。
TF-IDFの応用
TF-IDFの考え方は、単語以外にも応用可能です。引用分析では、珍しい引用を共有する
文書を重視する際に用いられています。また、動画や画像内の物体認識、全文検索など、様々な分野で活用されています。
TF-IDFの派生
TF-IDFには多くの派生形が存在します。TF-PDF (term frequency
proportional document frequency) や、TF-IDuFなどがその例です。TF-PDFは異なるドメインでの単語の出現頻度の差を測るために使われ、TF-IDuFはユーザーの個人的な文書コレクションに基づいてIDFを計算する際に利用されます。
まとめ
TF-IDFは、テキストデータ分析における基礎的な手法であり、そのシンプルさにもかかわらず、非常に有効な手法です。検索エンジン、文書分類、情報推薦など、多くの分野で応用されており、その重要性は今後も変わらないでしょう。
参考文献
Salton, G; McGill, M. J. (1986). Introduction to modern information retrieval.
Salton, G.; Fox, E. A.; Wu, H. (1983). “Extended Boolean information retrieval”.
Salton, G.; Buckley, C. (1988). “Term-weighting approaches in automatic text retrieval”.
Wu, H. C.; Luk, R.W.P.; Wong, K.F.; Kwok, K.L. (2008). “Interpreting TF-IDF term weights as making relevance decisions”.
外部リンクと推薦図書
Gensim(ベクトル空間モデルとTF-IDF重み付けを含むPythonライブラリ)
Anatomy of a search engine
tf–idf and related definitions (Luceneで使われている)
TfidfTransformer(scikit-learnのTF-IDF実装)
Text to Matrix Generator (TMG) (MATLABツールボックス)
* Term-frequency explained (term-frequencyの説明)