Elasticsearch分词器
ES 提供了分析器api接口给用户做相关调
分析器不等于分词器,分词器只是分析器的一部分。但通过该API,可以帮助我们对ES的分词器建立很好的理解,并帮助我们调试属于自己的分词器。
1 |
|
以下是一些ES中常用的分词器:
Standard Tokenizer(标准分词器)
ES的默认分词器,基于Lucene的标准分词器实现。
将文本按照空白字符(如空格、制表符、换行符等)进行切分,并转换为小写。
示例:
1
2
3
4
5
6POST _analyze
{
"text": "There's always a teacher in a 3 threesome",
"analyzer": "standard"
}
#结果为["there's","always","a","teacher","in","a","3","threesome"]
Simple Tokenizer(简单分词器)
按照非字母切分、小写处理。
示例:
1
2
3
4
5
6POST _analyze
{
"text": "There's always a teacher in a 3 threesome",
"analyzer": "simple"
}
#结果为["there","s","always","a","teacher","in","a","threesome"]
Whitespace Tokenizer(空白字符分词器)
根据空白字符(空格、制表符、换行符等)将文本切分成词项。
示例:
1
2
3
4
5
6POST _analyze
{
"text": "There's always a teacher in a 3 threesome",
"analyzer": "whitespace"
}
#结果为["There's","always","a","teacher","in","a","3","threesome"]
Keyword Tokenizer(关键词分词器)
将整个输入文本作为一个词项输出,不进行任何切分。
示例:
1
2
3
4
5
6POST _analyze
{
"text": "There's always a teacher in a 3 threesome",
"analyzer": "keyword"
}
#结果为["There's always a teacher in a 3 threesome"]
Pattern Tokenizer(正则表达式分词器)
允许使用正则表达式来定义分词的模式。默认会按照
\W+
,即非字词(非数字字母)的符号作为分隔符。示例:
1
2
3
4
5
6POST _analyze
{
"text": "There's always a teacher in a 3 threesome",
"analyzer": "pattern"
}
#结果为["there","s","always","a","teacher","in","a","3","threesome"]
常用分词器对比
分词器 | 是否小写 | 是否保留数字 | 通过空白字符 | 特殊符号 | There’s always a teacher in a 3 threesome |
---|---|---|---|---|---|
standard | ✔ | ✔ | ✔ | ✘ | [“there’s”,”always”,”a”,”teacher”,”in”,”a”,”3”,”threesome”] |
simple | ✔ | ✘ | ✔ | ✔ | [“there”,”s”,”always”,”a”,”teacher”,”in”,”a”,”threesome”] |
whitespace | ✘ | ✔ | ✔ | ✘ | [“There’s”,”always”,”a”,”teacher”,”in”,”a”,”3”,”threesome”] |
keyword | ✘ | ✘ | ✘ | ✘ | [“There’s always a teacher in a 3 threesome”] |
pattern | ✔ | ✔ | ✔ | ✔ | [“there”,”s”,”always”,”a”,”teacher”,”in”,”a”,”3”,”threesome”] |
Language-specific Tokenizers(特定语言的分词器)
- ES还提供了针对特定语言的分词器,如英文的English Tokenizer、中文的IK Tokenizer等。这些分词器通常基于特定的语言规则和词典来切分文本。
国家 | 特定语言的分词器 |
---|---|
us | english |
uk | english |
ca | english |
de | german |
fr | french |
it | italian |
es | spanish |
jp | kuromoji |
中文分词器
IK分词器
IK分词器是Elasticsearch中最常用的中文分词器之一。它支持中英文分词,并提供ik_smart和ik_maxword两种分词模式。此外,IK分词器支持自定义词库和热更新分词词典,为用户提供了很大的灵活性。这是一个链接 IK分词器的下载地址。
jieba 分词器
虽然jieba分词器主要基于Python开发,但它在中文分词领域享有很高的声誉。jieba分词器支持分词和词性标注,并允许用户进行繁体分词、自定义词典和并行分词等操作。这是一个链接 jieba 分词器的下载地址。
Hanlp 分词器
Hanlp分词器是一个功能强大的Java工具包,包含了一系列自然语言处理模型和算法。它支持中文分词、词性标注、命名实体识别等功能,并致力于普及自然语言处理在生产环境中的应用。这是一个链接 Hanlp 分词器的下载地址。
THULAC 分词器
THULAC分词器(THU Lexical Analyzer for Chinese)是由清华大学自然语言处理与社会人文计算实验室开发的中文词法分析工具包。它支持中文分词和词性标注功能,并具有较高的分词精度。这是一个链接 THULAC 分词器的下载地址。
自定义分词器
es分析器文档地址 文档。