「TF-IDF」を取り巻く中核キーワード群です。 検索やインデックス作成で参照する際の手がかりにしてください。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になります。
最も忙しい読者のために、 まず結論だけまとめます。 詳細は以下のセクションへ:
「ニュース記事を分類したい」 「論文の特徴的キーワードを取り出したい」 — テキストを数値ベクトルに変える最も古典的かつ強力な方法が TF-IDF。 scikit-learn の TfidfVectorizer 一発で動きます。
このページの読み方:まず 30秒結論 と 直感 を読み、 必要に応じて 数式 や 計算例、 落とし穴 に進んでください。
10 件のレシピがあり、 そのうち 1 件のレシピに「ターメリック」が 5 回出てくるとします。
一方「塩」は全 10 件に出てくるので IDF ≈ log(10/10) = 0。 TF×IDF も 0 → 全体共通の単語は自動的に重み 0 に。
3 文書のミニコーパス:
「猫」の TF-IDF を計算:
「は」は全 3 文書に出るので IDF = log(3/3) = 0、 TF-IDF も 0。 「魚」は d1 にしか出ないので IDF = log(3/1) ≈ 1.10 と大きく、 d1 で重要な単語と判定されます。
最小再現コード。 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 を実務で扱うとき、 多くの分析者が同じところでつまずきます。 代表的な失敗パターンを先回りで押さえておくと、 後工程のトラブルを大幅に減らせます。
log_e、 教科書は log_2 や log_10 が多い。 ライブラリ間で値が違うのは底の違い。min_df で足切りを。※ 上記は文献調査・現場経験で報告される頻度の高い注意点。 ドメインや手法のバージョンによって追加の落とし穴がある場合があります。
log(1 + tf) を適用し、 頻出語の影響を緩和。TF-IDF は「NLP」分野の中で発展してきた概念・手法です。 学術的には継続的な研究で精緻化され、 実務的にはツール・ライブラリの普及で誰でも使えるようになってきました。 用語の使い方・意味は時代と分野で少しずつ変わるため、 文脈に応じた解釈が大切です。 入門書だけでなく、 標準的な教科書(例:データサイエンス・統計学の定本)や信頼できるオンライン教材も併用すると、 ぶれない理解に近づけます。
「TF-IDF」は単独で完結する概念ではなく、 より大きな分野の一部です。 上位カテゴリの教材を読むことで、 この用語の 位置づけ が立体的に見えてきます: