找到文档相似性的最佳方法

时间:2013-12-05 17:33:54

标签: java text nlp similarity cosine-similarity

我是NLP的新手,我想找到两个文件之间的相似性

我用谷歌搜索,发现有一些方法可以做到这一点,例如。

最好的方法是什么(我也开放其他方法),其中我们获得了高精度,如果java中有一些API要这样做,请告诉我

1 个答案:

答案 0 :(得分:3)

你的问题的答案有两个:(a)句法和(b)语义相似性。

句法相似性 你已经发现了Shingling,所以我将专注于其他方面。最近的方法使用潜变量模型来描述句法模式。基本思想是使用条件概率: P f | f_c),其中 f 是某些特征,f_c是其上下文。这种模型最简单的例子是马尔科夫模型,其中单词作为特征,前面的单词作为上下文。这些模型回答了这个问题:*单词 w _ n 的概率是多少,假设单词 w1 ,... w _ n-1 在文档中出现之前?此渠道将引导您构建language models,从而根据perplexity衡量文档相似度。对于纯语法相似性度量,可以查看解析树特征而不是单词。

语义相似性 当然,这是一个更难的问题。这方面的最新技术涉及理解分布语义。 Distributional semantics基本上说,“在大量数据的类似情境中出现的术语必然具有相似的含义”。这种方法是数据密集型的。基本思想是构建“上下文”的向量,然后测量这些向量的相似性。

基于自然语言测量文档相似度并不容易,这里的答案不公正,所以我指向this ACL paper,在我看来,这提供了一个非常好的图片。