我正在寻找一个Java库来对用户生成的文本内容进行初步的拼写检查/数据规范化,想象一下在Facebook个人资料中输入的兴趣。
此文本将在某些时候进行标记(在拼写纠正之前或之后,无论哪种方式更好),其中一些用作搜索(完全匹配)的键。减少拼写错误等会产生更多匹配会很不错。如果校正在令牌上的表现比单个词更长,那将会更好。 “喝咖啡”会成为“喝咖啡”,而不是“喝咖啡”。
我找到了以下用于进行拼写纠正的Java库:
欢迎任何建议!
答案 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 project或Internet Archive获取大量语料库。
另外,我认为Wiktionary可以帮到你。你甚至可以制作direct download。
答案 4 :(得分:0)
http://code.google.com/p/google-api-spelling-java是一个很好的Java拼写检查库,但我同意Thomas Jung,这可能不是你问题的答案。