问题:您希望计算两个文本文档之间的相似性以评估它们的语义对齐。
解决方案:测量文档相似度的流行方法是将它们转换为 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中文网其他相关文章!