拼写纠错功能

本文基于lucene6.1中的spellchcker编写的使用示例,并介绍功能实现流程,实现类似以下百度中的纠错

首先我们要有一份词典数据,作为正确的词,供lucene建立索引,词典可参考file/dictionary.txt文件格式

1. INDEX_STORE_DIR倒排索引存储路径

Analyzer analyzer = new StandardAnalyzer();
IndexWriterConfig config = new IndexWriterConfig(analyzer); Directory directory = FSDirectory.open(Paths.get(INDEX_STORE_DIR));

final SpellChecker sp = new SpellChecker(directory, new NGramDistance()); BufferedReader reader = Files.newBufferedReader(Paths.get(DIC_STORE_DIR), Charset.forName("gbk")); sp.indexDictionary(new PlainTextDictionary(reader), config, true);

以Today为例,看一下lucene索引里存储了怎样的数据        至于n的取值,参考以下两个方法,l为词的长度    `` private static int getMin(int l) { if (l > 5) { return 3; } if (l == 5) { return 2; } return 1; }

private static int getMax(int l) {

if (l > 5) {

return 4;

}

if (l == 5) {

return 3;

}

return 2;

}

``

构造Document 首先Field f = new StringField(F_WORD, text, Field.Store.YES);会创建word字段,保存“Today”词原值,用于查询时返回    其次构建gram{getMin<=n<=getMax}字段,例如n=2时,构建的gram2字段存储的值为To,od,da,ay,当然若是单词开头还会构建start2字段取值为To,单词结尾还会构建end2字段取值ay      单词Today(2<=n<=3)索引中的存储内容如下:

Filed | Values

--------------------------------------------

word | Today

start2 | To

ngram2 | To,od,da,ay end2 | ay start3 | Tod ngram3 | Tod,oda,day end3 | day

3. 测试

以“Todey”为例介绍检索过程    检索时同样会生成Todey的所有ngram片段,最终构造的query如下 (start2:To)^2.0 (end2:ey)^1.0 gram2:To gram2:od gram2:de gram2:ey (start3:Tod)^2.0 (end3:dey)^1.0 gram3:Tod gram3:ode gram3:dey        召回所有结果后,会计算召回的单词与Todey的ngram-distance,若大于等于DEFAULT_ACCURACY = 0.5f精度才进行返回,精度可以通过suggestSimilar(String word, int numSug, float accuracy)方法传入自定义的取值

最终返回结果:Today,Tomorrow

k-gram 拼写校正 java_拼写纠错-基于lucene-ngram实现拼写纠错相关推荐

  1. NLP:自然语言处理技术之词语级别相关术语解释(如上位词/WordNet)、基于词汇层面的词法分析六大任务(分词/词性标注/词干提取-词形还原/新词发现/形态分析/拼写校正)的简介及其应用

    NLP:自然语言处理技术之词语级别相关术语解释(如上位词/WordNet).基于词汇层面的词法分析(Lexical Analysis)六大任务(分词/词性标注/词干提取-词形还原/新词发现/形态分析/ ...

  2. 拼写校正与动态规划的小故事

    喵喵喵,细心的你有没有发现小夕已经将卧室和书房精装修了呢~ 可以输入口令[ho],或者点击主页的"旧的故事"标签进入哦. 一个小现象 小夕今天给大家讲一个自然语言处理/信息检索领域 ...

  3. nltk 同义词替换 单词拼写校正 制作伪原创文章

    一.基于贝叶斯单词拼写校正 # -*- coding: utf-8 -*- # @Time : 2019/11/26 10:13 # @Author : # @FileName: word_check ...

  4. 基于文法模型的中文纠错系统

    基于文法模型的中文纠错系统 徐明 编译 论文地址:http://www.anthology.aclweb.org/W/W14/W14-6827.pdf 相关开源项目:https://github.co ...

  5. 频域串联滞后校正matlab,控制工程基础(基于Matlab的线性系统串联校正)

    <控制工程基础(基于Matlab的线性系统串联校正)>由会员分享,可在线阅读,更多相关<控制工程基础(基于Matlab的线性系统串联校正)(16页珍藏版)>请在人人文库网上搜索 ...

  6. 基于 PacBio 测序数据的纠错算法评测与剪切位点识别研究

    基于 PacBio 测序数据的纠错算法评测与剪切位点识别研究 摘 要 高通量测序技术的产生和发展催生了许多大规模基因测序项目, 如国际千人基 因组计划. 英国 UK10K 计划以及中国的百万人群基因组 ...

  7. 基于Lucene的中文文本分词

    王继明,杨国林 (内蒙古工业大学信息工程学院,呼和浩特010051) 摘要:中文文本分词技术是文本挖掘领域的一个重要分支,在中国仍然处于发展阶段.Apache Jakarta的开源工程Lucene是一 ...

  8. Lucene5.5.4入门以及基于Lucene实现博客搜索功能

    前言 一直以来个人博客的搜索功能很蹩脚,只是自己简单用数据库的like %keyword%来实现的,所以导致经常搜不到想要找的内容,而且高亮显示.摘要截取等也不好实现,所以决定采用Lucene改写博客 ...

  9. 【转载保存】基于Lucene的近实时搜索引擎优化总结

    一.搜索优化: 在工程领域,越是看起来"简单.确定"的问题,越是难以解决.近实时搜索引擎需要解决的问题只有一个:性能!它包含快速索引,快速搜索,以及索引到搜索的快速生效. 以下为百 ...

最新文章

  1. Python之迭代器,生成器与装饰器
  2. 天涯htmlcss基础框架
  3. Vmware 安装CentOS7时连不上网问题的解决
  4. 掌握这几种 Markdown 语法你就够了
  5. 使用python下载文件_详解使用Python下载文件的几种方法
  6. The application may be doing too much work on its main thread.
  7. 【Daily Scrum】11-26
  8. Cloudera发布全球企业数据成熟度报告,混合云趋势中有效数据战略是关键
  9. 又一国产手机宣布“退出群聊” 小米接盘:曾令万千女性着迷!
  10. 技术思辨:GCN和CNN到底有什么差别?
  11. CodeforcesRound#498 (Div.3)E题Military Problem
  12. c# gerber文件读取_必须收藏的一篇关于:AD18生成gerber文件及用CAM350读取gerber教程...
  13. 紫光m300 路由器与磊科ni360 q360 nr235 ddwrt tomato等互刷折腾备忘
  14. 个人域名备案详细流程(图文并茂)
  15. Eclipse三种文件目录folder,source folder,package的关系及Build Path的作用
  16. 计算机网络中如何看别人的共享文件夹,教大家如何使用网络共享文件夹和手机如何使用电脑端查看网络共享-共享文件夹...
  17. 翻译连载 | JavaScript轻量级函数式编程-第 8 章:列表操作 |《你不知道的JS》姊妹篇...
  18. android 判断是否是数字,是否在数字范围内,是否是字母,下一个字母,小写转大写,大写转小写;
  19. Very Deep Convolutional Networks for Large-Scale Image Recognition—中英文对照
  20. 装机、做系统必备:秒懂MBR和GPT分区表

热门文章

  1. LUNA再次夺冠,科大讯飞向世界宣告自己的实力不止于语音
  2. MFC中简单绘图几种方式
  3. Python 的装饰器执行顺序问题(二)
  4. Node工程-构建优秀的Session机制
  5. Android 学习笔记四:创建工具栏按钮
  6. UVA 1613 K-Graph Oddity K度图着色 (构造)
  7. PHPsymfony
  8. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(4月2日-4月8日)
  9. php __tostring 与 tostring
  10. Programming C# 4th Edition 中文版/英文版 对照阅读体验