加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长资讯 > 动态 > 正文

如何使用 ik 进行中文分词?

发布时间:2021-04-19 09:27:49 所属栏目:动态 来源:互联网
导读:Search 的全文搜索和 ik 中文分词原理有一个全面且深入的了解。 全文搜索和精确匹配 ElasticSearch 支持对文本类型数据进行全文搜索和精确搜索,但是必须提前为其设置对应的类型: keyword 类型,存储时不会做分词处理,支持精确查询和分词匹配查询; text 类

Search 的全文搜索和 ik 中文分词原理有一个全面且深入的了解。

全文搜索和精确匹配

ElasticSearch 支持对文本类型数据进行全文搜索和精确搜索,但是必须提前为其设置对应的类型:

  • keyword 类型,存储时不会做分词处理,支持精确查询和分词匹配查询;
  • text 类型,存储时会进行分词处理,也支持精确查询和分词匹配查询。

比如,创建名为 article 的索引(Index),并为其两个字段(Filed)配置映射(Mapping),文章内容设置为 text 类型,而文章标题设置为 keyword 类型。图的右半边展示了 keyword 和 text 两种类型的不同存储处理过程。而左半边则展示了 ElasticSearch 相对应的两种查询方式:

  • term 查询,也就是精确查询,不进行分词,而是直接根据输入词进行查询;
  • match 查询,也就是分词匹配查询,先对输入词进行分词,然后逐个对分词后的词元进行查询。

举个例子,有两篇文章,一篇的标题和内容都是“程序员”,另外一篇的标题和内容都是“程序”,那么二者在 ElasticSearch 中的倒排索引存储如下所示(假设使用特殊分词器)。时,分别使用 term 和 match 查询对两个字段进行查询,就会得出如图右侧的结果。

Analyzer 处理过程

可见,keyword 与 text 类型, term 与 match 查询方式之间不同就在于是否进行了分词。在 ElasticSearch 中将这个分词的过程统称了 Text analysis,也就是将字段从非结构化字符串(text)转化为结构化字符串(keyword)的过程。

Text analysis 不仅仅只进行分词操作,而是包含如下流程:

一般来说,Analyzer 中最为重要的就是分词器,分词结果的好坏会直接影响到搜索的准确度和满意度。ElasticSearch 默认的分词器并不是处理中文分词的最优选择,目前业界主要使用 ik 进行中文分词。

ik 分词原理

ik 是目前较为主流的 ElasticSearch 开源中文分词组件,它内置了基础的中文词库和分词算法帮忙开发者快速构建中文分词和搜索功能,它还提供了扩展词库字典和远程字典等功能,方便开发者扩充网络新词或流行语。

ik 提供了三种内置词典,分别是:

此外,开发者可以通过配置扩展词库字典和远程字典对上述词典进行扩展。

  • 使用字符过滤器(Character filters),对原始的文本进行一些处理,例如去掉空白字符等;
  • 使用分词器(Tokenizer),对原始的文本进行分词处理,得到一些词元(tokens);
  • 使用词元过滤器(Token filters),对上一步得到的词元继续进行处理,例如改变词元(小写化),删除词元(删除量词)或增加词元(增加同义词),合并同义词等。ticSearch 中处理 Text analysis 的组件被称为 Analyzer。相应地,Analyzer 也由三部分组成,character filters、tokenizers 和 token filters。

    Elasticsearch 内置了 3 种字符过滤器、10 种分词器和 31 种词元过滤器。此外,还可以通过插件机制获取第三方实现的相应组件。开发者可以按照自身需求定制 Analyzer 的组成部分。

  • 过滤器是 html_strip,会去掉 HTML 标记相关的字符;
  • 分词器是 ElasticSearch 默认的标准分词器 standard;
  • 词元过滤器是小写化 lowercase 处理器,将英语单词小写化。
    • main.dic:主词典,包括日常的通用词语,比如程序员和编程等;
    • quantifier.dic:量词词典,包括日常的量词,比如米、公顷和小时等;
    • stopword.dic:停用词,主要指英语的停用词,比如 a、such、that 等。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读