elasticsearch8.X对接HanLP的扩展和方法

版本对应

这里主要讲elasticsearch8.X对接

Plugin versionBranch version
8.X8.x
7.x7.x
6.x6.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在提供了各类分词方式的基础上,也提供了一系列的分词配置,分词插件也提供了相关的分词配置,我们可以在通过如下配置来自定义自己的分词器:

ConfigElastic 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
        }
      }
    }
  }
}

这样你就可以使用你自己的分词了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈尔日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值