这就是问题 - 我有几千个小文本片段,从几个单词到几个句子 - 最大的片段大约是磁盘上的2k。我希望能够比较每个,并计算相关因素,以便我可以向用户显示相关信息。
有什么好方法可以做到这一点?有没有已知的算法可以做任何好事,是否有任何GPL解决方案等?
我不需要这个实时运行,因为我可以预先计算所有内容。我更关心的是获得比运行时更好的结果。
我只是觉得在去写自己的东西之前我会问Stack Overflow社区。在那之前,有很多人找到了解决这个问题的方法。
答案 0 :(得分:2)
我从未使用过它,但您可能需要查看Levenshtein distance
答案 1 :(得分:2)
semantic relatedness和semantic 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)
这对于合理的大型文本来说是相当可行的,但对于较小的文本来说却更难。
我曾经这样做过,而且效果很好:
答案 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库中使用,并且可能在您的应用程序中很有用。