【发布时间】:2010-12-15 01:10:32
【问题描述】:
我需要在 ASP.NET 中构建拼写建议器...以下是我的要求。
案例 1:我的单词列表不仅仅是英语单词,还包括一些代码,如 AACD、ESSA、BIMER 等……我可以从数据库中提供此类(新)单词。
案例 2:我还需要一个类似的非英语拼写建议器,即使在这里,我也可以提供来自数据库的单词列表。
现在,欢迎就我如何实现它提出任何建议。
此外,我从一个网站上找到了以下 Python 代码,该代码表明它返回了最可能的建议(当然是英文)。如果有人可以将它翻译成 C#,那将非常有帮助。
导入重新,集合
def words(text): return re.findall('[a-z]+', text.lower())
def 火车(特点):
模型 = collections.defaultdict(lambda: 1)
对于 f in 特征:
模型[f] += 1
返回模型
NWORDS = train(words(file('big.txt').read()))
字母 = 'abcdefghijklmnopqrstuvwxyz'
def 编辑1(字):
s = [(word[:i], word[i:]) for i in range(len(word) + 1)]
删除 = [a + b[1:] for a, b in s if b]
转置 = [a + b[1] + b[0] + b[2:] for a, b in s if len(b)>1]
替换 = [a + c + b[1:] for a, b in s for c in alphabet if b]
inserts = [a + c + b for a, b in s for c in alphabet]
返回集(删除+转置+替换+插入)
def known_edits2(word):
返回集(如果 e2 在 NWORDS 中,则在 edits1(word) 中的 e2 用于 edits1(e1) 中的 e2)
def known(words): return set(w for w in words if w in NWORDS)
def 正确(字):
候选人 = known([word]) or known(edits1(word)) or known_edits2(word) or [word]
返回最大值(候选人,key=NWORDS.get)
谢谢 - 拉贾
【问题讨论】:
-
我们需要调用 Correct("speling") 方法,它返回字符串 "Spelling" 作为最可能的建议。
-
你好,有人投了我的票,你能告诉我为什么吗?
-
我怀疑投反对票是因为您没有努力自己翻译代码。 SO 在这里帮助解决编程问题,而不是为您完成全部工作。无论如何,如果您想要 Norvig 在 C# 中的拼写纠正器,请参阅他的原始页面。底部有翻译他原始代码的人的链接:norvig.com/spell-correct.html
-
我对你投了反对票,因为你基本上是在要求其他人做你的工作。 +1 表示脸颊,-2 表示错误的厚脸皮 :)
-
大家好,对不起,如果问题听起来是这样的。我不了解python,因此无法理解代码的开头和结尾......我开始向下阅读页面以理解这个概念,但更多的python代码让我无法理解。由于我的问题与那里的问题非常相似,因此我只是发布了代码,以便有人将我引向正确的方向...当然,我的错,我没有看到页面底部...曾经再次抱歉,我听起来像。