計算句子字串的餘弦相似度
餘弦相似度是兩個向量之間相關性的量測。在文字處理的背景下,它可以用來確定兩個句子之間的相似度。要在沒有外部函式庫的情況下計算兩個字串的餘弦相似度,請按照以下步驟操作:
一個簡單的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 加權,這可以提高較大資料集的餘弦相似度。
以上是如何在不使用外部函式庫的情況下計算兩個句子之間的餘弦相似度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!