IKAnalyzer 分词流程粗览

没有开头语我会死啊~好的,IK是啥、怎么用相信看这篇文章的人都不需要我过多解释了,我也解释不好。下面开始正文:

IK的官方结构图:

从上至下的来看:

  • 最上层是我们不需要过度关心的,它们是一些Adapter供Lucene调用。
  • IK Segmentation对应的主类应该是IKSegmenter,是IK工作的核心组件。提供了分词流程的控制。
  • 词元处理子单元:多个不同算法的词元分词器,实现了对不同类型词元的识别。
  • 词典:主要是给CJKSegmenter提供中文词识别能力的Dictionary封装,词典和词元是如何映射的算法可以认为在这里。

其中IKSegmenter在IK中默认三个实现:

  1. CJKSegmenter 中日韩识别。
  2. CN_QuantifierSegmenter:中文量词识别。
  3. LetterSegmenter:英文字母识别。

IK工作流程

  1. IKAnalyzer为对外入口,IKTokenizer实现了Lucene的Tokenizer接口,作为和Lucene的结合。
  2. IKSegmenter是实际的分词主类。
  3. 在Segmenter中初始化AnalyzeContext给ISegmenter提供识别需要的上下文,Segmenter逐字遍历调用ISegmenter的实现类进行词元识别。——这里大概是最细粒度的来源。
  4. 在【3】中各个Segmenter是相互独立的,即它们完全可以识别出相同或者相互交叉的词元,甚至同一个Segmenter也可以识别出交叉的词元。(交叉词元是如:【中华、中华人民共和国】这样的词元)。
  5. 【3】提供的词元(Lexeme)是可能存在交叉和歧义的,所以IKSegmenter在返回词元之前会调用IKArbitrator来消除歧义——除量词、数词之外的useSmart就是通过这里来消除交叉词的。

IK的正向迭代最细粒度切分算法

最细粒度

已经在3中描述。更具体的说是Segmenter会逐字识别词元,设输入”中华人民共和国“并且”中“单个字也是字典里的一个词,那么过程是这样的:”中“是词元也是前缀(因为有各种中开头的词),加入词元”中“;继续下一个词”华“,由于中是前缀,那么可以识别出”中华“,同时”中华“也是前缀因此加入”中华“词元,并把其作为前缀继续;接下来继续发现“华人”是词元,“中华人”是前缀,以此类推……

迭代:

个人对迭代的理解就应是上述逐个前缀迭代的算法:中、中华、华人、中华人民、人民、中华人民共和国(举例而已,不全)。

正向:

如上就是正向的。

时间: 2024-11-10 11:38:14

IKAnalyzer 分词流程粗览的相关文章

Lucene使用IKAnalyzer分词实例 及 IKAnalyzer扩展词库

文章转载自:http://www.cnblogs.com/dennisit/archive/2013/04/07/3005847.html 方案一: 基于配置的词典扩充 项目结构图如下: IK分词器还支持通过配置IKAnalyzer.cfg.xml文件来扩充您的专有词典.谷歌拼音词库下载: http://ishare.iask.sina.com.cn/f/14446921.html?from=like在web项目的src目录下创建IKAnalyzer.cfg.xml文件,内容如下 <?xml v

lucene分词流程

这一个星期花时间好好学习了一下lucene/solr,今天好好总结一下,写点文章记录点重要的东西,以便日后不至于丈二和尚摸不着头脑, 这一篇文章主要是简单的介绍一下lucene分词过程中的分词流程,和一些简单原理的讲解,希望不妥这处读者能够指正,不胜感激!! (一)主要分词器 WhitespaceAnalyzer.StopAnalyzer.SimpleAnalyzer.KeywordAnalyzer,他们都的父类都是Analazer,在Analazer类中有一个抽象方法叫做tokenStream

IKAnalyzer 分词

IK Analyzer 3.0特性 采用了特有的"正向迭代最细粒度切分算法",具有80万字/秒的高速处理能力 采用了多子处理器分析模式,支持:英文字母(IP地址.Email.URL).数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名.地名处理)等分词处理. 优化的词典存储,更小的内存占用.支持用户词典扩展定义 针对Lucene全文检索优化的查询分析器IKQueryParser:采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率. IK

Solr配置Ikanalyzer分词器

上一篇文章讲解在win系统中如何安装solr并创建一个名为test_core的Core,接下为text_core配置Ikanalyzer 分词器 1.打开text_core的instanceDir目录,并进入conf文件夹: 2.修改managed-schema文件,在里边添加如下配置: <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index"

solr.Net课程三 solr5.5 IKAnalyzer分词配置

在使用IK之前同样也需要下载IK的jar包请点击下载,接下来我们对下载的文件进行配置 第一步:先将IKAnalyzer2012FF_u2.jar文件复制到tomcat目录webapps\solr5.5\WEB-INF\lib下 第二步:将IKAnalyzer.cfg.xml和stopword.dic复制到tomcat目录webapps\solr5.5\WEB-INF\classes下 第三步:修改D:\solr5.5\collection1\conf目录下managed-schema文件,在文件

游戏制作大致流程粗谈之三

这次的粗谈主要细谈游戏策划的七大步骤(来源文库) 一:立项报告 1:了解公司现有的技术资源和技术能力. 2:分析目标消费群体,确定游戏风格 3:确定基本玩法玩点.故事背景. 立项报告讨论通过后方可进入下一个阶段 二:项目初期策划文档 1:游戏类型说明(游戏构架) 2:世界观设定(剧本) 3:玩法玩点详细分析及总结(提出游戏元素并分析) 4:预计开发周期(包括策划.技术分析.代码编写.美工.内部测试.公开测试) 5:提出开发小组人员构成名单 6:工作量预估(按工时预估个人工作量) 7:分析宣传方法

IKanalyzer分词器分词并且统计词频

<dependency> <groupId>com.janeluo</groupId> <artifactId>ikanalyzer</artifactId> <version>2012_u6</version> </dependency> 首先引入 ikanalyzer相关jar包 /** * @Description: * @Author: lizhang * @CreateDate: 2018/7/31

Lucene使用IKAnalyzer分词

1.分析器    所有分析器最终继承的类都是Analyzer        1.1 默认标准分析器:StandardAnalyzer            在我们创建索引的时候,我们使用到了IndexWriterConfig对象,在我们创建索引的过程当中,会经历分析文档的步骤,就是分词的步骤,默认采用的标准分析器自动分词                                    1.1.1 查看分析器的分析效果 public static void main(String[] arg

游戏制作大致流程粗谈之二

上次讲到了游戏原画的制作,在原画师完成原画的创作后,负责建模的同学便需要通过建模工具对原画进行建模,包括游戏的人物模型,场景,物品,等等等等, 游戏建模大致流程如下:1.建立模型   2.UV展开 3.绘制贴图 4.骨骼动画,同时还需要进行编辑的有模型的碰撞体积等等,然后用贴图对模型进行渲染,同时修改 一些材质. 游戏的模型完成后便该有程序员同学来进行代码的编写了,目前比较流行的游戏编程语言有C++,JAVA等,游戏编程接口有DirectX,OpenGL等.编程是游戏制作 环节中耗时最长,工作量