【问题标题】:Spelling Suggestor in ASP.NETASP.NET 中的拼写建议器
【发布时间】: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代码让我无法理解。由于我的问题与那里的问题非常相似,因此我只是发布了代码,以便有人将我引向正确的方向...当然,我的错,我没有看到页面底部...曾经再次抱歉,我听起来像。

标签: c# .net spelling


【解决方案1】:

另一种选择是NHunspel

NHunspell 是一个免费的开源拼写 .NET 框架的检查器。 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 );
    }
}

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    完全公开...当然是在堆栈溢出的帮助下真正由您编写的 :)

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 2012-09-27
      相关资源
      最近更新 更多