【发布时间】:2011-05-03 02:50:22
【问题描述】:
我正在尝试自动对短篇文章进行分类,并且我正在尝试找出如何匹配相似的词 - 例如,货架或绘画和重绘
我使用的是 Porter 词干算法,但它只在某些情况下有帮助,而且只在词尾有帮助(上面的两个例子都不适用于它)。
是否有算法或相关的单词列表可以帮助解决这样的问题(除了我自己做的?)
(我正在使用 php,因此该语言的任何解决方案都会更有帮助。)
【问题讨论】:
我正在尝试自动对短篇文章进行分类,并且我正在尝试找出如何匹配相似的词 - 例如,货架或绘画和重绘
我使用的是 Porter 词干算法,但它只在某些情况下有帮助,而且只在词尾有帮助(上面的两个例子都不适用于它)。
是否有算法或相关的单词列表可以帮助解决这样的问题(除了我自己做的?)
(我正在使用 php,因此该语言的任何解决方案都会更有帮助。)
【问题讨论】:
Levenshtein Distance 是您正在寻找的。p>
对于任意两个字符串,它计算将一个字符串更改为另一个字符串所需发生的最小插入、突变和删除次数。
如果距离很近,那么这两个词是相似的。
您还可以使用Soundex 算法来确定两个单词是否听起来相似。
【讨论】:
嗯,有所有“相关词表”之母,叫做 WordNet:http://wordnet.princeton.edu/
它是免费提供的,但需要相当慷慨的许可。 “相关项目”部分有一个PHP接口。
与使用单词相似度算法相比,它的优势在于它甚至可以识别单词的不同同义词,例如“paint”和“color”。缺点是你要么必须知道正确的同义词集(毕竟,一个词可能意味着不同的东西),要么你可以得到一个相当疯狂的同义词列表。
【讨论】: