我需要在 ASP.NET 中构建一个拼写建议器......以下是我的要求。
案例 1:我的单词列表不仅仅是英语单词,还包括一些代码,如 AACD、ESSA、BIMER 等……我可以从数据库中提供此类(新)单词。
案例 2:我还需要一个类似的非英语拼写建议器,即使在这里,我也可以提供来自数据库的单词列表。
现在,欢迎任何关于我如何实现它的建议。
此外,我从一个网站上找到了以下 Python 代码,该代码指出它返回了最可能的建议(当然是英文)。如果有人可以将其翻译成 C#,那将非常有帮助。
进口重新,收藏品
def words(text): return re.findall('[az]+', 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)
谢谢 - 拉贾