データ・アナリティクス

コサイン類似度

Cosine Similarity

2つのベクトルの方向の近さを測定する数学的指標。大きさを無視して方向のみで類似性を評価します。テキスト検索や推奨システムで活用。

コサイン類似度 ベクトル 自然言語処理 機械学習 テキスト分析
作成日: 2025年12月19日 更新日: 2026年4月2日

コサイン類似度とは?

コサイン類似度は、2つのベクトルの方向の近さを0~1で数値化する指標です。 大きさは無視し、方向のみを比較するため、テキスト検索や推奨システムで活躍。「2本の矢印がどれだけ同じ方向を向いているか」で類似性を判定する考え方です。

ひとことで言うと: 文書Aと文書Bを多次元の矢印に変換して、その向きがどれだけ一致しているかで「似ている度合い」を判定する手法。

ポイントまとめ:

  • 何をするものか: ベクトル間の角度からスコア(0~1)を算出
  • なぜ必要か: テキスト量が異なる文書でも、意味内容の類似性を正確に評価可能
  • 実用例: 検索エンジン、AIチャットボット推奨、不正検出

重要性

テキスト量の異なる2つの記事を比較するとき、単語数では判定できません。短くまとめた記事も、長く詳しく説明した記事も、内容が同じなら「類似している」と判定すべき。コサイン類似度はこの課題を解決し、文書のボリュームに左右されず、意味的な近さだけで比較します。検索精度が向上すれば、ユーザー満足度も上がります。

仕組み

基本公式:

コサイン類似度 = (ベクトルA・ベクトルB) / (|A| × |B|)

2つの文書をベクトル(数値の羅列)に変換。各単語の出現頻度やTF-IDF値で要素を決定。2つのベクトルの内積をそれぞれの大きさで割ると、角度のコサイン値(0~1)が得られます。

スコア解釈:

  • 1.0 = 完全に同じ方向(意味が一致)
  • 0.5 = 中程度に類似
  • 0.0 = 全く関連なし

実務例

検索エンジン: ユーザーが「iPhone 15 ケース」と検索したとき、関連商品ページをベクトル化し、クエリベクトルとのコサイン類似度でランキング。量が異なるテキストでも、意味が近いページが上位に。

チャットボット ユーザー入力と過去の質問データを比較。最もコサイン類似度が高い質問の回答を返す。文体や長さの差は影響しません。

不正検出: ユーザー行動パターン(購買履歴など)をベクトル化。過去のパターンとのコサイン類似度が極端に低ければ、不正の可能性。

メリットと注意点

メリット: 計算が高速、高次元データに強い、意味的類似性を正確に抽出、大規模データセットでスケール可能。

注意点: 大きさを無視するため、「規模が大きい方が重要」という文脈では使用不可。また、前処理(テキスト正規化、ベクトル化方式)で結果が大きく変わる点に注意。

関連用語

よくある質問

Q: 他の類似度指標(ユークリッド距離など)との違いは? A: ユークリッド距離は大きさを含め全てを考慮しますが、コサイン類似度は方向のみ。テキスト検索では方向重視が有効。物理データ(座標)ではユークリッド距離の方が適切です。

Q: ベクトル化の段階で精度が決まるのか? A: その通り。同じテキストでも、単語の選び方、TF-IDFの計算方式、次元削減の手法で全く異なる結果になります。モデル選択が極めて重要。

Q: リアルタイム検索で使用できるか? A: スパース行列対応ライブラリ(scikit-learn, TensorFlow)なら高速計算可能。データセットが大規模でなければ数ミリ秒で処理可能。

参考リンク

  1. scikit-learn:コサイン類似度実装
  2. NumPy:ベクトル演算ガイド
  3. TensorFlow:埋め込みと類似度
  4. Wikipedia:コサイン類似度
  5. Towards Data Science:類似度指標比較

関連用語

エンベディング

エンベディングは、言葉や画像などのデータをベクトル数値に変換する技術です。AIが情報の意味を理解し、類似検索や推奨を実現します。...

チャットボット

チャットボットは、テキストまたは音声で人間の会話をシミュレートしながら、顧客サポート、営業支援、自動化を24時間365日で実現するソフトウェアです。...

×
お問い合わせ Contact