包头住房和城乡建设厅网站,校园加盟网站建设,互联网设计师,建立门户网站的费用项目简介
word-checker 本项目用于单词拼写检查。支持英文单词拼写检测#xff0c;和中文拼写检测。
特性说明 可以迅速判断当前单词是否拼写错误 可以返回最佳匹配结果 可以返回纠正匹配列表#xff0c;支持指定返回列表的大小 错误提示支持 i18n 支持大小写、全角半角…
项目简介
word-checker 本项目用于单词拼写检查。支持英文单词拼写检测和中文拼写检测。
特性说明 可以迅速判断当前单词是否拼写错误 可以返回最佳匹配结果 可以返回纠正匹配列表支持指定返回列表的大小 错误提示支持 i18n 支持大小写、全角半角格式化处理 支持自定义词库 内置 27W 的英文词库 支持指定英文的编辑距离 支持基本的中文拼写检测
变更日志 变更日志 快速开始
JDK 版本
Jdk 1.7
maven 引入
dependencygroupIdcom.github.houbb/groupIdartifactIdword-checker/artifactIdversion1.1.0/version
/dependency测试案例
会根据输入自动返回最佳纠正结果。
final String speling speling;
Assert.assertEquals(spelling, WordCheckerHelper.correct(speling));核心 api 介绍
核心 api 在 WordCheckerHelper 工具类下。
WordCheckers 工具类提供了长文本中英文混合的自动纠正功能当然也支持单个单词。
功能方法参数返回值备注文本拼写是否正确isCorrect(string)待检测的文本boolean全部正确才会返回 true返回最佳纠正结果correct(string)待检测的单词String如果没有找到可以纠正的文本则返回其本身判断文本拼写是否正确correctMap(string)待检测的单词MapString, ListString返回所有匹配的纠正列表 MAP判断文本拼写是否正确correctMap(string, int limit)待检测的文本, 返回列表的大小返回指定大小的的纠正列表 MAP列表大小 limit判断文本拼写是否正确correctList(string)待检测的单词ListString返回所有匹配的纠正列表判断文本拼写是否正确correctList(string, int limit)待检测的文本, 返回列表的大小返回指定大小的的纠正列表列表大小 limit
英文测试例子 参见 EnWordCheckerTest.java 是否拼写正确
final String hello hello;
final String speling speling;
Assert.assertTrue(WordCheckerHelper.isCorrect(hello));
Assert.assertFalse(WordCheckerHelper.isCorrect(speling));返回最佳匹配结果
final String hello hello;
final String speling speling;
Assert.assertEquals(hello, WordCheckerHelper.correct(hello));
Assert.assertEquals(spelling, WordCheckerHelper.correct(speling));默认纠正匹配列表
final String word goox;
ListString stringList WordCheckerHelper.correctList(word);
Assert.assertEquals([good, goo, goon, goof, gook, goop, goos, gox, goog, gool, goor], stringList.toString());指定纠正匹配列表大小
final String word goox;
final int limit 2;
ListString stringList WordCheckerHelper.correctList(word, limit);
Assert.assertEquals([good, goo], stringList.toString());中文拼写纠正
是否拼写正确
final String right 正确;
final String error 万变不离其中;Assert.assertTrue(WordCheckerHelper.isCorrect(right));
Assert.assertFalse(WordCheckerHelper.isCorrect(error));返回最佳匹配结果
final String right 正确;
final String error 万变不离其中;Assert.assertEquals(正确, WordCheckerHelper.correct(right));
Assert.assertEquals(万变不离其宗, WordCheckerHelper.correct(error));默认纠正匹配列表
final String word 万变不离其中;ListString stringList WordCheckerHelper.correctList(word);
Assert.assertEquals([万变不离其宗], stringList.toString());指定纠正匹配列表大小
final String word 万变不离其中;
final int limit 1;ListString stringList WordCheckerHelper.correctList(word, limit);
Assert.assertEquals([万变不离其宗], stringList.toString());长文本中英文混合
情景
实际拼写纠正的话最佳的使用体验是用户输入一个长文本并且可能是中英文混合的。
然后实现上述对应的功能。
拼写是否正确
final String hello hello 你好;
final String speling speling 你好 以毒功毒;
Assert.assertTrue(WordCheckers.isCorrect(hello));
Assert.assertFalse(WordCheckers.isCorrect(speling));返回最佳纠正结果
final String hello hello 你好;
final String speling speling 你好以毒功毒;
Assert.assertEquals(hello 你好, WordCheckers.correct(hello));
Assert.assertEquals(spelling 你好以毒攻毒, WordCheckers.correct(speling));判断文本拼写是否正确
每一个词对应的纠正结果。
final String hello hello 你好;
final String speling speling 你好以毒功毒;
Assert.assertEquals({hello[hello], [ ], 你[你], 好[好]}, WordCheckers.correctMap(hello).toString());
Assert.assertEquals({ [ ], speling[spelling, spewing, sperling, seeling, spieling, spiling, speeling, speiling, spelding], 你[你], 好[好], 以毒功毒[以毒攻毒]}, WordCheckers.correctMap(speling).toString());判断文本拼写是否正确
同上指定最多返回的个数。
final String hello hello 你好;
final String speling speling 你好以毒功毒;Assert.assertEquals({hello[hello], [ ], 你[你], 好[好]}, WordCheckers.correctMap(hello, 2).toString());
Assert.assertEquals({ [ ], speling[spelling, spewing], 你[你], 好[好], 以毒功毒[以毒攻毒]}, WordCheckers.correctMap(speling, 2).toString());格式化处理
有时候用户的输入是各式各样的本工具支持对于格式化的处理。
大小写
大写会被统一格式化为小写。
final String word stRing;Assert.assertTrue(WordCheckerHelper.isCorrect(word));全角半角
全角会被统一格式化为半角。
final String word sting;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 my-long-long-define-word;
final String word2 my-long-long-define-word-two;Assert.assertTrue(WordCheckerHelper.isCorrect(word));
Assert.assertTrue(WordCheckerHelper.isCorrect(word2));自定义中文词库
文件配置
你可以在项目资源目录创建文件 resources/data/define_word_checker_zh.txt
内容如下
默守成规 墨守成规使用英文空格分隔前面是错误后面是正确。
后期 Road-Map 支持英文分词处理整个英文句子 支持中文分词拼写检测 引入中文纠错算法同音字和形近字处理。 支持中英文混合拼写检测
技术鸣谢
Words 提供的原始英语单词数据。