ホームページ >バックエンド開発 >Python チュートリアル >外部ライブラリを使用せずに 2 つの文間のコサイン類似度を計算するにはどうすればよいでしょうか?
自然言語処理のコンテキストでは、コサイン類似度の計算は、ドキュメント間のテキストの類似性を測定するために不可欠です。 tf-idf-cosine などの外部ライブラリを使用するとこのタスクが容易になりますが、そのような依存関係に依存せずにコサイン類似度を手動で計算することも可能です。
コサイン類似度の概要
Cosine類似性は、テキストを表す 2 つのベクトル間の角度を定量化します。コサイン類似度が高いほど角度が小さいことを示し、テキスト間の類似性が高いことを意味します。これは、正規化されたベクトルのドット積をその大きさで割った値を使用して計算されます。
コサイン類似度の手動実装
コサイン類似度を手動で計算するには、次の手順を定義します。
コードの実装
以下は手動コサイン類似度計算の Python 実装:
<code class="python">import math import re from collections import Counter WORD = re.compile(r"\w+") def get_cosine(vec1, vec2): intersection = set(vec1.keys()) & set(vec2.keys()) numerator = sum([vec1[x] * vec2[x] for x in intersection]) sum1 = sum([vec1[x] ** 2 for x in vec1]) sum2 = sum([vec2[x] ** 2 for x in vec2]) denominator = math.sqrt(sum1) * math.sqrt(sum2) if not denominator: return 0.0 else: return numerator / denominator def text_to_vector(text): words = WORD.findall(text) return Counter(words) text1 = "This is a foo bar sentence ." text2 = "This sentence is similar to a foo bar sentence ." vector1 = text_to_vector(text1) vector2 = text_to_vector(text2) cosine = get_cosine(vector1, vector2) print("Cosine:", cosine)</code>
Result
このコードは次のように実行されます:
Cosine: 0.861640436855
この値は次のことを示します2 つの文間のコサイン類似度が高く、テキスト的に類似していることが確認されます。
さらなる考慮事項
この手動アプローチは基本的な実装を提供しますが、次の方法で強化できます。 :
以上が外部ライブラリを使用せずに 2 つの文間のコサイン類似度を計算するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。