7

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

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

我不需要它来实时运行,因为我可以预先计算一切。我更关心获得好的结果而不是运行时。

我只是想在编写自己的东西之前先问问 Stack Overflow 社区。必须有人在此之前找到了很好的解决方案。

4

7 回答 7

2

我从来没有用过,但你可能想看看Levenshtein 距离

于 2009-08-31T18:17:03.507 回答
2

这些关于语义相关性语义相似性的文章可能会有所帮助。还有这个关于潜在语义分析的问题。

您还可以在Soundex中查找在语音上“听起来相似”的单词。

于 2009-08-31T18:22:55.977 回答
1

Jeff 在播客中谈到了类似的内容,以便在此处找到右侧列出的相关问题。(在播客 32 中

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

这是一个类似的问题有没有一种算法可以告诉两个短语的语义相似性

于 2009-08-31T18:18:21.960 回答
0

本书可能是相关的。

编辑:这是一个相关的SO 问题

于 2009-08-31T18:19:06.437 回答
0

这对于合理的大文本是非常可行的,但对于较小的文本则更难。

我这样做过一次,效果很好:

  • 过滤所有“通用”词(如 a、an、the、in 等)(过滤大约 10-30% 的词)
  • 计算剩余单词的频率,存储最常用单词的前 x,这些是您的主题。
  • 作为一个额外的步骤,您可以创建 2/3/4 个后续单词的组,并将它们与其他文本中的组进行比较。我用它作为剽窃的衡量标准。
于 2009-08-31T18:27:25.030 回答
0

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

于 2009-08-31T19:10:18.970 回答
0

语音算法

文章Beyond SoundEx - MS SQL Server 中的模糊搜索功能介绍了如何在 SQL Server 中安装和使用SimMetrics库。该库可让您找到字符串之间的相对相似性,并包含许多算法。

我最终主要使用Jaro Winkler来匹配名称。以下是我询问关于 SO 上匹配名称的更多信息:基于人名匹配记录

SimMetric 库中也提供了一些基于Levenshtein 距离的算法,它们可能对您的应用程序很有用。

于 2009-08-31T20:31:08.447 回答