版本对应
这里主要讲elasticsearch8.X对接
Plugin version | Branch version |
---|---|
8.X | 8.x |
7.x | 7.x |
6.x | 6.x |
下载源码
elasticsearch-analysis-hanlp8.7.0
源码下载记得star
在idea中可以直接package打包出来扩展组件
也可以直接在这里下载
解压组件并上传到es中
上传语料库到analysis-hanlp文件下
hanlp汉语自然语言语料包 1.8.4
重启es
重启后hanlp组件即可以使用了
在这里插入代码片
DELETE hanlp_test
PUT hanlp_test
{
"settings": {
"analysis": {
"analyzer": {
"my_hanlp_analyzer": {
"tokenizer": "my_hanlp"
}
},
"tokenizer": {
"my_hanlp": {
"type": "hanlp_crf",
"enable_custom_config": true,
"enable_remote_dict":true
}
}
}
}
}
POST hanlp_test/_analyze
{
"text": ["凡益之道,与时偕行。10年前,面对世界之变、时代之变、历史之变,主席提出人类命运共同体理念。10年来,“上合大家庭”秉承守望相助、同舟共济优良传统,践行共同、综合、合作、可持续的安全观,秉持创新、协调、绿色、开放、共享的发展理念,传承睦邻友好精神,维护国际公平正义,推动着“人类命运共同体”从理念转化为行动、从愿景转变为现实。实践证明,人类命运共同体理念具有强大生命力和感召力。迈向未来,上海合作组织更要秉持这一重要理念,进一步加强团结合作,更好地携手同行"],
"analyzer": "my_hanlp_analyzer"
}
提供的分词方式说明
hanlp: hanlp默认分词
hanlp_standard: 标准分词
hanlp_index: 索引分词
hanlp_nlp: NLP分词
hanlp_crf: CRF分词
hanlp_n_short: N-最短路分词
hanlp_dijkstra: 最短路分词
hanlp_speed: 极速词典分词
自定义分词配置
HanLP在提供了各类分词方式的基础上,也提供了一系列的分词配置,分词插件也提供了相关的分词配置,我们可以在通过如下配置来自定义自己的分词器:
Config | Elastic version |
---|---|
enable_custom_config | 是否开启自定义配置 |
enable_index_mode | 是否是索引分词 |
enable_number_quantifier_recognize | 是否识别数字和量词 |
enable_custom_dictionary | 是否加载用户词典 |
enable_translated_name_recognize | 是否识别音译人名 |
enable_japanese_name_recognize | 是否识别日本人名 |
enable_organization_recognize | 是否识别机构 |
enable_place_recognize | 是否识别地名 |
enable_name_recognize | 是否识别中国人名 |
enable_traditional_chinese_mode | 是否开启繁体中文 |
enable_stop_dictionary | 是否启用停用词 |
enable_part_of_speech_tagging | 是否开启词性标注 |
enable_remote_dict | 是否开启远程词典 |
enable_normalization | 是否执行字符正规化 |
enable_offset | 是否计算偏移量 |
注意: 如果要采用如上配置配置自定义分词,需要设置enable_custom_config为true
自定义分词
自定义分词最简单的方式是将分词文件放到nginx下,通过nginx反向代理。这里使用docker的方式给大家一个参考。
下载Nginx镜像
docker pull nginx:latest
运行nginx镜像
docker run --name nginx -p 80:80 -d nginx
- 参数详解
- –name nginx 指定容器的名称
- -p 80:80 映射端口
- -d 守护进程运行
从nginx容器中映射核心文件
-
1、本地创建文件目录
mkdir -p /opt/docker/nginx/conf.d
mkdir -p /opt/docker/nginx/html
mkdir -p /opt/docker/nginx/logs
mkdir -p /opt/docker/nginx/conf/nginx.conf -
2、拷贝nginx容器对应的文件默认配置
docker cp nginx:/etc/nginx/nginx.conf /opt/docker/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /opt/docker/nginx/conf.d
docker cp nginx:/usr/share/nginx/html /opt/docker/nginx -
3、停止并删除nginx容器
docker stop nginx
docker rm nginx
重新启动nginx镜像重新新容器
docker run -p 80:80 --name nginx --restart=always
-v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /opt/docker/nginx/html:/usr/share/nginx/html \
-v /opt/docker/nginx/logs:/var/log/nginx \
-d nginx
将你的分词文件放到nginx
例如:我们直接复制一份hanlp中的PersonalName.txt文件直接放到/opt/docker/nginx/html文件夹下,
注意:可以将nginx配置文件nginx.conf中的配置user nginx; 修改为user root;
最后重启nginx访问即可
1. 远程扩展字典
其中words_location为URL或者URL+" "+词性,如:
1. http://localhost:8080/mydic
2. http://localhost:8080/mydic nt
第一个样例,是直接配置URL,词典内部每一行代表一个单词,格式遵从[单词] [词性A] [A的频次] [词性B] [B的频次] … 如果不填词性则表示采用词典的默认词性n。
第二个样例,配置词典URL,同时配置该词典的默认词性nt,当然词典内部同样遵循[单词] [词性A] [A的频次] [词性B] [B的频次] … 如果不配置词性,则采用默认词性nt。
2. 远程扩展停止词字典
其中stop_words_location为URL,如:
1. http://localhost:8080/mystopdic
样例直接配置URL,词典内部每一行代表一个单词,不需要配置词性和频次,换行符用 \n 即可。
乱码情况解决:请将你的PersonalName.txt文件格式修改为utf-8-BOM格式。在不行将你的nginx配置添加 也修改为utf-8
开启自定义分词
修改你的hanlp-remote.xml 文件
PUT hanlp_test
{
"settings": {
"analysis": {
"analyzer": {
"my_hanlp_analyzer": {
"tokenizer": "my_hanlp"
}
},
"tokenizer": {
"my_hanlp": {
"type": "hanlp_crf",
"enable_custom_config": true,
"enable_remote_dict":true
}
}
}
}
}
这样你就可以使用你自己的分词了。