首页  >  文章  >  后端开发  >  如何计算不同文本文档之间的相似度?

如何计算不同文本文档之间的相似度?

Patricia Arquette
Patricia Arquette原创
2024-10-23 06:48:29392浏览

How Can I Calculate the Similarity Between Different Text Documents?

如何确定文本文档之间的相似性

问题:您希望计算两个文本文档之间的相似性以评估它们的语义对齐。

解决方案:测量文档相似度的流行方法是将它们转换为 TF-IDF(词频-逆文档频率)向量。 TF-IDF 根据术语在文档中的出现频率以及它们在语料库中的稀有性来为术语分配权重。随后,计算这些向量之间的余弦相似度来量化它们的相似度。

实现:Python 的 Gensim 和 scikit-learn 为 TF-IDF 转换提供了强大的实现。使用 scikit-learn:

<code class="python">from sklearn.feature_extraction.text import TfidfVectorizer

documents = [open(f).read() for f in text_files]
tfidf = TfidfVectorizer().fit_transform(documents)

# Cosine similarity is calculated automatically
pairwise_similarity = tfidf * tfidf.T</code>

生成的pairwise_similarity 是一个稀疏矩阵,其中每个单元格表示相应文档对之间的余弦相似度。

解释结果:稀疏矩阵的维度等于语料库中文档的数量。要提取与给定输入文档相似度最高的文档,请利用 NumPy 的 np.fill_diagonal() 来屏蔽自相似性,并利用 np.nanargmax() 来查找非自相似性最大值:

<code class="python">result_idx = np.nanargmax(arr[input_idx])
most_similar_doc = corpus[result_idx]</code>

请注意,argmax 是在屏蔽数组上执行的,以避免平凡的最大值 1(每个文档与其自身的相似度)。

以上是如何计算不同文本文档之间的相似度?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn