【发布时间】:2015-05-06 08:17:02
【问题描述】:
在定义条件概率的时候,他走捷径:
所以我选择了一条捷径:我定义了一个简单的模型,它说编辑距离为 1 的所有已知词比编辑距离为 2 的已知词的概率无限大,而比编辑距离为 0 的已知词的概率无限小。通过“已知词”我的意思是我们在语言模型训练数据中看到的一个词——字典中的一个词。我们可以按如下方式实施此策略:
def known(words): return set(w for w in words if w in NWORDS)
def correct(word):
candidates = known([word]) or known(edits1(word)) or known_edits2(word) or [word]
return max(candidates, key=NWORDS.get)
我看不出这段代码是如何实现他的策略的。对我来说,最后一行返回只是返回具有最高计数/优先级的单词,而不是他模型中的优先级列表。
在定义他的单词统计词典时:
def train(features):
model = collections.defaultdict(lambda: 1)
for f in features:
model[f] += 1
return model
他为什么不从0开始?我的意思是 default_factory 不应该是 (lambda:0) 还是 (int)?
谁能解释一下?你可以在这里找到完整的文章:http://norvig.com/spell-correct.html
谢谢
【问题讨论】:
标签: python spell-checking