論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
TF-IDF
Term Frequency-Inverse Document Frequency
NLP

🔖 キーワード索引

TF-IDF」を取り巻く中核キーワード群です。 検索やインデックス作成で参照する際の手がかりにしてください。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になります。

TF-IDF単語重要度BoW文書ベクトルIDFコサイン類似度検索テキストマイニング

💡 30秒で分かる結論 — TF-IDF

最も忙しい読者のために、 まず結論だけまとめます。 詳細は以下のセクションへ:

📍 文脈 — どこで出会うか

「ニュース記事を分類したい」 「論文の特徴的キーワードを取り出したい」 — テキストを数値ベクトルに変える最も古典的かつ強力な方法が TF-IDF。 scikit-learn の TfidfVectorizer 一発で動きます。

このページの読み方:まず 30秒結論直感 を読み、 必要に応じて 数式計算例落とし穴 に進んでください。

🎨 直感で掴む

10 件のレシピがあり、 そのうち 1 件のレシピに「ターメリック」が 5 回出てくるとします。

一方「塩」は全 10 件に出てくるので IDF ≈ log(10/10) = 0。 TF×IDF も 0 → 全体共通の単語は自動的に重み 0 に。

📐 定義・数式

【TF (Term Frequency)】
$$\mathrm{TF}(t, d) = \frac{\text{単語 } t \text{ の文書 } d \text{ 内の出現回数}}{\text{文書 } d \text{ の総単語数}}$$
【IDF (Inverse Document Frequency)】
$$\mathrm{IDF}(t) = \log\frac{N}{|\{d : t \in d\}|}$$
$N$=総文書数、 分母=単語 $t$ を含む文書数
【TF-IDF】
$$\mathrm{TF\text{-}IDF}(t, d) = \mathrm{TF}(t, d) \times \mathrm{IDF}(t)$$

🔬 記号・要素の読み解き

$t$(term)
単語(あるいは n-gram)。
$d$(document)
1 つの文書(記事、 ツイート、 商品レビュー等)。
$N$
コーパス全体の文書数。
TF
「この文書で何回出たか」 — 多いほど局所的に重要。
IDF
「他の文書でも出るか?」 — 全文書に出る単語ほど 0 に近づく。
log の理由
レア度の効果を緩める。 「100 倍レア」が「指標 100 倍」では極端すぎるため。

🧮 実値で計算してみる

3 文書のミニコーパス:

「猫」の TF-IDF を計算:

「は」は全 3 文書に出るので IDF = log(3/3) = 0、 TF-IDF も 0。 「魚」は d1 にしか出ないので IDF = log(3/1) ≈ 1.10 と大きく、 d1 で重要な単語と判定されます。

🐍 Python での扱い

最小再現コード。 SSDSE-B のような実データを前提に、 4〜8 行で動く例です:

from sklearn.feature_extraction.text import TfidfVectorizer
docs = ['猫 は 魚 が 好き', '犬 は 肉 が 好き', '猫 と 犬 は 動物']
vec = TfidfVectorizer(token_pattern=r'\S+')
X = vec.fit_transform(docs)
print(vec.get_feature_names_out())
print(X.toarray().round(3))

補足:ライブラリのバージョンや前処理状態によって出力は変わります。 自分の環境で動かすときは pip list でバージョンを確認し、 入力 CSV のパス・列名を実態に合わせてください。

⚠️ よくある落とし穴

TF-IDF を実務で扱うとき、 多くの分析者が同じところでつまずきます。 代表的な失敗パターンを先回りで押さえておくと、 後工程のトラブルを大幅に減らせます。

❌ ストップワード処理
「は」「が」「the」のような機能語は IDF で弱まりますが、 計算前に除いた方がノイズが減ります。
❌ 対数の底
scikit-learn は log_e、 教科書は log_2log_10 が多い。 ライブラリ間で値が違うのは底の違い。
❌ 正規化
scikit-learn はデフォルトで L2 正規化。 「TF を文書長で割った」だけの素朴版とは値が違う。
❌ 文脈を捉えられない
TF-IDF は 順序を無視 (Bag-of-Words)。 「猫が犬を追う」と「犬が猫を追う」が同じベクトルに。
❌ 低頻度語の過剰重要視
1 回しか出ない誤字も IDF が高くなる。 min_df で足切りを。

※ 上記は文献調査・現場経験で報告される頻度の高い注意点。 ドメインや手法のバージョンによって追加の落とし穴がある場合があります。

🌐 関連手法・派生

❓ よくある質問

Q1. 「TF-IDF」を学ぶ前提知識は?
分野(NLP)の基本概念を一通り押さえておくと理解が早いです。 不明な用語が出てきたら、 各リンクから前提の用語ページを参照してください。 数式が出てくる場合は中学〜高校レベルの代数と、 必要なら微分・確率の基礎が役立ちます。
Q2. 数式が分からなくても使える?
多くの場合「直感」と「Python での扱い」を理解すれば実務で使えます。 ただし 落とし穴 セクションの内容は数式の意味と紐づくため、 余裕があれば数式も眺めてみてください。
Q3. 関連する手法・概念は?
関連用語 セクションを参照してください。 並列概念(兄弟)、 前提(必要知識)、 発展(次に学ぶべき)の 3 種類で整理してあります。
Q4. レポート・論文での書き方は?
数値だけでなく、 (1) 使ったデータの出典、 (2) 適用条件の確認結果、 (3) 不確実性(CI・SE)、 (4) 限界、 を含めるのが標準です。 実務チェックリスト も参考に。
Q5. 業務以外の身近な例は?
本ページの 直感で掴む セクションに具体例があります。 自分の関心領域(趣味・専門)でも例を考えてみると、 理解が深まります。

📜 ひとことヒストリー

TF-IDF は「NLP」分野の中で発展してきた概念・手法です。 学術的には継続的な研究で精緻化され、 実務的にはツール・ライブラリの普及で誰でも使えるようになってきました。 用語の使い方・意味は時代と分野で少しずつ変わるため、 文脈に応じた解釈が大切です。 入門書だけでなく、 標準的な教科書(例:データサイエンス・統計学の定本)や信頼できるオンライン教材も併用すると、 ぶれない理解に近づけます。

✅ 実務チェックリスト — TF-IDF

📚 関連グループ教材

「TF-IDF」は単独で完結する概念ではなく、 より大きな分野の一部です。 上位カテゴリの教材を読むことで、 この用語の 位置づけ が立体的に見えてきます:

💡 学習のコツ:用語ページは「点」、 グループ教材は「線」、 概念マップは「面」。 行き来することで知識が定着します。

🎯 まとめ — このページで押さえること

「TF-IDF」 はこのページで詳しく扱った概念です。 持ち帰ってほしい 3 つの要点

  1. TF-IDF=「ある文書で頻出するが、 他の文書ではあまり出ない単語」を重要と判定するスコア。
  2. TF(Term Frequency)=その文書での出現頻度、 IDF(Inverse Document Frequency)=レア度。 掛け算で重要度に。
  3. the」「です」のような頻出語は IDF が小さくなり、 自動的に重要度ダウン。

さらに学ぶには、 関連用語関連グループ教材 を参照してください。 各用語ページを縦断的に読むことで、 体系的な理解が育ちます。