| 
 | 
 
  
 
title 
 
项目简介 
 
word-checker 本项目用于单词拼写检查。支持英文单词拼写检测,和中文拼写检测。 
特性说明 
 
 
-  可以迅速判断当前单词是否拼写错误
 
 -  可以返回最佳匹配结果
 
 -  可以返回纠正匹配列表,支持指定返回列表的大小
 
 -  错误提示支持 i18n
 
 -  支持大小写、全角半角格式化处理
 
 -  支持自定义词库
 
 -  内置 27W+ 的英文词库
 
 -  支持指定英文的编辑距离
 
 -  支持基本的中文拼写检测
 
  变更日志 
 
变更日志 快速开始 
 
JDK 版本 
 
Jdk 1.7+ 
maven 引入 
 
<dependency> 
     <groupId>com.github.houbb</groupId> 
     <artifactId>word-checker</artifactId> 
    <version>1.1.0</version> 
</dependency>测试案例 
 
会根据输入,自动返回最佳纠正结果。 
final String speling = &#34;speling&#34;; 
Assert.assertEquals(&#34;spelling&#34;, WordCheckerHelper.correct(speling));核心 api 介绍 
 
核心 api 在 WordCheckerHelper 工具类下。 
WordCheckers 工具类提供了长文本中英文混合的自动纠正功能,当然也支持单个单词。 
| 功能 | 方法 | 参数 | 返回值 | 备注 |  | 文本拼写是否正确 | isCorrect(string) | 待检测的文本 | boolean | 全部正确,才会返回 true |  | 返回最佳纠正结果 | correct(string) | 待检测的单词 | String | 如果没有找到可以纠正的文本,则返回其本身 |  | 判断文本拼写是否正确 | correctMap(string) | 待检测的单词 | Map<String, List<String>> | 返回所有匹配的纠正列表 MAP |  | 判断文本拼写是否正确 | correctMap(string, int limit) | 待检测的文本, 返回列表的大小 | 返回指定大小的的纠正列表      MAP | 列表大小 <= limit |  | 判断文本拼写是否正确 | correctList(string) | 待检测的单词 | List<String> | 返回所有匹配的纠正列表 |  | 判断文本拼写是否正确 | correctList(string, int limit) | 待检测的文本, 返回列表的大小 | 返回指定大小的的纠正列表 | 列表大小 <= limit |   英文测试例子 
 
 参见 EnWordCheckerTest.java 是否拼写正确 
 
final String hello = &#34;hello&#34;; 
final String speling = &#34;speling&#34;; 
Assert.assertTrue(WordCheckerHelper.isCorrect(hello)); 
Assert.assertFalse(WordCheckerHelper.isCorrect(speling));返回最佳匹配结果 
 
final String hello = &#34;hello&#34;; 
final String speling = &#34;speling&#34;; 
Assert.assertEquals(&#34;hello&#34;, WordCheckerHelper.correct(hello)); 
Assert.assertEquals(&#34;spelling&#34;, WordCheckerHelper.correct(speling));默认纠正匹配列表 
 
final String word = &#34;goox&#34;; 
List<String> stringList = WordCheckerHelper.correctList(word); 
Assert.assertEquals(&#34;[good, goo, goon, goof, gook, goop, goos, gox, goog, gool, goor]&#34;, stringList.toString());指定纠正匹配列表大小 
 
final String word = &#34;goox&#34;; 
final int limit = 2; 
List<String> stringList = WordCheckerHelper.correctList(word, limit); 
Assert.assertEquals(&#34;[good, goo]&#34;, stringList.toString());中文拼写纠正 
 
是否拼写正确 
 
final String right = &#34;正确&#34;; 
final String error = &#34;万变不离其中&#34;; 
 
Assert.assertTrue(WordCheckerHelper.isCorrect(right)); 
Assert.assertFalse(WordCheckerHelper.isCorrect(error));返回最佳匹配结果 
 
final String right = &#34;正确&#34;; 
final String error = &#34;万变不离其中&#34;; 
 
Assert.assertEquals(&#34;正确&#34;, WordCheckerHelper.correct(right)); 
Assert.assertEquals(&#34;万变不离其宗&#34;, WordCheckerHelper.correct(error));默认纠正匹配列表 
 
final String word = &#34;万变不离其中&#34;; 
 
List<String> stringList = WordCheckerHelper.correctList(word); 
Assert.assertEquals(&#34;[万变不离其宗]&#34;, stringList.toString());指定纠正匹配列表大小 
 
final String word = &#34;万变不离其中&#34;; 
final int limit = 1; 
 
List<String> stringList = WordCheckerHelper.correctList(word, limit); 
Assert.assertEquals(&#34;[万变不离其宗]&#34;, stringList.toString());长文本中英文混合 
 
情景 
 
实际拼写纠正的话,最佳的使用体验是用户输入一个长文本,并且可能是中英文混合的。 
然后实现上述对应的功能。 
拼写是否正确 
 
final String hello = &#34;hello 你好&#34;; 
final String speling = &#34;speling 你好 以毒功毒&#34;; 
Assert.assertTrue(WordCheckers.isCorrect(hello)); 
Assert.assertFalse(WordCheckers.isCorrect(speling));返回最佳纠正结果 
 
final String hello = &#34;hello 你好&#34;; 
final String speling = &#34;speling 你好以毒功毒&#34;; 
Assert.assertEquals(&#34;hello 你好&#34;, WordCheckers.correct(hello)); 
Assert.assertEquals(&#34;spelling 你好以毒攻毒&#34;, WordCheckers.correct(speling));判断文本拼写是否正确 
 
每一个词,对应的纠正结果。 
final String hello = &#34;hello 你好&#34;; 
final String speling = &#34;speling 你好以毒功毒&#34;; 
Assert.assertEquals(&#34;{hello=[hello],  =[ ], 你=[你], 好=[好]}&#34;, WordCheckers.correctMap(hello).toString()); 
Assert.assertEquals(&#34;{ =[ ], speling=[spelling, spewing, sperling, seeling, spieling, spiling, speeling, speiling, spelding], 你=[你], 好=[好], 以毒功毒=[以毒攻毒]}&#34;, WordCheckers.correctMap(speling).toString());判断文本拼写是否正确 
 
同上,指定最多返回的个数。 
final String hello = &#34;hello 你好&#34;; 
final String speling = &#34;speling 你好以毒功毒&#34;; 
 
Assert.assertEquals(&#34;{hello=[hello],  =[ ], 你=[你], 好=[好]}&#34;, WordCheckers.correctMap(hello, 2).toString()); 
Assert.assertEquals(&#34;{ =[ ], speling=[spelling, spewing], 你=[你], 好=[好], 以毒功毒=[以毒攻毒]}&#34;, WordCheckers.correctMap(speling, 2).toString());格式化处理 
 
有时候用户的输入是各式各样的,本工具支持对于格式化的处理。 
大小写 
 
大写会被统一格式化为小写。 
final String word = &#34;stRing&#34;; 
 
Assert.assertTrue(WordCheckerHelper.isCorrect(word));全角半角 
 
全角会被统一格式化为半角。 
final String word = &#34;string&#34;; 
 
Assert.assertTrue(WordCheckerHelper.isCorrect(word));自定义英文词库 
 
文件配置 
 
你可以在项目资源目录创建文件 resources/data/define_word_checker_en.txt 
内容如下: 
my-long-long-define-word,2 
my-long-long-define-word-two不同的词独立一行。 
每一行第一列代表单词,第二列代表出现的次数,二者用逗号 , 隔开。 
次数越大,在纠正的时候返回优先级就越高,默认值为 1。 
用户自定义的词库优先级高于系统内置词库。 
测试代码 
 
我们在指定了对应的单词之后,拼写检测的时候就会生效。 
final String word = &#34;my-long-long-define-word&#34;; 
final String word2 = &#34;my-long-long-define-word-two&#34;; 
 
Assert.assertTrue(WordCheckerHelper.isCorrect(word)); 
Assert.assertTrue(WordCheckerHelper.isCorrect(word2));自定义中文词库 
 
文件配置 
 
你可以在项目资源目录创建文件 resources/data/define_word_checker_zh.txt 
内容如下: 
默守成规 墨守成规使用英文空格分隔,前面是错误,后面是正确。 
后期 Road-Map 
 
 
-  [x] 支持英文分词,处理整个英文句子
 
 -  支持中文分词拼写检测
 
 -  引入中文纠错算法,同音字和形近字处理。
 
 -  支持中英文混合拼写检测
 
  技术鸣谢 
 
Words 提供的原始英语单词数据。 
开源地址 
 
https://github.com/houbb/word-checker/ 欢迎大家 fork+star ~~~  |   
 
 
 
 |