コサイン類似度
コサイン類似度は異なるベクトル間の類似度を測る指標となります。一般的には以下式で表されます。
コサイン類似度指標としても使われますが、類似度を使ったネットワーク分析などにより、視覚的に見やすくなることもあります。
コサイン類似度の例
下記のデータを考えます。映画1~4についてA~Cさんが5点満点で評価をしてみます。
映画1 | 映画2 | 映画3 | 映画4 | |
Aさん | 5.0 | 4.5 | 2.5 | 5.0 |
Bさん | 3.5 | 3.5 | 5.0 | 2.5 |
Cさん | 4.5 | 5.0 | 2.5 | 4.5 |
この場合のそれぞれの人のコサイン類似度を考えてみます。
A = [5.0, 4.5, 2.5, 5.0]
B = [3.5, 3.5, 5.0, 2.5]
C = [4.5, 5.0, 2.5, 4.5]
cosine_similarity(A, B) = 0.892
cosine_similarity(B, C) = 0.901
cosine_similarity(C, A) = 0.995
結果として、AさんとCさんのコサイン類似度が高く、似ているということが分かりました。
テーブルから見ても、確かに似てそうです。
コサイン類似度の使い方
コサイン類似度は、文書の類似度を求める際によく利用されます。具体的には、以下のような場面で使用されます。
情報検索
情報検索では、ユーザーが検索クエリを入力すると、それに最も近い文書を検索結果として返します。このとき、検索クエリと文書をベクトル化して、コサイン類似度を計算することで、検索結果を決定することができます。
文書分類
文書分類では、あらかじめカテゴリごとに分類された文書を学習データとして利用し、未知の文書がどのカテゴリに属するかを予測します。このとき、学習データをベクトル化して、コサイン類似度を計算することで、未知の文書がどのカテゴリに属するかを判定することができます。
まとめ
コサイン類似度は、文書の類似度を求める際によく利用される手法の一つです。ベクトル空間モデルを利用して、2つの文書の類似度を計算することができます。情報検索や文書分類など、さまざまな分野で活用されています。
類似度の方かにもユークリッド距離などの距離指標があり、これらと今回の類似度指標を合わせて学び活用方法を検討することが良いでしょう。
コサイン類似度を学ぶ際におススメの書籍
Python自然言語処理101本ノック:: ~基礎からBERTまで~
こちらの書籍は自然言語処理の学習本になりますが、その中でコサイン類似度を用いた実装例などが示されています。言語を用いた処理に興味がある方には特におススメです。
コメント