18 Star 192 Fork 43

Indexea / ideaseg

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
Clone or Download
Readme_zh.md 5.39 KB
Copy Edit Raw Blame History
Indexea authored 2023-10-10 15:19 . add ideaseg_multilang analyzer

ideaseg

ideasegIndexea 推出的一个基于最新的 HanLP 自然语言处理工具包实现的中文分词器, 包含了最新的模型数据,同时移除了 HanLP 所包含的非商业友好许可的 NeuralNetworkParser 相关代码和数据。

HanLP 相比其他诸如 IKjcseg 等分词器而言,在分词的准确率上有巨大的提升,但速度上有所牺牲。 通过对 HanLP 进行优化配置,ideaseg 在准确度和分词速度上取得了最佳的平衡。

与其他基于 HanLP 的插件相比,ideaseg 同步了最新 HanLP 的代码和数据,去除了无法商用的相关内容;实现了自动配置; 包含了模型数据,无需自行下载,使用简单方便。

ideaseg 提供三个模块包括:

  1. core ~ 核心分词器模块
  2. elasticsearch ~ ElasticSearch 的 ideaseg 分词插件 (最高支持 7.10.2 版本)
  3. opensearch ~ OpenSearch 的 ideaseg 分词插件 (默认版本 2.4.1)

关于 ElasticSearch 的版本说明,由于从 7.11.1 版本开始 Elastic 修改 ES 的许可证,同时修改了插件的权限策略, 不再允许插件对文件进行读写。由于 HanLP 本身的模型数据很大,为了提升速度其处理机制需要在插件的数据目录下生成一些相当于缓存的文件。 因此,如果你使用的是 ElasticSearch 请尽量用 7.10.2 或者以下的版本,推荐使用 OpenSearch

此外 data 包含 HanLP 的模型数据。

由于包含数据模型体积较大(打包后四五百兆),再加上 ElasticSearch 的插件机制严格绑定引擎本身的版本,而且版本众多,因此本项目不提供预编译的二进制版本,你需要自行下载源码进行构建。

构建

以下是插件的构建过程,在开始之前请先安装好 gitjavamaven 等相关工具。

首先确定你的 ElasticSearch 或者 OpenSearch 的具体版本,假设你使用的是 ElasticSearch 7.10.2 版本, 请使用文本编辑器打开 ideaseg/elasticsearch/pom.xml 文件,修改 elasticsearch.version 对应的值为 7.10.2 (如果是 OpenSearch 请修改 opensearch/pom.xml)。

保存文件并打开命令行窗口,执行如下命令开始构建:

$ git clone https://gitee.com/indexea/ideaseg
$ cd ideaseg
$ mvn install

构建完成后,将在 elasticsearch/targetopensearch/target 各生成两个插件文件为 ideaseg.zip

安装

构建完成后,我们可以利用 ElasticSearchOpenSearch 提供的插件管理工具进行安装。

ElasticSearch 对应的插件管理工具为 <elasticsearch>/bin/elasticsearch-plugin , 而 OpenSearch 对应的管理工具为 <opensearch>/bin/opensearch-plugin。 其中 <elasticsearch><opensearch> 为两个服务安装后所在的目录。

ElasticSearch 安装 ideaseg 插件

$ bin/elasticsearch-plugin install file:///<ideaseg>/elasticsearch/target/ideaseg.zip

OpenSearch 安装 ideaseg 插件

$ bin/opensearch-plugin install file:///<ideaseg>/opensearch/target/ideaseg.zip

安装完插件后启动失败的处理方法

由于新版本的 ElasticSearchOpenSearch 在安全策略上有所变化,因此在安装完插件后可能会出现启动失败的情况。

出现这种情况可以复制本项目中的 jvm.policy 文件到 <elasticsearch>/config 或者 <opensearch>/config 目录下, 然后修改 jvm.options 文件,在文件末尾添加如下内容:

-Djava.security.policy=<elasticsearch>/config/jvm.policy

其中 <ideaseg>ideaseg 源码所在的路径。要特别注意到是路径前必须有 file:// ,如果是 Windows 系统,则需要路径前添加 file:/// ,例如 file:///D:\WORKDIR\Indexea\ideaseg\elasticsearch\target\ideaseg.zip

安装过程会询问插件所需的权限,回车确认即可完成安装,安装完毕需要重启服务才能让插件生效。

接下来你可以使用分词测试工具来对插件进行测试,如下所示:

POST _analyze
{
  "analyzer": "ideaseg",
  "text":     "你好,我用的是 ideaseg 分词插件。"
}

ideaseg 提供三种分词模式,分别是:

名称 analyzer 版本 说明
标准中文分词 ideaseg v1.0 支持 NLP 技术的普通中文分词器
带拼音的中文分词 ideaseg_pinyin v1.0 在标准中文分词基础上增加拼音,同时保留原始的中文
支持多语种的中文分词 ideaseg_multilang v1.1 适配多语种的混合分词,要求不同语种的句子使用包括逗号、句号、分号等符号隔开,中文的词条同时包含拼音词条

注: 不同的版本请见源码仓库中对应的标签。

关于分词测试的详情请参考 ElasticSearch 官方文档

反馈问题

如果你在使用 ideaseg 过程中有任何问题,请通过 Issues 提出。

特别感谢

https://github.com/KennFalcon/elasticsearch-analysis-hanlp

Java
1
https://gitee.com/indexea/ideaseg.git
git@gitee.com:indexea/ideaseg.git
indexea
ideaseg
ideaseg
master

Search