找到两个文本体的“相关性”有哪些好的方法?

时间:2009-08-31 18:15:20

标签: comparison full-text-search information-retrieval string-comparison

这就是问题 - 我有几千个小文本片段,从几个单词到几个句子 - 最大的片段大约是磁盘上的2k。我希望能够比较每个,并计算相关因素,以便我可以向用户显示相关信息。

有什么好方法可以做到这一点?有没有已知的算法可以做任何好事,是否有任何GPL解决方案等?

我不需要这个实时运行,因为我可以预先计算所有内容。我更关心的是获得比运行时更好的结果。

我只是觉得在去写自己的东西之前我会问Stack Overflow社区。在那之前,有很多人找到了解决这个问题的方法。

7 个答案:

答案 0 :(得分:2)

我从未使用过它,但您可能需要查看Levenshtein distance

答案 1 :(得分:2)

semantic relatednesssemantic similarity上的这些文章可能会有所帮助。这是关于Latent Semantic Analysis的问题。

您还可以查看Soundex中发音“听起来相似”的单词。

答案 2 :(得分:1)

杰夫在pod演员上谈到类似的事情,找到右侧列出的相关问题。 (in podcast 32

一个重要提示是删除所有common words,例如“the”和“this”等。这将为您留下更有意义的词语进行比较。

这是一个类似的问题Is there an algorithm that tells the semantic similarity of two phrases

答案 3 :(得分:0)

book可能相关。

编辑:这是一个相关的SO question

答案 4 :(得分:0)

这对于合理的大型文本来说是相当可行的,但对于较小的文本来说却更难。

我曾经这样做过,而且效果很好:

  • 过滤所有“一般”字词(如a,an,the,in等等)(过滤约10-30%的字词)
  • 计算剩余单词的频率,存储最常用单词的前x个,这些是您的主题。
  • 作为额外步骤,您可以创建2/3/4个后续单词组,并将其与其他文本中的组进行比较。我用它来衡量一下plagerism。

答案 5 :(得分:0)

请参阅Manning和Raghavan关于MinHashing的课程说明并搜索类似的项目,以及C#(?) version。我相信这些技术来自于Ullman和Motwani的研究。

答案 6 :(得分:0)

语音算法

文章Beyond SoundEx - Functions for Fuzzy Searching in MS SQL Server展示了如何在SQL Server中安装和使用SimMetrics库。该库允许您查找字符串之间的相对相似性,并包含许多算法。

我最终主要使用Jaro Winkler来匹配名称。以下是我在SO上询问匹配名称的更多信息:Matching records based on Person Name

基于Levenshtein Distance的一些算法也可以在SimMetric库中使用,并且可能在您的应用程序中很有用。