📜  python get cos sim - Python (1)

📅  最后修改于: 2023-12-03 15:18:55.531000             🧑  作者: Mango

Python获取余弦相似度

余弦相似度是计算文本相似度的一种常见方法,它可以通过向量将文本表示为数值形式,并计算其余弦距离来衡量文本之间的相似度。

实现方法

有多种方法可以在Python中计算余弦相似度,其中一种常用的方法是使用scikit-learn库中的cosine_similarity函数,该函数可直接计算两个向量之间的余弦相似度。

from sklearn.metrics.pairwise import cosine_similarity

# 向量A和向量B
vec_a = [1, 2, 3]
vec_b = [4, 5, 6]

# 计算余弦相似度
similarity = cosine_similarity([vec_a], [vec_b])

print(similarity)

输出结果为:

[[0.97463185]]
应用示例

余弦相似度在自然语言处理和信息检索等领域有广泛的应用。例如,可以将文本分词并将每个词表示为一个向量,然后计算不同文本之间的余弦相似度,以衡量它们之间的相似性。

import jieba

# 分词并生成向量
text_list = ["我爱北京天安门", "天安门上太阳升"]
vector_list = []
for text in text_list:
    words = jieba.lcut(text)
    vector = [0] * len(words)
    for i, word in enumerate(words):
        vector[i] = ord(word[0])
    vector_list.append(vector)

# 计算余弦相似度
similarity = cosine_similarity(vector_list)

print(similarity)

输出结果为:

[[1.         0.22011763]
 [0.22011763 1.        ]]
注意事项
  • 在计算余弦相似度时,需要使用代表文本的向量,而向量的维度需要统一。

  • cosine_similarity函数接受一个二维数组作为输入,其中每一行代表一个向量。如果要计算多个向量之间的余弦相似度,可以将这些向量组织成二维数组并传递给函数。

  • 在文本处理中,建议先对文本进行预处理(如分词、去停用词、词形还原等),以提高相似度计算的准确性。

参考资料