Nlp 如何模糊地搜索字典中的单词?

Nlp 如何模糊地搜索字典中的单词?,nlp,Nlp,假设我有一个单词词典,{'cat','cot','catalyst'},和一个字符相似关系f(x,y) 程序员可以指定这些“相似性”。 比如说, f('t', 'l') = 1 f('a', 'o') = 1 f('f', 't') = 1 但是, 现在,如果我们有一个查询“cofatyst”,那么算法应该报告以下匹配: ('cot', 0) ('cat', 0) ('catalyst', 0) 其中,数字是找到的匹配项的从0开始的索引。我已经尝试了,虽然它对于精确匹配非常有效,并且当一个字

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

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

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

现在,如果我们有一个查询“cofatyst”,那么算法应该报告以下匹配:

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

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

levenshtein距离与您所寻找的相似,尽管可能没有那么细粒度。我敢肯定,你可以重新实现一个更受控制的算法版本


所以,基本上,您需要某种最小编辑距离,考虑到某些字符(如键盘上靠得很近的字符)更可能被交换?我的直觉告诉我你会在StackOverflow上得到更好的回应。正确!相似字符的概念可能会有所不同(例如,当你对某些东西进行OCR时,l更可能被误读为“t”或“i”,而不是被误读为“a”)。好吧,请继续提问,以及SO和语言学网站上可能张贴的你的副本。关于后者的问题被转移到这里。这是一个开始,但问题是,对于一个巨大的字典,我如何在查询中搜索字典子字符串?Levenshtein距离计算算法可以进行修改,以适应这种情况:但是,它只给出匹配子字符串的最小Levenshtein距离,而没有给出现成的匹配位置。我想我很接近了,如果这里有足够的头脑风暴,我们可以想出一些好主意。
f('a', 'z') = 0
etc.
('cot', 0)
('cat', 0)
('catalyst', 0)