转自:https://blog.csdn.net/lala12d/article/details/82776571
仅供学习

1、IK分词器也是基于正向匹配的分词算法。

2、IK分词器,基本可分为两种模式,一种为smart模式,一种为非smart模式

3、非smart模式所做的就是将能够分出来的词全部输出;smart模式下,IK分词器则会根据内在方法输出一个认为最合理的分词结果,这就涉及到了歧义判断

4、Lexeme 词元,compareTo(Lexeme other)这个方法决定了词元在链路中的位置

5、LexemePath词元链,分词的一种结果,根据前后顺序组成一个链式结构,其实就是由交叉的Lexeme 组成的有序集合QuickSortSet。LexemePath也是实现Comparable接口的,用于歧义分析

实例:张三说的确实在理

根据正向匹配可能的词元链:

L1:{张三,张,三}

L2:{说}

L3:{的确,的,确实,确,实在,实,在理,在,理}

LexemePath之间是不交叉的,LexemePath内部的词元间是交叉的

下面是核心代码

public intcompareTo(Lexemeother) {//起始位置优先if(this.begin< other.getBegin()){return -1;}elseif(this.begin== other.getBegin()){//词元长度优先if(this.length> other.getLength()){return-1;}elseif(this.length== other.getLength()){return0;}else{//this.length< other.getLength()return1;}}else{//this.begin> other.getBegin()return1;}}

如果是非smart模式,分词到词结束,把所有的词元全部返回即可

在smart模式下需进行消除岐义.

消除岐义的算法和步骤如下

取LexemePath中不交叉词元组成新的LexemePath

L1对应的词元链如下:

L11:{张三}

L12:{张}

L13:{三}

L3对应的词元链如下

L31:{的,确实,在理}

L32:{的确,实,在理}

L33:{的确,实在,理}

L34:{的确,实在}

L35:{确实,在理}

L36:{确实}

smart模式岐义消除算法:

public intcompareTo(LexemePatho) {

规则1:比较有效文本长度

L31:{的,确实,在理}

L32:{的确,实,在理}

L33:{的确,实在,理}

规则2: //比较词元个数,越少越好

规则3: //路径跨度越大越好

规则4: //根据统计学结论,逆向切分概率高于正向切分,因此位置越靠后的优先(从代码中看来

没有发现其具体实际意义)

规则5: //词长越平均越好(词元长度相乘)

规则6: //词元位置权重比较(词元长度积),含义是选取长的词元位置在后的集合

L31:{的,确实,在理}11+22+3*2=11

L32:{的确,实,在理} 12+21+3*2=10

L33:{的确,实在,理} 12+22+3*1=9

最后的分词结果:张三,说,的,确实,在理
————————————————

原文链接:https://blog.csdn.net/lala12d/article/details/82776571

ik中文分词器分词原则、原理相关推荐

  1. 中文分词器分词效果的评测方法

    [原创]中文分词器分词效果的评测方法 2013年8月27日 由 learnhard留言 » 转载请注明出处:http://www.codelast.com/ 现在有很多开源的中文分词器库,如果你的项目 ...

  2. 公司开源的java分词,Java开源项目cws_evaluation:中文分词器分词效果评估

    通过对前文<word分词器.ansj分词器.mmseg4j分词器.ik-analyzer分词器分词效果评估>中写的评估程序进行重构改进,形成了一个新的Java开源项目cws_evaluat ...

  3. word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器分词效果评估(转)

    转自:http://yangshangchuan.iteye.com/blog/2056537(有代码可下载) word分词器.ansj分词器.mmseg4j分词器.ik-analyzer分词器分词效 ...

  4. word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器分词效果评估

    2019独角兽企业重金招聘Python工程师标准>>> word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义. 能准确识别英文. ...

  5. ik分词器 分词原理_Solr7.7.2中文分词器

    中文分词器的配置 1.7版本之后solr内置了中文分词器所以可以使用solr内置的分词器进行配置 1.在解压的目录内找到分词器包 2.将包放在solr项目的lib下 3.修改配置文件修改他下面的con ...

  6. ik分词器 分词原理_ElasticSearch 集成Ik分词器

    1 . 由于 ElasticSearch 默认的分词器不支持中文分词,所以我们需要集成IK 分词器. 2. 集成步骤 https://github.com/medcl/elasticsearch-an ...

  7. elasticsearch倒排索引原理与中文分词器

    1. 索引的方式: 1.1 正向索引 正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档. 这种组织方法在建立索引的时候结构 ...

  8. ElasticSearch基础2之倒排索引原理和中文分词器es-ik

    正向索引与倒排索引 正向索引        正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档.        这种组织方法 ...

  9. Elasticsearch7.15.2 集成ik中文分词器 适用于单机和集群

    文章目录 一.下载部署 1. 版本对应 2. 下载ik 3. 目录权限 4. 切换es用户 5. 启动es 6. 验证es 7. 切换kibana 用户 8. 启动kibana 9. 验证kibana ...

最新文章

  1. 图像验证码识别(七)——字符分割
  2. Eclipse中Junit测试中@Before不执行
  3. 源于十年来的点滴积累——《变革中的思索》印行出版
  4. leetcode 102 C++AC
  5. 哈工大成立人工智能研究院,NLP全国第三
  6. 数据结构 3-2-2 队列的顺序存储实现
  7. [转载] python字符串处理函数汇总
  8. 存储分析:RAID技术走向何方?
  9. Rearchitect Your Web Applications for Microsoft ASP.NET 2.0
  10. php写接口时应该用return还是echo返回数据
  11. 智能工厂仓库管理系统软件有哪些哪家好呢
  12. Session.AUTO_ACKNOWLEDGE
  13. JAVA1.8开发工具使用系列 故障排除之jcmd
  14. 如何正确使用关键路径图?
  15. Cognos入门教程
  16. Mac 5年了 清理了一下多出了 70个G
  17. 力扣数据库题目刷题日记
  18. [转]《101个爱情故事》
  19. Go与Nginx(lua-resty-string)跨语言加解密
  20. vscode 编译so库,并且引用so库调试

热门文章

  1. 【数一】【概率论与数理统计】
  2. 第9天:CSS精灵图
  3. 推荐几本Android程序员必读书籍
  4. HttpServletResponse响应图片,文字
  5. 滴滴数据仓库指标体系建设实践
  6. 如何将QQ音乐SQ品质FLAC格式转换成MP3音乐
  7. C语言实现模拟键盘输入字符串
  8. 从零点一开始机器学习之GPU运算性能和CPU性能对比(GPU算力表)
  9. Scratch少儿编程思维题目:汉诺塔游戏
  10. Java自己封装mysql框架_java封装