Tf-idf
テンプレート:小文字 情報検索の分野において、tf–idf (または、 TF*IDF、TFIDF、TF–IDF、Tf–idf)は、term frequency–inverse document frequencyの略であり、コーパスや収集された文書群において、ある単語がいかに重要なのかを反映させることを意図した統計量(数値)である[1]。また、tf-idfは情報検索や、テキストマイニング、テンプレート:仮リンクにおけるテンプレート:仮リンクにもよく用いられる。ある単語のtf-idfの値は文書内におけるその単語の出現回数に比例して増加し、また、その単語を含むコーパス内の文書数によってその増加が相殺される。この性質は、一般にいくつかの単語はより出現しやすいという事実をうまく調整することに役立っている。今日、tf-idfはもっとも有名な語の重みづけ(term-weighting)手法である。2015年に行われた研究では、電子図書館におけるテキストベースのレコメンダシステムのうち83%がtf-idfを利用していたことがわかった[2]。
tf-idfの重み付け手法を変形したものは、ユーザーのクエリ(検索ワード)から文書の適合性を得点化し、順位づけする際の中心的なツールとして、よく検索エンジンで用いられている。tf-idfは、自動要約や文書分類といった様々な分野において、テンプレート:仮リンクによるフィルタリングを行うことでうまく動作できる。
最もシンプルなテンプレート:仮リンクの一つは、クエリに含まれる語ごとのtf-idfの和を計算することで実装される。たくさんのより洗練された順位付け関数はこのシンプルなモデルの変形となっている。
動機
Term frequency (単語頻度)
英語文書の集合を扱っていると仮定し、それらを"the brown cow"というクエリにより関連する順に並べたいとする。問題に取り掛かる上で、シンプルな方法は、"the"、"brown"、"cow"の3つの単語のすべてを含まない文書を除くことであるが、これではたくさん文書がまだ残ってしまう。さらにそれらを区別するために、もしかすると各文書で各単語が何度出現しているかを数えるかもしれない。ある文書内にある単語が何回出現したかという数をその単語のterm frequencyと呼ぶ。しかし、文書の長さにばらつきがある場合、調整が必要となることが多い(詳細は定義を参照)。最初の語の重み付け手法はテンプレート:仮リンク(1957)により、その内容は以下のようにまとめられうる[3]。
Inverse document frequency (逆文書頻度)
"the"という語が非常に普遍であるために、より意味のある単語である"brown"や"cow"に十分な重みを与えず、term frequencyは、"the"という語をより高頻度に含む文書を誤って強調してしまう傾向がある。"the"という語は、普遍的ではない"brown"や"cow"という語とは異なり、文書や単語がクエリに関連している・関連していないと区別するためのキーワードとしてよいものではない。それゆえに、文書集合において非常に出現頻度の高い語の重みを減らし、珍しい語の重みを増加させるため、inverse document frequencyが用いられている。
テンプレート:仮リンク(1972) はInverse Document Frequency (idf) と呼ばれる単語の特異性の統計的解釈を考案し、その考えは単語の重み付けの基礎概念となっている[4]。
定義
- tf-idfは2つの統計量、term frequency (tf)と、inverse document frequency (idf) の積である。双方の統計量には、厳密な値を決定するために様々な手法が存在している。
- 式は、文書やWebページにおけるキーワードやフレーズの重要性を定義することを目的とする。
| 重み付け手法 | tf 重み |
|---|---|
| binary
(2値) |
|
| raw count
(出現頻度をそのまま使用) |
|
| term frequency
(標準的な単語頻度) |
|
| log normalization
(対数による正規化) |
|
| double normalization 0.5
(二重0.5正規化) |
|
| double normalization K
(二重K正規化) |
Term frequency (単語頻度)
term frequency (tf) は文書テンプレート:Mathの中での、語テンプレート:Mathの相対度数である。,
テンプレート:Mathは文書に含まれるその語の出現頻度(raw count)である。すなわち、語テンプレート:Mvarが文書テンプレート:Mvarに何回出現したかを意味する。単純には、分母には文書テンプレート:Mathに含まれる単語数を用いる(この場合、同じ単語が複数出現しても区別して数える)。テンプレート:Mathの定義は他にも様々なものがある[5]テンプレート:Rp。
- ブール代数に基づく「頻度」(binary): テンプレート:Mvarがテンプレート:Mvarに存在すれば、 テンプレート:Math、 それ以外の場合はテンプレート:Math;
- 出現頻度をそのまま用いる(raw count): テンプレート:Math;
- 文書の長さを調整するもの(term frequency, 上式と同じ): テンプレート:Math;
- 対数スケールの頻度(log normalization): テンプレート:Math[6];
- 長い文書に偏ることを防ぐために、拡張された頻度。例えば、ある語の出現回数が、文書内で最も出現頻度が高い語の出現回数で除算されるようにされているものなど。
- (double normalization 0.5)
Inverse document frequency (逆文書頻度)
| 重み付け手法 | idf 重み () |
|---|---|
| idfを使用しない | 1 |
| inverse document frequency
(標準的なidf) |
|
| inverse document frequency smooth
(+1をしてスムージングを行うidf) |
|
| inverse document frequency max
(最大値を取るidf) |
|
| probabilistic inverse document frequency
(確率論的idf) |
inverse document frequency (idf) はその単語がどのくらい情報を提供するのかという指標である。すなわち、ある単語が、すべての文書の中で普遍的なのか珍しいのかということである。idfは、その単語の文書頻度の逆数を対数スケールにしたものである。(文書の総数をその単語を含む文書の数で除算し、その商の対数を取ったものとして得られる。)
この時、
- : コーパスに含まれる文書の総数
- : 単語が出現する文書の数 (すなわち、 でなくてはならない)。 もしその語がコーパスに存在しない場合、これはゼロ除算を招く。それゆえに、分母をと調整するのが一般的である。

Term frequency–inverse document frequency (tf-idf)
ここで、tf-idfは次のように計算される。
tf-idfの重みが高くなるのは、(与えられた文書内で)その単語の単語頻度(term frequency, tf)が高く、かつ、文書集合全体においてその単語の文書頻度(document frequency, df)が低い場合である。それゆえに、重みは普遍的な語をフィルタする傾向がある。idfの対数内の分数は常に1以上となるため、idf(とtf-idf)の値は常に0以上になる。単語がより多くの文書に現れる場合、対数の中の分数は1に近づき、それゆえにidfとtf-idfは0に近づく。
| 重み付け手法 | 文書における利用 | クエリにおける利用 |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 |
idfの正当化
idfは1972年のテンプレート:仮リンクの論文によって「単語の特異性」として導入された。idfはヒューリスティクスでうまくいくとされてきたにもかかわらず、その論理的な基礎は少なくとも30年以上悩みの種となっており、多くの研究者が情報理論的な正当化を試み続けている[7]。
Spärck Jonesは自身の説明の中で、ジップの法則を別にして、十分な理論を提供していない[7]。与えられた文書テンプレート:Mvarが語テンプレート:Mvarを含む確率を、相対文書頻度として推定することによって、idfを確率論的基盤に置こうとする試みが行われてきている[8]。
idfを次のように定義すると、
つまり、逆文書頻度は対数を取った「逆」相対文書頻度となる。
また、この確率論的解釈は自己情報量と同じ形を取る。しかし、そのような情報理論的概念を情報検索の問題に応用すると、必要な確率分布に適切な確率空間を定義する際、文書だけでなく、クエリや単語を考慮する必要があるため、問題が生ずる[7]。
情報理論との関係
term frequency (tf) とinverse document frequency (idf) の両者は情報理論の観点から定式化されうる。この考えは、なぜそれらの積が文書の結合情報量の観点から意味があるのかを理解するのに役立つ。分布に関する特徴的な仮定を以下の示す。
この仮定とその意味は、Aizawaによれば、「ヒューリスティックなtf-idfの使われ方を表している。」という[9]。
特定の語を含む事象を条件として、コーパスの文書を「ランダムで選択」するテンプレート:仮リンクは以下のように示される(全文書は等しい確率で選択されると仮定する)。
表記に関して、とは「ランダムな変数」であり、文書や単語がそれぞれ選ばれることに相当する。ここで、相互情報量は以下のように表される。
最後のステップはを展開することであり、文書の(ランダムな)選択に関して、条件と無関係に単語を選択する確率であるから、
この式は、すべての有効な単語と文書のtf-idfの和は、文書と単語の同時確率分布の特異性のすべてを考慮した、文書と単語の間の相互情報量に立ち戻ることを表している[9]。それゆえに、それぞれのtf-idfは、ある単語と文書のペアに付け足された、「情報のかけら(bit of information)」を意味している。
tf–idfの例
2つの文書からのみ構成されるコーパスの単語カウント表(右に示す)を扱うと仮定する。
| 語 | 語のカウント |
|---|---|
| this | 1 |
| is | 1 |
| another | 2 |
| example | 3 |
| 語 | 語のカウント |
|---|---|
| this | 1 |
| is | 1 |
| a | 2 |
| sample | 1 |
語"this"のtf-idfは以下のように計算される。
出現頻度をそのままtfとして用いる場合、tfはそれぞれの文書の"this"の頻度と同じになる。標準的な文書長を調整するtfでは、各文書において単語"this"は1度現れるが、文書2はより多くの単語を含むため、相対頻度は小さくなる。
idfはコーパス毎の定数であり、"this"という単語を含む文書の比率から成り立っている。この事例では、2つの文書からなるコーパスを扱い、それらはすべて"this"という語を含んでいる。
つまり、"this"という語のtf-idfはゼロである。これはこの単語がすべての文書に現れることから、その単語が有益でないでないこと示唆している。
"example"という語はより興味深く――3度現れるが、文書2にしか現れない。
最終的には,
(対数は常用対数を用いている。)
単語以外への応用
tf-idfの背後にある考えは、単語以外の存在にも応用される。1998年にはidfのコンセプトが引用分析に応用された[10]。筆者は「もし非常に珍しい引用が2つの文書によって共有されたならば、その引用された文書はたくさんの文書によって引用されている文書よりもより高く重み付けされるべきである。」と主張した。加えて、動画や内における物体マッチングを行うための「テンプレート:仮リンク」や[11]全文検索にも[12]tf-idfは応用されている。しかし、tf-idfのコンセプトは、すべての手法において、単純な(idf成分を除いた)tfのみの手法よりも効果的であるという証明はされていない。tf-idfを引用分析に応用する際には、研究者はidf重みをもたない単純な引用回数重みを超える精度向上を確認することができなかった[13]。
tf-idfの派生
多数の単語重み付け手法はtf-idfからの派生である。そのうちの一つはTF-PDF (term frequency * proportional document frequency) である[14]。TF-PDFは2001年にメディアにおける新たなトピックを特定するという文脈で導入された。PDF成分は異なるドメインの中でどのくらいの頻度である単語が出現したかの差を測定する。他の派生にはTF-IDuFがある。TF-IDuFでは[15]、idfは文書コーパスに基づき計算されず、検索または推薦される。例えば、idfはユーザの個人的な文書コレクションに基づいて計算される。その著者らはTF-IDuFはtf-idfと等しく効果的であるが、例えば、テンプレート:仮リンクシステムにおいて、外部の文書コーパスにアクセスできない時などに、応用可能であると報告している。
関連項目
- 自然言語処理
- 単語の埋め込み
- カルバック・ライブラー情報量
- テンプレート:仮リンク
- 潜在意味解析
- 相互情報量
- 名詞句
- Okapi BM25
- ページランク
- ベクトル空間モデル
- テンプレート:仮リンク
- テンプレート:仮リンク
参考文献
外部リンクと推薦図書
- 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ツールボックスはテキストマイニング(TM)の様々なタスク向けに利用できる。特に i) 索引作成 ii) 情報検索 iii) 次元削減 iv) クラスタリング v) 分類 タスクである。索引作成の段階はユーザに任せられており、tf-idfを含めたローカル、あるいはグローバルの重み付け手法を適用する必要がある。
- Term-frequency explained term-frequencyの説明
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite web
- ↑ 7.0 7.1 7.2 テンプレート:Cite journal
- ↑ See also Probability estimates in practice in Introduction to Information Retrieval.
- ↑ 9.0 9.1 テンプレート:Cite journal
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite journal