基于 HanLP 的 Elasticsearch 中文分词插件,核心功能:

兼容 ES 5.x-7.x;

内置词典,无需额外配置即可使用;

支持用户自定义词典;

支持远程词典热更新(待开发);

内置多种分词模式,适合不同场景;

拼音过滤器(待开发);

简繁体转换过滤器(待开发)。

版本

插件版本和 ES 版本一致,直接下载对应版本的插件进行安装即可。

·插件开发完成时,最新版本已经为 6.5.2 了,所以个人只对典型的版本进行了测试;

·5.X 在 5.0.0、5.5.0 版本进行了测试;

·6.X 在 6.0.0、6.3.0、6.4.1、6.5.1 版本进行了测试;

·7.X 在 7.0.0 版本进行了测试。

 

安装使用

下载编译

git clone 对应版本的代码,打开 pom.xml 文件,修改 <elasticsearch.version>6.5.1</elasticsearch.version> 为需要的 ES 版本;然后使用 mvn package 生产打包文件,最终文件在 target/release 文件夹下。

打包完成后,使用离线方式安装即可。

使用默认词典

·在线安装:.\elasticsearch-plugin install github.com/AnyListen/elasticsearch-analysis-hanlp/releases/download/vA.B.C/elasticsearch-analysis-hanlp-A.B.C.zip

·离线安装:.\elasticsearch-plugin install file:///FILE_PATH/elasticsearch-analysis-hanlp-A.B.C.zip

离线安装请把 FILE_PATH 更改为 zip 文件路径;A、B、C 对应的是 ES 版本号。

使用自定义词典

默认词典是精简版的词典,能够满足基本需求,但是无法使用感知机和 CRF 等基于模型的分词器。

HanLP 提供了更加完整的词典,请按需下载。

词典下载后,解压到任意目录,然后修改插件安装目录下的 hanlp.properties 文件,只需修改第一行

root=D:/JavaProjects/HanLP/

为 data 的父目录即可,比如 data 目录是 /Users/hankcs/Documents/data,那么 root=/Users/hankcs/Documents/。

使用自定义配置文件

如果你在其他地方使用了 HanLP,希望能够复用 hanlp.properties 文件,你只需要修改插件安装目录下的 plugin.properties 文件,将 configPath 配置为已有的 hanlp.properties 文件地址即可。

内置分词器

分析器(Analysis)

·hanlp_index:细粒度切分

·hanlp_smart:常规切分

·hanlp_nlp:命名实体识别

·hanlp_per:感知机分词

·hanlp_crf:CRF分词

·hanlp:自定义

分词器(Tokenizer)

·hanlp_index:细粒度切分

·hanlp_smart:常规切分

·hanlp_nlp:命名实体识别

·hanlp_per:感知机分词

·hanlp_crf:CRF分词

·hanlp:自定义

 

自定义分词器

插件有较为丰富的选项允许用户自定义分词器,下面是可用的配置项:


案例展示:

# 创建自定义分词器

PUT my_index

{

"settings": {

"analysis": {

"analyzer": {

"my_analyzer": {

"type": "hanlp",

"algorithm": "viterbi",

"enableIndexMode": "true",

"enableCustomDictionary": "true",

"customDictionaryPath": "",

"enableCustomDictionaryForcing": "false",

"enableStopWord": "true",

"stopWordDictionaryPath": "",

"enableNumberQuantifierRecognize": "true",

"enableNameRecognize": "true",

"enableTranslatedNameRecognize": "true",

"enableJapaneseNameRecognize": "true",

"enableOrganizationRecognize": "true",

"enablePlaceRecognize": "true",

"enableTraditionalChineseMode": "false"

}

}

}

}

}

# 测试分词器

POST my_index/_analyze

{

"analyzer": "my_analyzer",

"text": "张惠妹在上海市举办演唱会啦"

}

分词速度(仅供参考)

借助 _analyze API(1核1G单线程),通过改变分词器类型,对 2W 字的文本进行分词,以下为从请求到返回的耗时:


HanLP Analysis for Elasticsearch的更多相关文章

  1. ElasticSearch使用IK中文分词---安装步骤记录

    提示1:必须保证之前的ES中不存在index, 否则ES集群无法启动, 会提示red! 提示2:下载的IK如果太新,会报错 TokenStream被重载Caused by: java.lang.Ver ...

  2. Elasticsearch入门教程之安装与基本使用

    ubuntu16.04+elasticsearch6.5为例,参考官网文档https://www.elastic.co/guide/en/elasticsearch/reference/current ...

  3. Elasticsearch入门之从零开始安装ik分词器

    起因 需要在ES中使用聚合进行统计分析,但是聚合字段值为中文,ES的默认分词器对于中文支持非常不友好:会把完整的中文词语拆分为一系列独立的汉字进行聚合,显然这并不是我的初衷.我们来看个实例: POST ...

  4. Install elasticsearch-head: – for Elasticsearch 5.x

    Running as a plugin of Elasticsearch Install elasticsearch-head:– for Elasticsearch 5.x:site plugins ...

  5. ElasticSearch速学 - IK中文分词器远程字典设置

    前面已经对”IK中文分词器“有了简单的了解:  但是可以发现不是对所有的词都能很好的区分,比如:  逼格这个词就没有分出来. 词库 实际上IK分词器也是根据一些词库来进行分词的,我们可以丰富这个词库. ...

  6. Elasticsearch集群使用ik分词器

    IK分词插件的安装 ES集群环境 VMWare下三台虚拟机Ubuntu 14.04.2 LTS JDK 1.8.0_66 Elasticsearch 2.3.1 elasticsearch-jdbc- ...

  7. Linux安装ElasticSearch-2.2.0-分词器插件(IK)

    1.在gitpub上搜索elasticsearch-analysis,能够看到所有elasticsearch的分词器: 2.安装IK分词器:https://github.com/medcl/elast ...

  8. Elastic Search的学习

    那些必须要知道的事儿 自然语言处理 自然语言处理之中文分词器 什么是Apache Lucene 什么是elasticsearch 搭建elasticsearch环境 Windows下 Java环境配置 ...

  9. ELK Stack 5.2.2 安装文档

    简介: ELK Stack 安装文档,这次都使用最新版本(5.2.2).RPM 包的方式搭建 ELK Stack. 下载地址: https://artifacts.elastic.co/downloa ...

随机推荐

  1. 使用python进行24bit音频处理

    import struct # datalike=b'\x00\x00\x02\xff\xff\xff' #b'\xff\xff\xff\xff\xff\xff' import audioop cla ...

  2. unity3d 数据加/解密

    [/font]using System.Collections; using System.Text; using System.Security.Cryptography; using System ...

  3. NOIP2007奖学金题解——洛谷1093

    题目描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高 ...

  4. MAVEN项目不扫描mybatis的mapper.xml问题

    在使用maven+mybatis+spring在开发的时候,遇到问题,总是找不到mapper.xml文件里定义的方法.检查后发现maven编译后并没有将xml文件打包到输出路径,导致bean创建失败. ...

  5. 《团队-爬虫豆瓣top250项目-团队一阶段互评》

    团队名称:咣咣踹电脑 学号:2015035107217姓名:耿文浩 得分10 原因:组长带领的好,任务分配的好,积极帮助组员解决问题 学号:2015035107213姓名:周鑫 得分8 原因:勇于分担 ...

  6. tp5 删除服务器文件

    public function test(){ //ROOT_PATH . 'public' . DS . 'uploads' $filename = ROOT_PATH . 'public' . D ...

  7. java 二分法学习

    假设有一个数组 { 12, 23, 34, 45, 56, 67, 77, 89, 90 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1.代码如下: package ...

  8. 关于django用户登录认证中的cookie和session

    最近弄django的时候在用户登录这一块遇到了困难,网上的资料也都不完整或者存在缺陷. 写这篇文章的主要目的是对一些刚学django的新手朋友提供一些帮助.前提是你对django中的session和c ...

  9. Javascript 严格模式(strict mode)详解

    Javascript 严格模式详解   一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Ja ...

  10. Hadoop、Strom集群实现日志自动清理

    Hadoop+Storm集群,运行一段时间ZooKeeper等关键进程自动停止运行,经检测是系统磁盘不足 系统磁盘100%: 查找大文件后发现,空间均被ZooKeeper产生的log占用 find / ...