分词器有什么用?
分词器是搜索引擎的一个核心组件,负责对文档内容进行分词(在 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 支持,更好地支持亚洲语言。
THULAC(THU 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),
标签:中文,Analyzer,切分,分词器,文本,分词 From: https://www.cnblogs.com/cjhtxdy/p/18087502