Java中数据规范化的拼写纠正

时间:2010-02-23 10:45:44

标签: java lucene spell-checking

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

此文本将在某些时候进行标记(在拼写纠正之前或之后,无论哪种方式更好),其中一些用作搜索(完全匹配)的键。减少拼写错误等会产生更多匹配会很不错。如果校正在令牌上的表现比单个词更长,那将会更好。 “喝咖啡”会成为“喝咖啡”,而不是“喝咖啡”。

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

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

5 个答案:

答案 0 :(得分:10)

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

或者看看BK-Trees。

n-gram索引(由Lucene使用)可以为更长的单词生成更好的结果。产生候选人到给定编辑距离的方法可能对正常文本中的单词有效,但对名称,地址和科学文本不够好。但是,它会增加你的索引大小。

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

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

答案 1 :(得分:2)

关于将Lucene索引填充为拼写检查器的基础,这是解决问题的好方法。 Lucene有一个可以使用的框SpellChecker

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

答案 2 :(得分:0)

答案 3 :(得分:0)

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

另外,我认为Wiktionary可以帮到你。你甚至可以制作direct download

答案 4 :(得分:0)

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