假设我有字的字典,{“猫”,“担架床”,“催化剂”},以及字符相似关系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',算法应报告下列匹配:
3210其中数字是找到的匹配的基于0的起始索引。我已经尝试过Aho-Corasick algorithm,虽然它对于精确匹配非常有用,并且在字符的“相似”字符数量相对较少的情况下,它的性能会呈指数增长,因为我们会增加字符的相似字符数。任何人都可以指出我更好的方式吗?模糊性是绝对必要的,它必须考虑到字符相似性(即不要盲目依赖编辑距离)。
所以基本上,你想要某种最小编辑距离,考虑到某些字符(如字符并拢键盘上)更有可能被交换?我的直觉告诉我你将在StackOverflow上得到更好的回应。 – acattle 2013-05-02 09:37:11
正确!类似人物的概念可能不同(例如,当你对某些东西进行OCR时,更可能被误解为't'或'i'而不是被误读为'a')好吧,以及 – 2013-05-02 09:42:20
可能的重复[如何模糊搜索词典词?](http://stackoverflow.com/questions/16333766/how-to-fuzzily-search-for-a-dictionary-word)你显然张贴在两个SO和语言学。堆栈交换。关于后者的问题随后在此迁移。 – jogojapan 2013-05-08 09:10:08