📅  最后修改于: 2023-12-03 15:18:55.531000             🧑  作者: Mango
余弦相似度是计算文本相似度的一种常见方法,它可以通过向量将文本表示为数值形式,并计算其余弦距离来衡量文本之间的相似度。
有多种方法可以在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
函数接受一个二维数组作为输入,其中每一行代表一个向量。如果要计算多个向量之间的余弦相似度,可以将这些向量组织成二维数组并传递给函数。
在文本处理中,建议先对文本进行预处理(如分词、去停用词、词形还原等),以提高相似度计算的准确性。