はじめに
G検定では、AIの基礎から応用まで幅広い知識が問われる。その中でも自然言語処理(NLP)の分野は頻出トピックの一つだ。
特に「文章に含まれる単語の重要度評価」は、トピック抽出や文書分類に欠かせない手法として試験でもよく登場する。
今回は、G検定の実際の過去問を題材に、単語の重要度を数値化する技術について整理していく。
TF-IDFとは何か?
TF-IDFは「Term Frequency – Inverse Document Frequency」の略称だ。文書中に頻繁に登場する単語(TF)と、他の文書にはあまり登場しない単語(IDF)を掛け合わせることで、その文書に特有の単語に高いスコアを与える仕組みとなっている。
数式で表すと以下のようになる:
TF-IDF(t, d, D) = TF(t, d) × IDF(t, D)
t: 単語d: 対象の文書D: 文書全体のコーパス(文書群)
この計算によって、共通語(例:「の」「です」など)は低いスコアとなり、専門的またはトピック固有の単語(例:「深層学習」「ニューラルネット」など)が高評価される。
問題の確認
トピック分析などで利用される、文書中に含まれる単語の重要度を評価する手法として、最も適切な選択肢を選べ。
選択肢
- TF-IDF
- SVD
- CBOW
- BOW
正解は「1. TF-IDF」
各選択肢の解説
単語の重要度を評価する、とはどういう意味か。それはつまり、「この単語がその文書にどれだけ特有であり、どれほど意味を持っているか」を数値として表現することである。
以下に各手法の概要と、正解・不正解の理由をまとめた。
| 選択肢 | 説明 | 評価 |
|---|---|---|
| TF-IDF | 文書内での単語の頻度(TF)と、全体の文書集合での希少性(IDF)を掛け合わせ、単語の重要度を評価する。トピック分析や情報検索でよく用いられる。 | ◎ 正解 |
| SVD | 特異値分解。行列を分解し、次元圧縮などに使われる。意味的な類似性抽出などでは用いられるが、単語の重要度を直接示すものではない。 | × |
| CBOW | Word2Vecの一種。前後の文脈から中央の単語を予測するモデル。単語をベクトルに変換するが、重要度を評価する目的では使用しない。 | × |
| BOW(Bag of Words) | 文書を単語の集合として捉える単純な表現手法。重要度の重み付けを行わないため、単語の出現頻度しか考慮しない。 | △ |
間違いやすい選択肢との比較
G検定では「なぜ他の選択肢が不適切か」を理解しておくことも重要だ。
| 手法 | 概要 | TF-IDFとの違い |
|---|---|---|
| SVD | 数値行列を3つの行列に分解することで、データの特徴を抽出する手法。 | 文書構造の圧縮や意味空間の構築には使われるが、単語の重要度評価が目的ではない。 |
| CBOW | Word2Vecのアルゴリズムの一つで、周囲の単語から中央の単語を予測するモデル。 | 単語同士の関係性は学習できるが、単語の文書内での重要性を数値化するものではない。 |
| BOW | 単語の出現回数のみを数えるベース的な表現方法。 | TF-IDFのように単語の希少性を考慮しないため、すべての単語が同等の重みを持つ点が弱点。 |
TF-IDFの活用場面
TF-IDFはさまざまな用途で活躍している。いくつかの具体例を見てみよう。
1. トピック抽出
企業のレビューや商品説明文から、特徴的なキーワードを抽出する際に使われる。
たとえば、レビュー文から「コスパ」「軽量」「高画質」などの特徴語を見つけ出せる。
2. 文書分類
TF-IDFを使ってベクトル化した文書を、SVMやランダムフォレストなどの機械学習モデルに入力し、カテゴリ分類を行う。
たとえば、ニュース記事を「スポーツ」「経済」「政治」などに分類するケースで活用される。
3. 検索システムのスコアリング
検索エンジンでは、ユーザーのクエリと各文書の類似度を測る際、TF-IDFベクトル間のコサイン類似度を使ってスコアを計算する。
その結果、より関連性の高い文書が上位に表示される。
Pythonでの実装例
TF-IDFはPythonでも簡単に扱える。代表的なライブラリは scikit-learn だ。
from sklearn.feature_extraction.text import TfidfVectorizer
documents = [
"AIは人間の言語を理解する",
"深層学習はAIの一分野である",
"自然言語処理はAIの応用分野の一つである"
]
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(documents)
# 単語ごとのTF-IDFスコアを出力
feature_names = vectorizer.get_feature_names_out()
for i, doc in enumerate(tfidf_matrix.toarray()):
print(f"文書{i+1}:")
for word, score in zip(feature_names, doc):
if score > 0:
print(f" {word}: {score:.3f}")
まとめ
G検定においては、「どの技術がどの目的に使われるか」を正しく理解しておくことが合格の鍵となる。
今回のような問題では、単語の重要度評価という文脈を読み解く力が問われる。
✅ TF-IDFは「単語の重要度」を評価する代表的な手法
✅ 他の選択肢(SVD、CBOW、BOW)は目的が異なるため要注意
✅ 実務でもトピック抽出や文書分類、検索エンジンなどで多用されている
G検定の出題傾向を踏まえながら、単なる暗記ではなく「使いどころ」と「役割の違い」まで押さえることが、スコアアップへの近道となる。


コメント