首页 >后端开发 >Python教程 >如何在纯Python中计算两个文本字符串的余弦相似度?

如何在纯Python中计算两个文本字符串的余弦相似度?

Susan Sarandon
Susan Sarandon原创
2024-10-30 08:05:02892浏览

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