1.概述

转载: https://blog.csdn.net/tzs_1041218129/article/details/77887767

分词器首先看文章:【Elasticsearch】Elasticsearch analyzer 分词器

【Es】ElasticSearch 自定义分词器

2.ik-analyzer

https://github.com/wks/ik-analyzer

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。

采用了特有的“正向迭代最细粒度切分算法“,支持细粒度和最大词长两种切分模式;具有83万字/秒(1600KB/S)的高速处理能力

采用了多子处理器分析模式,支持:英文字母、数字、中文词汇等分词处理,兼容韩文、日文字符

优化的词典存储,更小的内存占用。支持用户词典扩展定义

针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);引入简单搜索表达式,采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。

Maven用法:

<dependency><groupId>org.wltea.ik-analyzer</groupId><artifactId>ik-analyzer</artifactId><version>3.2.8</version>
</dependency>

IK Analyzer加入Maven Central Repository之前,你需要手动安装,安装到本地的repository,或者上传到自己的Maven repository服务器上。

要安装到本地Maven repository,使用如下命令,将自动编译,打包并安装:

mvn install -Dmaven.test.skip=true

2.1 Elasticsearch添加中文分词

安装IK分词插件
https://github.com/medcl/elasticsearch-analysis-ik

进入elasticsearch-analysis-ik-master

更多安装请参考博客:

1、为elastic添加中文分词

2、如何在Elasticsearch中安装中文分词器(IK+pinyin)

3、Elasticsearch 中文分词器 IK 配置和使用

2、结巴中文分词

特点:
1、支持三种分词模式:

  1. 精确模式,试图将句子最精确地切开,适合文本分析;

  2. 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

  3. 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

2、支持繁体分词

3、支持自定义词典

3、THULAC

THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC具有如下几个特点:

能力强。利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大

准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。

速度较快。同时进行分词和词性标注速度为300KB/s每秒可处理约15万字只进行分词速度可达到1.3MB/s

中文分词工具thulac4j发布

1、规范化分词词典,并去掉一些无用词;

2、重写DAT(双数组Trie树)的构造算法,生成的DAT size减少了8%左右,从而节省了内存

3、优化分词算法,提高了分词速率

<dependency><groupId>io.github.yizhiru</groupId><artifactId>thulac4j</artifactId><version>${thulac4j.version}</version>
</dependency>

http://www.cnblogs.com/en-heng/p/6526598.html

thulac4j支持两种分词模式:

SegOnly模式,只分词没有词性标注;

SegPos模式,分词兼有词性标注。

// SegOnly mode
String sentence = "滔滔的流水,向着波士顿湾无声逝去";
SegOnly seg = new SegOnly("models/seg_only.bin");
System.out.println(seg.segment(sentence));
// [滔滔, 的, 流水, ,, 向着, 波士顿湾, 无声, 逝去]// SegPos mode
SegPos pos = new SegPos("models/seg_pos.bin");
System.out.println(pos.segment(sentence));
//[滔滔/a, 的/u, 流水/n, ,/w, 向着/p, 波士顿湾/ns, 无声/v, 逝去/v]

4、NLPIR

中科院计算所 NLPIR:http://ictclas.nlpir.org/nlpir/ (可直接在线分析中文)

下载地址:https://github.com/NLPIR-team/NLPIR

中科院分词系统(NLPIR)JAVA简易教程: http://www.cnblogs.com/wukongjiuwo/p/4092480.html

5、ansj分词器

https://github.com/NLPchina/ansj_seg

这是一个基于n-Gram+CRF+HMM的中文分词的java实现.

分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上

目前实现了.中文分词. 中文姓名识别 .

用户自定义词典,关键字提取,自动摘要,关键字标记等功能
可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目.

maven 引入:

<dependency><groupId>org.ansj</groupId><artifactId>ansj_seg</artifactId><version>5.1.1</version>
</dependency>

调用demo

String str = "欢迎使用ansj_seg,(ansj中文分词)在这里如果你遇到什么问题都可以联系我.我一定尽我所能.帮助大家.ansj_seg更快,更准,更自由!" ;System.out.println(ToAnalysis.parse(str));欢迎/v,使用/v,ansj/en,_,seg/en,,,(,ansj/en,中文/nz,分词/n,),在/p,这里/r,如果/c,你/r,遇到/v,什么/r,问题/n,都/d,可以/v,联系/v,我/r,./m,我/r,一定/d,尽我所能/l,./m,帮助/v,大家/r,./m,ansj/en,_,seg/en,更快/d,,,更/d,准/a,,,更/d,自由/a,!

6、哈工大的LTP

https://link.zhihu.com/?target=https%3A//github.com/HIT-SCIR/ltp

LTP制定了基于XML的语言处理结果表示,并在此基础上提供了一整套自底向上的丰富而且高效的中文语言处理模块(包括词法、句法、语义等6项中文处理核心技术),以及基于动态链接库(Dynamic Link Library, DLL)的应用程序接口、可视化工具,并且能够以网络服务(Web Service)的形式进行使用。

关于LTP的使用,请参考: http://ltp.readthedocs.io/zh_CN/latest/

7、庖丁解牛

下载地址:http://pan.baidu.com/s/1eQ88SZS

使用分为如下几步:

1.配置dic文件:

修改paoding-analysis.jar中的paoding-dic-home.properties文件,将“#paoding.dic.home=dic”的注释去掉,并配置成自己dic文件的本地存放路径。eg:/home/hadoop/work/paoding-analysis-2.0.4-beta/dic

2.把Jar包导入到项目中:

paoding-analysis.jar、commons-logging.jar、lucene-analyzers-2.2.0.jar和lucene-core-2.2.0.jar四个包导入到项目中,这时就可以在代码片段中使用庖丁解牛工具提供的中文分词技术,例如:

Analyzer analyzer = new PaodingAnalyzer(); //定义一个解析器
String text = "庖丁系统是个完全基于lucene的中文分词系统,它就是重新建了一个analyzer,叫做PaodingAnalyzer,这个analyer的核心任务就是生成一个可以切词TokenStream。"; <span style="font-family: Arial, Helvetica, sans-serif;">//待分词的内容</span>
TokenStream tokenStream = analyzer.tokenStream(text, new StringReader(text)); //得到token序列的输出流
try {Token t;while ((t = tokenStream.next()) != null){System.out.println(t); //输出每个token}
} catch (IOException e) {e.printStackTrace();
}

8、sogo在线分词

sogo在线分词采用了基于汉字标注的分词方法,主要使用了线性链链CRF(Linear-chain CRF)模型。词性标注模块主要基于结构化线性模型(Structured Linear Model)

在线使用地址为:
http://www.sogou.com/labs/webservice/

9、word分词

地址: https://github.com/ysc/word

word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过自定义配置文件来改变组件行为,能自定义用户词库、自动检测词库变化、支持大规模分布式环境,能灵活指定多种分词算法,能使用refine功能灵活控制分词结果,还能使用词频统计、词性标注、同义标注、反义标注、拼音标注等功能。提供了10种分词算法,还提供了10种文本相似度算法,同时还无缝和Lucene、Solr、ElasticSearch、Luke集成。注意:word1.3需要JDK1.8

maven 中引入依赖:

<dependencies><dependency><groupId>org.apdplat</groupId><artifactId>word</artifactId><version>1.3</version></dependency>
</dependencies>

ElasticSearch插件:

1、打开命令行并切换到elasticsearch的bin目录
cd elasticsearch-2.1.1/bin2、运行plugin脚本安装word分词插件:
./plugin install http://apdplat.org/word/archive/v1.4.zip安装的时候注意:如果提示:ERROR: failed to download或者Failed to install word, reason: failed to download或者ERROR: incorrect hash (SHA1)则重新再次运行命令,如果还是不行,多试两次如果是elasticsearch1.x系列版本,则使用如下命令:
./plugin -u http://apdplat.org/word/archive/v1.3.1.zip -i word3、修改文件elasticsearch-2.1.1/config/elasticsearch.yml,新增如下配置:
index.analysis.analyzer.default.type : "word"
index.analysis.tokenizer.default.type : "word"4、启动ElasticSearch测试效果,在Chrome浏览器中访问:
http://localhost:9200/_analyze?analyzer=word&text=杨尚川是APDPlat应用级产品开发平台的作者5、自定义配置
修改配置文件elasticsearch-2.1.1/plugins/word/word.local.conf6、指定分词算法
修改文件elasticsearch-2.1.1/config/elasticsearch.yml,新增如下配置:
index.analysis.analyzer.default.segAlgorithm : "ReverseMinimumMatching"
index.analysis.tokenizer.default.segAlgorithm : "ReverseMinimumMatching"这里segAlgorithm可指定的值有:
正向最大匹配算法:MaximumMatching
逆向最大匹配算法:ReverseMaximumMatching
正向最小匹配算法:MinimumMatching
逆向最小匹配算法:ReverseMinimumMatching
双向最大匹配算法:BidirectionalMaximumMatching
双向最小匹配算法:BidirectionalMinimumMatching
双向最大最小匹配算法:BidirectionalMaximumMinimumMatching
全切分算法:FullSegmentation
最少词数算法:MinimalWordCount
最大Ngram分值算法:MaxNgramScore
如不指定,默认使用双向最大匹配算法:BidirectionalMaximumMatching

10、jcseg分词器

https://code.google.com/archive/p/jcseg/

11、stanford分词器

Stanford大学的一个开源分词工具,目前已支持汉语。

首先,去【1】下载Download Stanford Word Segmenter version 3.5.2,取得里面的 data 文件夹,放在maven projectsrc/main/resources 里。

然后,maven依赖添加:

<properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><corenlp.version>3.6.0</corenlp.version></properties><dependencies><dependency><groupId>edu.stanford.nlp</groupId><artifactId>stanford-corenlp</artifactId><version>${corenlp.version}</version></dependency><dependency><groupId>edu.stanford.nlp</groupId><artifactId>stanford-corenlp</artifactId><version>${corenlp.version}</version><classifier>models</classifier></dependency><dependency><groupId>edu.stanford.nlp</groupId><artifactId>stanford-corenlp</artifactId><version>${corenlp.version}</version><classifier>models-chinese</classifier></dependency></dependencies>

测试:

import java.util.Properties;import edu.stanford.nlp.ie.crf.CRFClassifier;public class CoreNLPSegment {private static CoreNLPSegment instance;private CRFClassifier         classifier;private CoreNLPSegment(){Properties props = new Properties();props.setProperty("sighanCorporaDict", "data");props.setProperty("serDictionary", "data/dict-chris6.ser.gz");props.setProperty("inputEncoding", "UTF-8");props.setProperty("sighanPostProcessing", "true");classifier = new CRFClassifier(props);classifier.loadClassifierNoExceptions("data/ctb.gz", props);classifier.flags.setProperties(props);}public static CoreNLPSegment getInstance() {if (instance == null) {instance = new CoreNLPSegment();}return instance;}public String[] doSegment(String data) {return (String[]) classifier.segmentString(data).toArray();}public static void main(String[] args) {String sentence = "他和我在学校里常打桌球。";String ret[] = CoreNLPSegment.getInstance().doSegment(sentence);for (String str : ret) {System.out.println(str);}}}

博客:

https://blog.sectong.com/blog/corenlp_segment.html

http://blog.csdn.net/lightty/article/details/51766602

12、Smartcn

Smartcn为Apache2.0协议的开源中文分词系统,Java语言编写,修改的中科院计算所ICTCLAS分词系统。很早以前看到Lucene上多了一个中文分词的contribution,当时只是简单的扫了一下.class文件的文件名,通过文件名可以看得出又是一个改的ICTCLAS的分词系统。

http://lucene.apache.org/core/5_1_0/analyzers-smartcn/org/apache/lucene/analysis/cn/smart/SmartChineseAnalyzer.html

【Elasticsearch】Elasticsearch analyzer 中文 分词器相关推荐

  1. 如何在Elasticsearch中安装中文分词器(IK+pinyin)

    如何在Elasticsearch中安装中文分词器(IK+pinyin) 如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当 ...

  2. 采访IK Analyzer 中文分词器开源项目作者林良益(十三)

    转自: http://www.iteye.com/magazines/43-ik-analyzer 众所周知,全文搜索几乎已经成为每个网站的必须提供的基本功能之一,用Lucene构造一个"索 ...

  3. ElasticSearch 中的中文分词器以及索引基本操作详解

    文章目录 1.ElasticSearch 分词器介绍 1.1 内置分词器 1.2 中文分词器 1.2.1 安装 1.2.2 测试 1.2.3 自定义扩展词库 1.2.3.1 本地自定义 1.2.3.2 ...

  4. Elasticsearch:IK 中文分词器

    Elasticsearch 内置的分词器对中文不友好,只会一个字一个字的分,无法形成词语,比如: POST /_analyze {"text": "我爱北京天安门&quo ...

  5. ElasticSearch 中的中文分词器该怎么玩?_03

    内置分词器 ElasticSearch 核心功能就是数据检索,首先通过索引将文档写入 es.查询分析则主要分为两个步骤: 词条化:分词器将输入的文本转为一个一个的词条流. 过滤:比如停用词过滤器会从词 ...

  6. Elasticsearch:hanlp 中文分词器

    HanLP 中文分词器是一个开源的分词器,是专为Elasticsearch而设计的.它是基于HanLP,并提供了HanLP中大部分的分词方式.它的源码位于: https://github.com/Ke ...

  7. Elasticsearch 7.X 中文分词器 ik 使用,及词库的动态扩展

    一.ik中文分词器 上篇文章我们学习了ES集群分片和水平扩容,前面再使用的时候应该就会发现,在做match 匹配时,默认会进行分词,但当查询内容是中文时,分词效果是一个字被认定了一个词,这显然不符合我 ...

  8. Elasticsearch配置ik中文分词器自定义词库

    1.IK配置文件 在config目录下: IKAnalyzer.cfg.xml:配置自定义词库 main.dic:分词器自带的词库,索引会按照里面的词创建 quantifier.dic:存放计量单位词 ...

  9. IK Analyzer 中文分词器

    IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包.从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本.最初,它是以开源项目Luence为应用 ...

最新文章

  1. python打包成exe可执行文件指定进程名字
  2. 如何管理并设计你的口令
  3. 关于MySQL出现锁等待lock wait timeout exceeded; try restarting transaction 的解决方案
  4. 常用损失函数(L1、L2、SSIM和MS-SSIM)对比简介
  5. Specified key was too long; max key length is 767 bytes
  6. log4net 日志跟踪
  7. 大型网络整体安装与配置解决方案
  8. ext 不能修改 输入框_浏览器文本框不能输入文字解决方法
  9. 计算机职业素养论文1500字,职业素养论文1500字 [职业素养教育论文]
  10. kindle刷机ttl_“免费” PHICOMM 斐讯 K2路由器TTL刷机全纪录
  11. HICE-SSH使用RSA认证方式进行登陆
  12. Word中公式输入的快捷键
  13. SylixOS动态内存分配操作
  14. 【超纯水制备技术分享】超纯水工艺设计流程以及纯水系统前处理技术——离子交换脱盐工艺介绍
  15. 数据结构(0719-林雪阵)
  16. TYPEC转HDMI+PD3.0 分辨率4K60Hz拓展坞方案:CS5269
  17. MySQL ('root'@'%') does not exist的问题
  18. Heap的讲解 - 介绍
  19. Windows设置本地DNS域名解析Hosts文件的方法
  20. CVPR-2021 | RepVGG:极简架构,SOTA性能,让VGG式模型再次伟大

热门文章

  1. 吉利汽车终止科创板IPO
  2. 苹果隐私部门负责人:在iPhone上侧载应用会减少用户选择
  3. 工信部:要实现并完善针对老年人增设的“一键进入”人工客服功能
  4. 库克:明天将宣布重大消息 但不是新产品
  5. 官方正式预热华为Mate40系列发布盛典:余承东称还有新功能
  6. 澄清谣言!微盟创始人回应员工删库:涉事者深陷网贷,有过轻生
  7. 卖肾换来一部iPhone后生活不能自理,那手机电商平台现在卖10块钱!
  8. 屏下摄像头技术来了!OPPO FindX2有望率先搭载
  9. 华为手机多久可以摆脱美国技术依赖?任正非放出豪言!
  10. 2499元!Beats最新降噪耳机Solo Pro来了:加入降噪、通透两种模式