首頁 >後端開發 >Python教學 >如何在純Python中計算兩個文字字串的餘弦相似度?

如何在純Python中計算兩個文字字串的餘弦相似度?

Susan Sarandon
Susan Sarandon原創
2024-10-30 08:05:02895瀏覽

How to Calculate Cosine Similarity of Two Text Strings in Pure Python?

如何在沒有外部函式庫的情況下計算兩個文字字串的餘弦相似度

在文字分析中,餘弦相似度是兩個文本之間相似度的度量是基於他們共享詞彙的文本。雖然可以使用外部函式庫來計算此度量,但也可以實作一個簡單的純 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>

此函數採用兩個向量 vec1 和 vec2 作為輸入,並計算它們的餘弦相似度。以下是如何使用它來比較兩個文字字串text1和text2:

<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

這表示兩個文字字串高度相似。

以上是如何在純Python中計算兩個文字字串的餘弦相似度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn