假设我在一个特定主题上有" n"文档数量,提供了某些详细信息。我想获得与大多数文件不同的文件。尽管看起来很含糊,但我知道如何在2个文档之间找到余弦相似性。但是可以说,我"知道"我有10个彼此相似的文档,我介绍了第11个文档,我需要一种方法来判断该文档与这10个文档的共同相似,而不仅仅是每个单独的文档。
我正在与Scikit Learn合作,因此带有参考的答案或技术会有所帮助!
将每个文档表示为 bag of words
,并使用 tf-idf
的权重代表特定文档中的单词。然后计算所有n
文档的余弦相似性。总和所有相似性值,然后归一化(将最终SIM值除以n
)。它应该使您在n
文档和目标文档之间具有合理的相似性。
您还可以考虑相互信息(sklearn.metrics.mutual_info_score),kl-divergence以测量两个文档之间的相似性/差异。请注意,如果要使用它们,则需要表示文档作为概率分布。要计算文档中一个术语的概率,您可以简单地使用以下公式:
Probability(w) = TF(w) / TTF(w)
在哪里,
TF(w) = term frequency of word, w in a document, d
TTF(w) = total term frequency of word, w [sum of tf in all documents]
我相信他们中的任何一个都会为您提供有关n
文档和您的目标文档之间相似性/差异的合理想法。