文文字列のコサイン類似度の計算
コサイン類似度は、2 つのベクトル間の相関の尺度です。テキスト処理のコンテキストでは、2 つの文間の類似性を判断するために使用できます。外部ライブラリを使用せずに 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 list(vec1.keys())]) sum2 = sum([vec2[x] ** 2 for x in list(vec2.keys())]) denominator = math.sqrt(sum1) * math.sqrt(sum2) if not denominator: return 0.0 else: return float(numerator) / denominator def text_to_vector(text): words = WORD.findall(text) return Counter(words)</code>
使用例:
<code class="python">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>
出力:
Cosine: 0.861640436855
この実装には、TF-IDF 重み付けが含まれていないことに注意してください。これにより、精度が向上します。より大きなデータセットのコサイン類似度。
以上が外部ライブラリを使用せずに 2 つの文間のコサイン類似度を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。