在自然語言處理的背景下,計算餘弦相似度對於測量文件之間的文字相似度至關重要。雖然 tf-idf-cosine 等外部函式庫可以促進此任務,但也可以在不依賴此類依賴項的情況下手動計算餘弦相似度。
餘弦相似度概述
餘弦相似性量化了表示文本的兩個向量之間的角度。餘弦相似度越高,角度越小,表示文字之間的相似度越大。它是使用歸一化向量除以其振幅的點積來計算的。
手動實現餘弦相似度
要手動計算餘弦相似度,我們定義以下步驟:
餘弦計算:計算歸一化向量的點積並除以它們的大小。
代碼實現<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>
下面是手動餘弦相似度計算的Python 實現:
結果Cosine: 0.861640436855此程式碼執行如下:
此值表示兩個句子之間的高餘弦相似度,確認它們在文字上相似。
進一步的考慮因素以上是在沒有外部函式庫的情況下,如何計算兩個句子之間的餘弦相似度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!