自动更正文本输入中的拼写错误
Posted
技术标签:
【中文标题】自动更正文本输入中的拼写错误【英文标题】:Autocorrect spelling mistakes in text input 【发布时间】:2011-11-10 17:19:21 【问题描述】:我正在用 C# 编写一个自然语言处理器,用于提取句子的情绪(正面/负面)。但是,在识别拼写错误的单词的情绪方面存在一些问题 - 如果它不在字典中,我既不能标记它也不能评价它!
我知道必须有办法处理这个问题。谷歌一直提供准确的建议,我只需要从类似算法中获取最高建议并用它访问数据库。问题是,我不确定从哪里开始使用算法名称等等。我需要帮助解决这个问题。
我在网站上查看了类似的问题,发现了一些似乎有用的概念,但处理拼写错误和真实单词之间距离的基本方法基本上依赖于点击数据集中的每个单词,这看起来很可怕效率低下。一些有助于使算法快速运行的想法也将不胜感激;这个分析引擎应该能够每天处理数千个项目。
提前致谢。
【问题讨论】:
您可以连接到 google 的 API 来为您执行此操作。它可能比大多数图书馆解决方案提供更好的结果。但是,您必须处理 200 毫秒的往返时间,这并不理想。 可以缓存结果并构建本地字典 @Oliver,介意链接一篇关于如何做到这一点的文章,最好是在它自己的答案中?我同意这不是真正的理想情况,但同样的道理,当某些东西已经像谷歌的机制一样有效时,我不考虑它有点愚蠢! @YYY,对不起,看来我有点落伍了。谷歌大约一年前关闭了他们的拼写 API。 【参考方案1】:这个问题没那么愚蠢。诺维格为此写了一封article。一般来说,难度取决于准确性。 “最简单”的方法是使用 prefix tree 或 trie 来避免探索所有可能性。 基本上你有这样的东西:
并遵循您基本上保持正轨的路径。一旦你遇到了卡住的地方,你应该根据你遇到的错误类型检查如何继续前进。
您可以阅读 Norvig 的文章进行更深入的分析。
【讨论】:
如果单词的第一个字母拼写错误,其余的都正确怎么办?我不确定前缀树是否是一个好的解决方案。 Norvig 的文章值得通读。 我没有说这是最好的解决方案。但恕我直言,它可以工作,即使您在第一个字母处有问题,您遇到的错误类型也基本相同,问题是您使用整个树作为解决方案空间。【参考方案2】:dierre 给出的方法——包括 Peter Norvig 的文章——当然值得进一步考虑。
但是,为了快速而简单的解决方案:如果在您自己的字典中找不到可能拼写错误的单词,您可以尝试在此 list of common misspellings 中查找映射
【讨论】:
【参考方案3】:如果您想有效地计算拼写错误和大量字典单词之间的编辑距离,@dierre 提到的前缀树非常有用。 Brill 和 Moore (2000) 描述了一种使用前缀树的方法,该方法使用与 Norvig 和许多其他拼写检查器相同的通用方法。他们的论文可以在这里找到:http://www.ldc.upenn.edu/acl/P/P00/P00-1037.pdf
【讨论】:
以上是关于自动更正文本输入中的拼写错误的主要内容,如果未能解决你的问题,请参考以下文章