計算句子字串之間的餘弦相似度
給定兩個表示句子的字串,需要在不使用外部庫的情況下計算它們的餘弦相似度。讓我們探索一個 Python 實作來實現這一點。
餘弦相似度測量兩個向量之間的角度,通常表示向量空間中的文件或句子。高餘弦相似度值表示句子相似,而低值表示句子不同。
第 1 步:標記化與向量化
為了計算餘弦相似度,我們必須將句子轉換為向量。我們使用一個簡單的基於單字的分詞器,將句子分成單字併計算它們的出現次數:
<code class="python">import re from collections import Counter WORD = re.compile(r"\w+") def text_to_vector(text): words = WORD.findall(text) return Counter(words)</code>
第2 步:計算餘弦相似度
餘弦相似度公式是:
cosine = (Numerator) / (Denominator)
其中:
<code class="python">import math 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</code>
第3 步:範例用法
使用上述函數,我們可以計算兩個句子之間的餘弦相似度:
<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>
輸出會顯示較高的餘弦相似度值,表示句子相似。
以上是如何在沒有外部函式庫的情況下用Python計算句子之間的餘弦相似度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!