我有我写的这个拼写检查器:
import operator
class Corrector(object):
def __init__(self,possibilities):
self.possibilities = possibilities
def similar(self,w1,w2):
w1 = w1[:len(w2)]
w2 = w2[:len(w1)]
return sum([1 if i==j else 0 for i,j in zip(w1,w2)])/float(len(w1))
def correct(self,w):
corrections = {}
for c in self.possibilities:
probability = self.similar(w,c) * self.possibilities[c]/sum(self.possibilities.values())
corrections[c] = probability
return max(corrections.iteritems(),key=operator.itemgetter(1))[0]
这里的可能性是一个字典,如:
{word1:value1}
其中 value 是单词在语料库中出现的次数。
相似函数返回单词之间的相似概率:w1 和 w2。
在correct
函数中,您会看到软件循环遍历所有可能的结果,然后计算每个结果是 w 的正确拼写的概率。
我可以通过某种方式删除循环来加速我的代码吗?
现在我知道这个问题可能没有答案,如果我不能告诉我我不能!