【0から学ぶAI】第245回:TF-IDFの概念と計算方法

目次

前回のおさらいと今回のテーマ

こんにちは!前回は、Bag-of-Words(BoW)モデルについて学びました。BoWモデルはテキストを単語の出現頻度でベクトル化するシンプルな手法で、多くのNLPタスクで使用されていますが、単語の順序を無視し、重要度を考慮しないという限界がありました。

今回は、そのBoWモデルの限界を補う手法であるTF-IDF(Term Frequency-Inverse Document Frequency)について解説します。TF-IDFは、単語の出現頻度と逆文書頻度を組み合わせて重みを付けることで、テキスト内の単語の重要度を評価する手法です。この記事では、TF-IDFの基本概念と計算方法、実際の応用例について詳しく説明します。

TF-IDFとは?

1. TF-IDFの基本概念

TF-IDFは、単語の出現頻度と逆文書頻度を組み合わせて計算されるスコアで、テキスト中の各単語の重要度を評価するために使用されます。この手法は、特定の単語がその文書に対してどの程度重要かを表す指標です。TF-IDFスコアが高いほど、その単語は文書の特徴をよく表しているとみなされます。

TF-IDFは以下の2つの要素から構成されます。

  • TF(Term Frequency):単語の文書内での出現頻度を表します。
  • IDF(Inverse Document Frequency):単語が全体の文書においてどれだけ希少かを評価します。

TFとIDFを掛け合わせることで、頻繁に登場する一般的な単語(例えば、「の」「は」など)には低い重みが付き、特定の文書に特有の単語には高い重みが付きます。

2. BoWモデルとの違い

BoWモデルでは単語の出現頻度のみが考慮されるため、一般的な単語も重要な単語と同じ重みを持つことがあります。一方、TF-IDFは単語の頻度だけでなく、その単語が他の文書にも広く出現するかどうかを評価します。これにより、一般的な単語の影響を軽減し、文書の特徴をより正確に捉えることができます。

TF-IDFの計算方法

1. TF(Term Frequency)の計算

TFは、ある単語が文書内にどれだけ頻繁に出現するかを表す指標です。具体的には、次の式で計算されます。

[
\text{TF}(t, d) = \frac{f_{t,d}}{N_d}
]

ここで、( f_{t,d} ) は単語 ( t ) の文書 ( d ) 内での出現回数、( N_d ) は文書 ( d ) 内の総単語数です。この計算によって、文書内で多く出現する単語に高いスコアが与えられます。

2. IDF(Inverse Document Frequency)の計算

IDFは、単語が全体の文書にどれだけ広く出現するかを逆数で評価します。具体的には、次の式で計算されます。

[
\text{IDF}(t) = \log \left( \frac{N}{n_t} \right)
]

ここで、( N ) は文書の総数、( n_t ) は単語 ( t ) が出現する文書の数です。この計算によって、ほとんどの文書に出現する一般的な単語に低いスコアが付き、特定の文書にのみ出現する希少な単語に高いスコアが与えられます。

3. TF-IDFスコアの計算

最終的に、TF-IDFスコアは、TFとIDFを掛け合わせて計算します。

[
\text{TF-IDF}(t, d) = \text{TF}(t, d) \times \text{IDF}(t)
]

これにより、各単語の文書内での重要度が評価されます。TFが高い単語でも、IDFが低い(つまり多くの文書で出現する)場合はTF-IDFスコアが低くなり、逆にTFが低くてもIDFが高い(つまり特定の文書にしか出現しない)場合はスコアが高くなります。

具体例で理解するTF-IDF

1. TFの計算例

次の2つの文書を考えます。

  • 文書1: “AI is transforming the world of technology.”
  • 文書2: “AI and machine learning are driving the future of AI.”

語彙を [“AI”, “is”, “transforming”, “the”, “world”, “of”, “technology”, “and”, “machine”, “learning”, “are”, “driving”, “future”] とすると、それぞれの単語のTFを計算します。

例えば、文書1における “AI” のTFは次のように計算されます。

[
\text{TF}(\text{“AI”}, \text{文書1}) = \frac{1}{7} = 0.14
]

(文書1には合計7つの単語があり、”AI” は1回出現するため)

2. IDFの計算例

次に、IDFを計算します。ここでは、文書が2つしかないため、単語 “AI” がどちらの文書にも出現することを考慮して計算します。

[
\text{IDF}(\text{“AI”}) = \log \left( \frac{2}{2} \right) = \log 1 = 0
]

“AI” は両方の文書に出現するため、IDFは0となり、TF-IDFスコアも0になります。

一方、”transforming” は文書1にしか出現しないとすると、

[
\text{IDF}(\text{“transforming”}) = \log \left( \frac{2}{1} \right) = \log 2 \approx 0.69
]

このように、一般的な単語(”AI”)よりも希少な単語(”transforming”)に高いIDFが付きます。

3. TF-IDFスコアの計算

最終的に、文書1の “transforming” に対するTF-IDFスコアは次のようになります。

[
\text{TF-IDF}(\text{“transforming”}, \text{文書1}) = 0.14 \times 0.69 \approx 0.097
]

この計算により、各単語が文書に対してどれだけ重要かを評価することができます。

TF-IDFの応用

1. テキスト分類

TF-IDFは、テキスト分類タスクでよく利用されます。各文書のTF-IDFベクトルを特徴量として機械学習モデルに入力し、ニュース記事のカテゴリ分けやスパムメールのフィルタリング、感情分析などを行います。

2. 検索エンジン

TF-IDFは、検索エンジンで文書の関連性を評価するためにも使用されます。クエリと文書のTF-IDFベクトルの類似度を計算し、クエリに最も関連する文書を検索結果として返します。

3. キーワード抽出

文書中の重要なキーワードを自動的に抽出するためにもTF-IDFが使われます。高いTF-IDFスコアを持つ単語を抽出することで、文書の主題を簡単に把握できます。

TF-IDFの限界と改善方法

1. 文脈情報を考慮しない

TF-IDFは、単語の出現頻度に基づいて計算されるため、単語の文脈や意味的な関係を考慮しません。そのため、文脈を捉える必要があるタスクには不向きです。この問題を解決するためには、Word EmbeddingsBERTといった文脈を考慮する手法を用いることが有効です。

2. スパースベ

クトルの問題

TF-IDFベクトルは、語彙のサイズが大きくなると多くの要素がゼロになるスパースベクトルになります。これにより、計算コストが高くなり、モデルの学習効率が低下する可能性があります。次元削減技術(例えば、主成分分析(PCA))を使用してベクトルの次元を減らすことで、この問題に対処できます。

まとめ

今回は、TF-IDFの基本概念と計算方法、具体例を用いた理解、そして応用例について解説しました。TF-IDFは、テキスト中の単語の重要度を評価するためのシンプルで効果的な手法であり、テキスト分類や検索エンジン、キーワード抽出など、幅広い応用が可能です。しかし、文脈情報を考慮しないという限界もあり、他の手法との併用が求められる場合もあります。

次回予告

次回は、単語埋め込み(Word Embedding)について解説します。単語をベクトルで表現する方法を紹介し、文脈を捉えることができる手法について学びましょう。


注釈

  1. スパースベクトル:ほとんどの要素がゼロで占められているベクトル。計算が非効率になることがある。
  2. 次元削減:高次元データの次元を減らして計算効率を高める手法。PCAやt-SNEなどが用いられる。
  3. BERT:Bidirectional Encoder Representations from Transformersの略。双方向から文脈を理解する言語モデル。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社PROMPTは生成AIに関する様々な情報を発信しています。
記事にしてほしいテーマや調べてほしいテーマがあればお問合せフォームからご連絡ください。
---
PROMPT Inc. provides a variety of information related to generative AI.
If there is a topic you would like us to write an article about or research, please contact us using the inquiry form.

コメント

コメントする

目次