`

elasticsearch教程--中文分词器作用和使用

 
阅读更多

概述    

本文都是基于elasticsearch安装教程 中的elasticsearch安装目录(/opt/environment/elasticsearch-6.4.0)为范例

环境准备

·全新最小化安装的centos 7.5

·elasticsearch 6.4.0

认识中文分词器

在博文elasticsearch分词器中提到elasticsearch能够快速的通过搜索词检索出对应的文章归功于倒排索引,下面通过中文举例看看倒排索引。

中文分词器作用以及效果

中文分词器是做什么的呢? what? 通过名字就知道了啊,为什么还要问。。。下面通过三个文档示例,看看它是如何分词的

文档1: 我爱伟大的祖国

文档2: 祝福祖国强大繁

文档3: 我爱蓝天白云

经过中文分词器,以上文档均会根据分词规则,将文档进行分词后的结果如下:

注意:不同的分词规则,分词结果不一样,选择根据分词器提供的分词规则找到适合的分词规则

文档1分词结果: [我,爱,伟大,的,祖国]

文档2分词结果: [祝福,祖国,强大,繁盛]

文档3分词结果: [我,爱,蓝天白云,蓝天,白云]

通过上面的分词结果,发现拆分的每个词都是我们熟知的词语, 但是如果不使用中文分词,就会发现上面的文档把每个字拆分成了一个词,对我们中文检索很不友好。

再看倒排索引

看到上面中文分词器结果,就会有新的疑问,使用中文分词器那样分词效果有什么好处呢? 答案就是根据分词建立词汇与文档关系的倒排索引。这步都是es帮我们做的,下面通过"我","爱","祖国"三个词看看倒排索引,如下图:



 

 

通过上图中的倒排索引,我们搜索"祖国"时,es通过倒排索引可以快速的检索出文档1和文档3。如果没有中文分词器,搜索"祖国"就会被拆分"祖""国"两个词的倒排索引, 就会把包含"祖"的文档都检索出来,很明显就会和我们想要的结果大相径庭。

常用的中文分词器

Smart Chinese Analysis: 官方提供的中文分词器,

IKAnalyzer: 免费开源的java分词器,目前比较流行的中文分词器之一,简单,稳定,想要特别好的效果,需要自行维护词库,支持自定义词典

结巴分词: 开源的python分词器,github有对应的java版本,有自行识别新词的功能,支持自定义词典

Ansj中文分词: 基于n-Gram+CRF+HMM的中文分词的java实现,免费开源,支持应用自然语言处理

hanlp: 免费开源,国人自然处理语言牛人无私风险的

个人对以上分词器进行了一个粗略对比,如下图:



 

 

截止到目前为止,他们的分词准确性从高到低依次是:

hanlp> ansj >结巴>IK>Smart Chinese Analysis

结合准确性来看,选用中文分词器基于以下考虑:

官方的Smart Chinese Analysis直接可以不考虑了

对搜索要求不高的建议选用 IK 学习成本低,使用教程多,还支持远程词典

对新词识别要求高的选用结巴分词

Ansj和hanlp均基于自然处理语言,分词准确度高,活跃度来讲hanlp略胜一筹

博主选用的hanlp分词器,目前线上运行结果来看准确性满足需求

下面就写一下博主对IKAnalyzer 和 hanlp分词器的使用

IK Analyzer

截止目前,IK分词器插件的优势是支持自定义热更新远程词典。

安装ik分词器插件

es插件安装教程参考这里

ik的es插件地址: https://github.com/medcl/elasticsearch-analysis-ik/releases

博主使用的es版本是6.4.0,下载时要注意对应es版本

在线安装ik es插件 命令:

# /opt/apps/elasticsearch-6.4.0/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.0/elasticsearch-analysis-ik-6.4.0.zip

查看插件安装列表

# sudo /opt/apps/elasticsearch-6.4.0/bin/elasticsearch-plugin list

IK配置

ik安装完毕后配置文件在 {ES_HOME}/config目录下, 本例目录是 /opt/apps/elasticsearch-6.4.0/config/analysis-ik/IKAnalyzer.cfg.xml



 

图3

IK自定义词典维护

文本词典

ik文本词典均是以dic结尾,换行符作为分隔,示例如下:



 

图4

重启es,注意一定要重启es

通过前面教程中,我们发现短语"我爱祖国",会被分词为, "我","爱","祖国"三个词, 如果按照上面词典定义后, "我爱祖国"会被当成一个词语不被分词。

热更新远程词典

    热更新远程词典的优势是,修改词典后无需重启es。每分钟加载一次

 修改IK配置文件如下:



 

图5

其中 location 是指一个 url,比如 http://yoursite.com/getCustomDict,该请求只需满足以下两点即可完成分词热更新。

1·该 http 请求需要返回两个头部(header),一个是 Last-Modified,一个是 ETag,这两者都是字符串类型,只要有一个发生变化,该插件就会去抓取新的分词进而更新词库。

2·该 http 请求返回的内容格式是一行一个分词,换行符用 \n 即可。

满足上面两点要求就可以实现热更新分词了,不需要重启 ES 实例。

 

可以将需自动更新的热词放在一个 UTF-8 编码的 .txt 文件里,放在 nginx 或其他简易 http server 下,当 .txt 文件修改时,http server 会在客户端请求该文件时自动返回相应的 Last-Modified 和 ETag。可以另外做一个工具来从业务系统提取相关词汇,并更新这个 .txt 文件。

 

本文将远程词典存入数据库,示例如下:




 
 图6

hanlp 中文分词器

    截止目前,hanlp词库是最大,分词效果是最好。使用hanlp分词插件之前,建议先点击此处学习一下hanlp

安装hanlp中文分词器插件

    hanlp的elasticsearch插件众多,这里选用了这个,这个插件支持的分词模式要多一些,截止现在此插件最新支持6.3.2,由于插件中包含很大的词典文件,建议此插件采用离线安装



 

图7

查看插件安装列表



 

图8

注意: 这里有一个hanlp的警告,es版本是6.4.0, 但是插件允许的es版本是6.3.2

上面的警告需要修改一下插件配置, 本方法仅限于博主对应的版本哟,其他版本没去试验

# sudo vim /opt/apps/elasticsearch-6.4.0/plugins/analysis-hanlp/plugin-descriptor.properties

将 elasticsearch.version=6.3.2 修改为 elasticsearch.version=6.4.0,再次查看插件列表



 

图9

ok,安装成功,安装完毕后必须重启es哟必须重启es哟必须重启es哟

hanlp配置



 

图10

hanlp自定义词典

hanlp语料库词典

    hanlp语料库地址为: https://github.com/hankcs/HanLP/releases, 本文截止目前最新版本为1.6.8

1·下载数据包 hanlp.linrunsoft.com/release/data-for-1.6.8.zip

2·解压到配置文件中key为root的值对应目录下

3·根据词典名调整hanlp配置中的词典配置,尤其注意CustomDictionaryPath的配置,以前采用的应用名,现在采用的中文名称

4·删除二进制缓存文件 rm -r /opt/apps/elasticsearch-6.4.0/plugins/analysis-hanlp/data/dictionary/custom/CustomDictionary.txt.bin, 如果自定义词典变更了,一点要执行这一步,否则词典不生效

5·一定要重启es!!!一定要重启es!!!一定要重启es!!!

hanlp自定义热更新词典

1·在配置文件中key为root的值对应目录下找到目录custom,进入此目录

2·创建一个txt文件,示例: myDic.txt

3·在myDic.txt文件中添加词,分隔符为换行符, 词典格式为: [单词] [词性A] [A的频次]  ,如图:  



 

图11

4·删除二进制缓存文件 rm -r /opt/apps/elasticsearch-6.4.0/plugins/analysis-hanlp/data/dictionary/custom/CustomDictionary.txt.bin, 如果自定义词典变更了,一点要执行这一步,否则词典不生效

一定要重启es!!!一定要重启es!!!一定要重启es!!!

  • 大小: 31.8 KB
  • 大小: 63.2 KB
  • 大小: 31.6 KB
  • 大小: 20.6 KB
  • 大小: 8.8 KB
  • 大小: 8.8 KB
  • 大小: 70.6 KB
  • 大小: 26.9 KB
  • 大小: 3.3 KB
  • 大小: 7.7 KB
  • 大小: 44.3 KB
  • 大小: 51.1 KB
分享到:
评论

相关推荐

    elasticSearch中IK分词器使用教程

    ### Elasticsearch中的IK分词器使用教程 #### 一、IK分词器简介 在处理中文文本数据时,Elasticsearch自带的英文分词器对于中文的支持并不理想,它倾向于将中文字符按照单个字来进行分割,这样的处理方式显然无法...

    Elastic Search搭建使用教程.pdf(内含ElasticSearch教程权威指南)

    为了让Elasticsearch支持中文搜索,可以下载并安装中文分词器插件analysis-ik,并将其放置在Elasticsearch的plugins目录下。 Elasticsearch的基本概念包括Node、Cluster、Index和Document。Node是Elasticsearch中的...

    es安装教程:单点部署es、部署kibana、以及IK分词器

    IK分词器是Elasticsearch中最常用的中文分词插件,能有效提升中文搜索的准确性和效率。 ### 3.1 安装IK分词插件 在安装ES时,我们已经通过`bin/elasticsearch-plugin install analysis-ik`命令完成了IK分词器的...

    elasticsearch自定义分词插件

    Elasticsearch是一款强大的开源搜索引擎,其核心特性之一就是支持丰富的分词处理,这使得它在中文文本检索领域具有广泛的应用。然而,Elasticsearch默认的分词器可能无法满足所有业务场景的需求,这时我们就需要...

    最新版本springboot集成elasticsearch

    一、概述 一般来说我们开发Elasticsearch会选择使用集成springboot,在网上找的springboot集成elasticsearch文章几乎都是extends ElasticsearchRepository...4、中文分词elasticsearch-analysis-ik (ik) 1、下载ela

    一站式掌握elastic search基础与实战视频资源-百度云链接

    08-6 -作用范围.avi 08-7 -排序.avi 08-8 -原理与精准度问题.avi 08-9 -文档说明.avi 09-1 -数据建模简介.avi 09-2 -ES数据建模配置相关介绍.avi 09-3 -ES数据建模实例.mp4.avi 09-4 -Nested_Object.avi 09-5 -...

    elasticsearch-7.8.0版本windows版本安装包带ik分词包

    IK全称为"Intelligent ChineseAnalyzer for Elasticsearch",是一款专为Elasticsearch设计的中文分词插件,能有效提高中文文本的检索效率和准确度。 安装IK插件的步骤如下: 1. **下载IK插件**:访问IK插件的...

    主流分词词库下载,ik分词器/word分词器等

    综上所述,这个压缩包可能包含了IK Analyzer和其他中文分词器的配置、词典文件,以及相关的使用教程或示例,适合需要进行中文文本处理的开发者使用。通过下载和应用这些资源,开发者可以快速搭建起中文分词环境,...

    IKAnalyzer 实现分词 词频统计

    本教程将详细介绍如何使用IKAnalyzer进行分词处理,并实现词频统计。 首先,我们需要下载并引入IKAnalyzer到项目中。你可以从官方网站或者GitHub仓库获取最新版本的IKAnalyzer源码或jar包。在Eclipse中,可以通过...

    ElasticSearch搜索引擎教程实战篇

    该教程涵盖了ElasticSearch搜索引擎的基础知识、安装、配置、使用Kibana、常见错误解决方法、IK分词插件、ICU分词插件、集成SpringBoot等方面的知识点,从基础知识到高级应用,旨在帮助读者掌握ElasticSearch搜索...

    千锋ElasticSearch6教程的资料

    以上是千锋Elasticsearch 6教程的部分核心知识点,通过深入学习和实践,你可以掌握Elasticsearch的基本使用以及在实际项目中的应用技巧。在学习过程中,结合提供的实战教程资料,将有助于更好地理解和掌握这些概念。

    ElasticSearch中文学习教程

    对于中文文本的处理,ElasticSearch内置了中文分词器,如IK分词器,以支持中文文档的索引和搜索。通过配置合适的分词器,可以提高中文搜索的准确性和效率。 **2.4. 配置详解** ElasticSearch的配置文件通常位于`...

    Springboot2.1.1+elasticsearch6.5.3搭建的企业级搜索平台

    Springboot2.1.1+elasticsearch6.5.3搭建的企业级搜索平台,支持PB级数据(需要elasticsearch分布式部署),目前已经支持中文分词,检索关键词高亮操作,如果帮到您,麻烦点下Star,谢谢。 另外 Springboot2.1+Solr...

    ElasticSearch高级和进阶(高清视频教程).rar

    Elasticsearch,简称ES,是一款基于Lucene的分布式、RESTful风格的搜索和数据分析引擎,广泛应用于大数据处理和全文检索领域。本教程将深入探讨Elasticsearch的高级特性和进阶技巧,帮助用户提升对这一强大工具的...

    elasticsearch安装与教程.zip

    IK分词器是Elasticsearch中非常流行的中文分词插件,用于提高中文文本的检索效果。 1. **安装IK分词器**:在Elasticsearch的插件目录下执行`bin/elasticsearch-plugin install analysis-ik`命令,安装最新版本的IK...

    elasticsearch权威指南-中文版

    **Elasticsearch权威指南中文版概述** Elasticsearch是一个开源的、实时的、分布式搜索和分析引擎...对于想深入了解和使用Elasticsearch的人来说,“Elasticsearch权威指南-中文版”无疑是一本非常有价值的参考书籍。

    elasticsearch.zip

    IK分词器是Elasticsearch中非常流行的中文分词插件,它能够对中文文本进行智能分词,提升中文搜索的准确性和效率。安装此插件后,Elasticsearch将具备处理中文数据的能力。 最后,"Elasticsearch研究v1.2.pdf"是一...

    ElasticSearch安装说明

    2. **IK分词器**:如果需要使用 IK 分词器进行中文分词,需要单独下载并配置。 #### 二、ElasticSearch 6.7.0 安装步骤 ##### 1. 安装 JDK - **JDK版本**:根据官方文档,ES 6.7.0 要求 JDK 1.8.0_131 或以上版本...

    elasticsearch权威指南-中文 - 副本.zip

    Elasticsearch 的索引过程涉及分词、分析器的选择以及倒排索引的构建。搜索功能则涵盖了全文搜索、短语匹配、模糊搜索、范围查询等,通过Query DSL(Domain Specific Language)可以构建复杂的查询逻辑。此外,书中...

Global site tag (gtag.js) - Google Analytics