我怎样才能为类似的单词进行搜索匹配

时间:2010-10-31 16:53:19

标签: algorithm search

我正在尝试自动对短篇文章进行分类,我正试图弄清楚如何匹配相似的单词 - 例如,货架或绘画和重新绘制

我正在使用Porter词干分析算法,但它只对某些情况有帮助,并且只对单词的结尾有用(上面的两个例子都不适用)。

是否有一个算法或相关的单词列表可以帮助这样的事情(在制作我自己的东西之外?)

(我在php工作,所以任何使用该语言的解决方案都会更有帮助。)

2 个答案:

答案 0 :(得分:12)

Levenshtein Distance正是您要找的。

对于任何两个字符串,它会计算将一个字符串更改为另一个字符串所需的最小插入次数,突变次数和删除次数。

如果距离较远,则两个单词相似。

您还可以使用Soundex算法来确定两个单词是否相似。

另见:
PHP levenshtein function
PHP soundex function

答案 1 :(得分:4)

嗯,所有“相关单词列表”的母亲,名为WordNet:http://wordnet.princeton.edu/

它是免费提供的,需要相当慷慨的许可证。 “相关项目”部分中有一个PHP接口。

这比使用单词相似度算法的优点在于它甚至知道单词的不同同义词,例如“paint”和“color”。缺点是你要么必须知道正确的同义词(毕竟,一个词可能意味着不同的东西),或者你可以得到一个非常疯狂的同义词列表。