我正在寻找一个Java库来对用户生成的文本内容进行初始拼写检查/数据规范化,想象一下在Facebook个人资料中输入的兴趣.
此文本将在某个时刻(在拼写纠正之前或之后,无论哪种方式更好)被标记化,并且其中一些用作搜索(完全匹配)的键.减少拼写错误等会产生更多匹配会很不错.如果校正在令牌上的表现不仅仅比一个单词更好,那将会更好,例如"trinking coffee"将成为"喝咖啡"而不是"思考咖啡".
我找到了以下用于拼写纠正的Java库:
JAZZY似乎没有积极发展.此外,由于在社交网络配置文件和多字令牌中使用非标准语言,基于字典距离的方法似乎不合适.
APACHE LUCENE似乎有一个统计拼写检查器应该更合适.这里的问题是如何创建一个好的字典?(否则我们不使用Lucene,因此没有现有的索引.)
欢迎任何建议!
你想要实现的不是拼写纠正器而是模糊搜索.Peter Norvig的文章是一个很好的起点,可以根据字典对候选人进行模糊搜索.
或者看看BK-Trees.
n-gram索引(由Lucene使用)可以为更长的单词生成更好的结果.产生候选人到给定编辑距离的方法可能对正常文本中找到的单词有效,但对名称,地址和科学文本不够好.但它会增加你的索引大小.
如果你有索引的文本,你有你的文本语料库(你的字典).无论如何,只能找到数据中的内容.您不需要使用外部字典.
一个很好的资源是信息检索简介 - 字典和容忍检索.上下文敏感的拼写纠正有一个简短的描述.