3.分词器(Analyzer)

分词器有什么用?
  分词器是搜索引擎的一个核心组件,负责对文档内容进行分词(在 ES 里面被称为 Analysis),也就是将一个文档转换成 单词词典(Term Dictionary。单词词典是由文档中出现过的所有单词构成的字符串集合。为了满足不同的分词需求,分词器有很多种,不同的分词器分词逻辑可能会不一样。

 

常用分词器有哪些?

非中文分词器:
  Standard Analyzer:标准分词器,也是默认分词器, 英文转换成小写, 中文只支持单字切分。Simple   Analyzer:简单分词器,通过非字母字符来分割文本信息,英文大写转小写,非英文不进行分词。
  Stop Analyzer :在 SimpleAnalyzer 基础上去除 the,a,is 等词,也就是加入了停用词。
  Whitespace Analyzer : 空格分词器,通过空格来分割文本信息,非英文不进行分词。
上面这些也都是 ES 内置的分词器。 比如 Standard Analyzer 的例子是下面这样的。
  输入文本内容: "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
  分词结果: [ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog's, bone ]

中文分词器:

  IK Analyzer(推荐) 最常用的开源中文分词器,包括两种分词模式:    ik_max_word:细粒度切分模式,会将文本做最细粒度的拆分,尽可能多的拆分出词语。
    ik_smart:智能模式,会做最粗粒度的拆分,已被分出的词语将不会再次被其它词语占有。

  Ansj:基于 n-Gram+CRF+HMM 的中文分词的 Java 实现,分词速度达到每秒钟大约 200 万字左右(mac air 下测试),准确率能达到 96%以上。实现了中文分词、中文姓名识别、用户自定义词典、关键字提取、自动摘要、关键字标记等功能。  ICU Analyzer:提供 Unicode 支持,更好地支持亚洲语言。
  THULACTHU Lexical Analyzer for Chinese: 清华大学推出的一套中文词法分析工具包, 具有中文分词和词性标注功能。
  Jcseg:基于 mmseg 算法的轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能。
IK Analyzer 分词示例:
输入文本内容:"数据库索引可以大幅提高查询速度"

分词结果:
细粒度切分模式:   [数据库,索引,可以,大幅,提高,查询,速度]
智能模式:   [数据库,数据,索引,可以,大幅,提高,查询,速度]

其他分词器 :

Keyword Analyzer :关键词分词器,输入文本等于输出文本。
Fingerprint Analyzer :指纹分析仪分词器,通过创建标记进行检测。
上面这两个也是 ES 内置的分词器。
Keyword Analyzer 分词示例:
输入文本内容: "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
分词结果: [ The 2 QUICK Brown-Foxes jumped over the lazy dog's bone. ]

 

分词器由什么组成?

分析器由三种组件组成:
  Charater Filters:处理原始文本,例如去除 HTMl 标签。
  Tokenizer:按分词器规则切分单词。
  Token   Filters:对切分后的单词加工,包括转小写,切除停用词,添加近义词
三者顺序:Character Filters —> Tokenizer —> Token Filter
三者个数:CharFilters(0 个或多个) + Tokenizer(一个) + TokenFilters(0 个或多个) 

下图是默认分词器 Standard Analyzer 的分词流程。

Elasticsearch 如何基于拼音搜索?

对于中文内容来说,我们经常需要基于拼音来进行搜索。

我们可以使用 拼音分词器 ,拼音分词器用于汉字和拼音之间的转换,集成了 NLP 工具(https://github.com/NLPchina/nlp-lang),

posted @ 2024-03-21 15:30  壹索007  阅读(196)  评论(0编辑  收藏  举报