【问题标题】:Spelling correction for data normalization in JavaJava中数据规范化的拼写更正
【发布时间】:2011-01-20 00:27:20
【问题描述】:

我正在寻找一个 Java 库来对用户生成的文本内容进行一些初始拼写检查/数据规范化,想象一下在 Facebook 个人资料中输入的兴趣。

此文本将在某个时候被标记化(在拼写更正之前或之后,无论哪个效果更好),其中一些用作搜索键(精确匹配)。最好减少拼写错误等以产生更多匹配。如果更正在比一个单词更长的标记上表现良好,那就更好了,例如“trinking coffee”会变成“drinking coffee”而不是“thinking coffee”。

我找到了以下用于进行拼写纠正的 Java 库:

  1. JAZZY 似乎没有在积极开发中。此外,由于在社交网络配置文件和多词标记中使用了非标准语言,基于字典距离的方法似乎不够用。
  2. APACHE LUCENE 似乎有一个更适合的statistical spell checker。这里的问题是如何创建一个好的字典? (我们没有使用 Lucene,所以没有现有的索引。)

欢迎提出任何建议!

【问题讨论】:

    标签: java lucene spell-checking


    【解决方案1】:

    您要实现的不是拼写校正器,而是模糊搜索。 Peter Norvig 的文章是一个很好的起点,可以根据字典检查的候选人构建模糊搜索。

    或者看看 BK-Trees。

    n-gram 索引(由 Lucene 使用)对较长的单词产生更好的结果。产生达到给定编辑距离的候选者的方法对于在普通文本中找到的单词可能足够好,但对于名称、地址和科学文本来说不够好。不过,它会增加您的索引大小。

    如果您将文本编入索引,那么您就有了文本语料库(您的字典)。无论如何,只能找到您数据中的内容。您无需使用外部字典。

    一个好的资源是Introduction to Information Retrieval - Dictionaries and tolerant retrieval 。有上下文相关拼写更正的简短描述。

    【讨论】:

    • 感谢您富有洞察力的评论和有趣的图书链接。你是对的,我真正想要的是模糊搜索。但是,我将了解拼写检查如何/是否适用于我的特定应用程序(也许它现在已经足够好了),并重新审视您稍后提到的想法。非常感谢!
    【解决方案2】:

    关于填充 Lucene 索引作为拼写检查器的基础,这是解决问题的好方法。 Lucene 有一个开箱即用的 SpellChecker 供您使用。

    网上有很多word dictionaries,您可以下载并使用它们作为您的lucene 索引的基础。我建议用一些特定领域的文本来补充这些内容,例如如果您的用户是医生,那么可以用医学论文和出版物的源文本来补充字典。

    【讨论】:

    • 谢谢,如果 Jazzy 工作“足够好”,我认为构建 Lucene 索引将是我的第二次尝试。
    • 这篇文章中的两个链接似乎都被破坏了
    【解决方案3】:

    【讨论】:

    • 我真的很喜欢 Norvig 的小拼写检查器,太棒了!然而,问题归结为选择正确的文本语料库(就像更高级的 LUCENE 一样)。从免费提供的莎士比亚作品中获取频率无助于纠正社交网络资料。
    • 所以你是说“trinking”而不是“drinking”没有得到解决?我将不得不重新阅读 Norvig 的文章,也许自己实现它,因为我认为它会有所帮助。
    • 我指的是选择正确语料库的问题(以获得正确的频率,例如,不是来自英语文献的频率,而是适合可变质量社交网络数据的频率)。如果我正确理解 Norvig 的代码,它只考虑最多 2 个单词的编辑距离。这意味着它对单个单词的效果出奇的好,而不是对多个单词标记。
    【解决方案4】:

    您可以点击Gutenberg projectInternet Archive 获取大量语料库。

    另外,我认为Wiktionary 可以帮助您。你甚至可以创建一个direct download

    【讨论】:

      【解决方案5】:

      http://code.google.com/p/google-api-spelling-java 是一个很好的 Java 拼写检查库,但我同意 Thomas Jung 的观点,这可能不是您问题的答案。

      【讨论】:

      • 感谢您的链接,有趣的 API!
      猜你喜欢
      • 1970-01-01
      • 2015-08-21
      • 2013-12-11
      • 2016-10-22
      • 2011-09-19
      • 1970-01-01
      • 2019-07-02
      • 2012-05-30
      • 2016-07-23
      相关资源
      最近更新 更多