はじめに
G検定の出題範囲は、AI技術の基礎から応用まで多岐にわたる。特に自然言語処理(NLP)分野では、文章や単語をベクトルで表現し、その類似度を数値で評価する手法がよく問われる。
中でも「コサイン類似度」は、単語や文章の関係性を数値化するうえで基本となる指標のひとつだ。今回は、実際に出題された問題を題材に、コサイン類似度の正確な理解と、選択肢の見極め方を解説する。
問題:コサイン類似度の正しい説明はどれか?
自然言語処理などで利用されているコサイン類似度の説明として、最も適切な選択肢を選べ。
選択肢
- コサイン類似度が0に近い場合、2つのベクトルの類似度が高い
- 2つのベクトル間の類似度の指標で、-1~1の範囲をとる
- 値は整数のみで表現される
- 活性化関数として用いられる
正解は「2. 2つのベクトル間の類似度の指標で、-1~1の範囲をとる」
コサイン類似度は、ベクトル同士の角度のコサイン値を用いて類似度を評価する手法だ。自然言語処理では、文章や単語をベクトル化(例:Word2Vec、TF-IDFなど)したあとに、どれだけ似ているかをこの数値で表現する。
数式としては以下のように定義される。
cos(θ) = A・B / (||A|| × ||B||)
- A・BはベクトルAとBの内積
- ||A||, ||B|| はそれぞれのベクトルの大きさ(ノルム)
この結果、コサイン類似度の値は -1〜1の範囲 をとる。
なぜ他の選択肢は誤りなのか?
選択肢1:「コサイン類似度が0に近い場合、類似度が高い」
これは逆の意味となる。
コサイン類似度が1に近いほどベクトル間の角度が小さく、類似度が高い。
一方、0に近づくほどベクトルは直交し、関係性が弱い(≒類似していない)と判断される。したがって、この選択肢は誤解を招く表現だ。
選択肢3:「値は整数のみで表現される」
コサイン類似度の計算結果は小数になるのが一般的。
たとえば「0.87」「-0.23」など、連続的な値で類似度を表現するため、この選択肢は誤っている。
選択肢4:「活性化関数として用いられる」
活性化関数は、ニューラルネットワークの各層で非線形性を導入するための関数であり、代表例にはReLUやSigmoidなどがある。
コサイン類似度は層の出力処理やスコアリングに使われる指標であって、活性化関数ではない。よって、この選択肢も不正解。
コサイン類似度が活用される場面
コサイン類似度は実際のNLPアプリケーションでも広く使われている。以下、代表的なケースを紹介する。
文書検索やレコメンドエンジン
ユーザーが入力したクエリ文と、文書データベース内の各文章との類似度をコサイン類似度で算出し、スコアの高い順に並べて検索結果とする。
たとえば、「Python 入門」と検索した場合、「Pythonの基礎文法」「初心者のためのPython」などが高スコアとして表示される。
類義語や同義文判定
単語や文章をベクトルに変換した上で、コサイン類似度が高いものを類義語や同義文とみなすことで、チャットボットやQAシステムの理解力を強化することが可能だ。
Pythonによるコサイン類似度の実装例
以下は、Pythonライブラリ scikit-learn を使った実装例だ。
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.feature_extraction.text import TfidfVectorizer
docs = ["私はAIが好きです", "AIに興味があります"]
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(docs)
similarity = cosine_similarity(tfidf_matrix[0:1], tfidf_matrix[1:2])
print(f"コサイン類似度: {similarity}")
実行結果は、小数の類似度(例:0.83など)が返る。これが、2文の意味がどれだけ似ているかを数値で表したものとなる。
まとめ
コサイン類似度は、自然言語処理の文脈において「文章や単語の類似性を評価する基本指標」として非常に重要な役割を担っている。
✅ 定義:ベクトル間の角度に基づき類似度を数値化(-1〜1の範囲)
✅ 正答の選び方:ベクトルの数学的な性質とNLP文脈での用途を理解する
✅ 応用:検索エンジン・チャットボット・意味解析など、多岐にわたる実装場面
G検定では、「単語や文の類似性をどう測るか?」という本質的な理解が問われる。単なる暗記ではなく、なぜその選択肢が正解なのか/間違っているのかまで踏み込むことが、合格への近道となる。


コメント