-2

我需要在 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)

谢谢 - 拉贾

4

3 回答 3

4

另一种选择是NHunspel

NHunspell 是用于 .NET Framework 的免费开源拼写检查器。C# 和 Visual Basic 示例代码可用于通过同义词库进行拼写检查、断字和 sysnonym 查找。

using (Hunspell hunspell = new Hunspell("en_us.aff", "en_us.dic"))
{
    bool correct = hunspell.Spell("Recommendation");
    var suggestions = hunspell.Suggest("Recommendatio");
    foreach (string suggestion in suggestions)
    {
        Console.WriteLine("Suggestion is: " + suggestion );
    }
}
于 2009-11-10T14:02:08.667 回答
2

我工作的商业产品使用NETSpell Spell Checker,它有一个字典工具,允许您添加自定义字典和单词。

于 2009-11-10T13:44:18.100 回答
0

可以在此处查看基于 WPF 文本框的免费 .NET 拼写检查器,该文本框可用于客户端或服务器端。这可以传递一个要忽略的单词列表(您的自定义词典)

完全披露......当然是在堆栈溢出的帮助下真正由你写的:)

于 2013-08-01T04:07:18.490 回答