我正在用python编写程序,使用给定的输入单词(使用编辑距离算法)查找最相似的单词。它必须像这样工作:
input = "tree"
output = [ "free", "trek", "trie" ]
现在,我从一个词典中提取了所有ngram,并将它们与从中提取的单词相关联。我有一本字典,其中的键是ngram,值是相关单词的列表,像这样:
“ mag”:[“ magic”,“ magazine”,“ magnetic”,“ magistrate”,“朝圣”]
当我有一个输入词时,我从中提取ngram并遍历字典中的键以找到它们并提取与单词相关的列表。在这些列表上,我使用编辑距离来获取需要的单词。 它运作良好,但需要很多时间。有时,仅需一个单词,它就会在8/10秒时到达。 我如何使过程更快?我实际上想要一个概念上的解决方案。我使用这种“ ngram索引”方法是因为对词典中的每个单词使用编辑距离要慢得多。现在我想要比当前方法快的东西
def searchIndex(myString, n, index):
ngs = toNgrams(myString)
found=[]
ngIndex = NGram(index)
ngNgrams = NGram(ngs)
a = timer()
commonNgrams = ngIndex.intersection(ngNgrams)
for i in commonNgrams:
for k in index[i]:
if ed(myString, k) < 2 and k not in found:
found.append(k)
b = timer()
time = b-a
return found, time