Tf-idf

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の説明)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。