如何模糊搜索字典单词?

时间:2013-05-02 08:30:35

标签: nlp

假设我有一个单词词典,{'cat','cot','catalyst'}和一个字符相似关系f(x,y)

f(x, y) = 1, if x and y are similar
        = 0, otherwise

这些“相似之处”可以由程序员指定。 比如说,

f('t', 'l') = 1
f('a', 'o') = 1
f('f', 't') = 1

但是,

f('a', 'z') = 0
etc.

现在,如果我们有一个'cofatyst'查询,算法应报告以下匹配项:

('cot', 0)
('cat', 0)
('catalyst', 0)

其中数字是找到的匹配项的从0开始的索引。我尝试了Aho-Corasick algorithm,虽然它对于精确匹配非常有用,但是当一个字符的“相似”字符数量相对较少时,它的性能会随着我们增加一个字符的相似字符数而呈指数下降。有人能指出我这样做的更好方法吗?模糊性是绝对必要的,它必须考虑到字符的相似性(即,不要盲目地依赖于编辑距离)。

1 个答案:

答案 0 :(得分:1)

levenshtein距离与您正在寻找的距离类似,但可能不是那么精细。您可以重新实现该算法的更受控制的版本,但我确定。

http://en.wikipedia.org/wiki/Levenshtein_distance