ASP.NET中的Spelling Suggestor

时间:2009-11-10 13:41:32

标签: c# .net spelling

我需要在ASP.NET中构建一个拼写建议器......以下是我的要求。

案例1:我的单词列表不仅包括单词,还包括一些代码,如AACD,ESSA,BIMER等......我可以从数据库中提供这样的(新)单词。

案例2:我还需要一个类似的非英语语言拼写建议书,即使在这里,我也可以提供数据库中的单词列表。

现在,欢迎任何关于我如何实现相同的建议。

此外,我从网站上找到了以下Python代码,该代码表明它返回了最可能的建议(英文版)。如果有人可以将其转换为真正有用的C#。

 import re, collections
    def words(text): return re.findall('[a-z]+', text.lower()) 
    def train(features):  
        model = collections.defaultdict(lambda: 1) 
         for f in features:  
            model[f] += 1
        return model
    NWORDS = train(words(file('big.txt').read()))
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    def edits1(word):
        s = [(word[:i], word[i:]) for i in range(len(word) + 1)]   
        deletes    = [a + b[1:] for a, b in s if b] 
        transposes = [a + b[1] + b[0] + b[2:] for a, b in s if len(b)>1]
        replaces   = [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]   
    return set(deletes + transposes + replaces + inserts)
    def known_edits2(word):    
        return set(e2 for e1 in edits1(word) for e2 in edits1(e1) if e2 in NWORDS)

    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)

由于 - 拉贾

3 个答案:

答案 0 :(得分:4)

另一种选择是NHunspel

  

NHunspell是一个免费的开源咒语   .NET Framework的检查程序。 C#和   Visual Basic示例代码可用   用于拼写检查,连字符和   通过词库进行系统匿名查找。

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 );
    }
}

答案 1 :(得分:2)

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

答案 2 :(得分:0)

可以看到基于WPF文本框的可用于客户端或服务器端的免费.NET拼写检查程序here。这可以传递给要忽略的单词列表(您的自定义词典)

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