文档相似度-奇数一出

Document similarity- Odd one out

假设我有 "n" 份关于特定主题的文档,其中提供了某些详细信息。我想获得那些与大多数文件不相似的文件。尽管这看起来很模糊,但我知道如何找到 2 个文档之间的余弦相似度。但是可以说,我 "know" 我有 10 个彼此相似的文档,我介绍了第 11 个文档,我需要一种方法来判断这个文档与这 10 个文档的相似程度,而不仅仅是与每个单独的文档。

我正在使用 scikit learn,所以答案或技巧及其参考会有所帮助!

将每个文档表示为 bag of words 并使用 tf-idf 权重来表示特定文档中的单词。然后计算与所有 n 文档的余弦相似度。对所有相似度值求和然后归一化(将最终的 sim 值除以 n)。它应该为您提供 n 文档与目标文档之间的合理相似性。

您还可以考虑 mutual information (sklearn.metrics.mutual_info_score), KL-divergence 来衡量两个文档之间的 similarity/difference。请注意,如果要使用它们,则需要将文档表示为概率分布。要计算文档中术语的概率,您可以简单地使用以下公式:

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 文档和你的目标文档之间的 similarity/dissimilarity 有一个合理的想法。