posts - 73,comments - 5,views - 35101
分词器
分词器的主要作用将用户输入的一段文本,按照一定逻辑,分析成多个词语的一种工具。之前介绍Elasticsearch字段的时候知道字符串中的text类型需要配合分词器进行查询。这一篇就简单的介绍下我们日常接触的分词器。
Elasticsearch本身就内置了一些分词器,但是它也提供了让我们自己安装分词器的功能。
内置分词器
这里主要介绍的其内置的分词器
词语分词
词语分词是日常经常使用的分词工具,他将一段话根据一定规则进行拆分获得多个查询子短语
  • 标准分词器
  • 字母分词器
  • 小写标记器
  • 空格标记器
  • UAX URL电子邮件分词器
  • 经典分词器
单词分词
这种分词器主要关注单一的词,将一个词进行划分。这种拆分方式显然对于东亚很多地区的语言来说不适用。
  • N-Gram令牌生成器
  • Edge N-Gram令牌生成器
结构化文本分词
  • 关键字标记器
  • 正则分词器
  • 简单分词器
  • 字符组标记
  • 简单模式分割标记器
  • 路径标记器
词语分词
标准分词器(Standard Tokenizer)
根据standardUnicode文本分段算法的定义。将文本划分为多个单词边界的上的术语。分词的时候将内容转为小写,并移除大多数标点符号。可以通过配置停用词来忽略掉某些内容。
分词例子
1
原始内容<br>"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."<br>分词后内容<br>[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog's, bone ]
可配置项
复制代码
{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_english_analyzer": {
                    "type": "standard",
                    "max_token_length": 5,
                    "stopwords": "_english_"
                }
            }
        }
    }
}
复制代码
  • max_token_length最大令牌长度。如果看到令牌超过此长度,则将其max_token_length间隔分割。默认为255。
  • stopwords预定义的停用词列表,例如_english_或包含停用词列表的数组。默认为_none_。
  • stopwords_path包含停用词的文件的路径。
简单分词器(Letter Tokenizer)
当simple分析器遇到非字母的字符时,它会将文本划分为多个术语。它小写所有术语。对于中文和亚洲很多国家的语言来说是无用的
分词例子
原始内容
"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
分词后内容
[ the, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
可配置项
该分词器没有可配置对象。
 
小写分词器(Lowercase Tokenizer)
将输入内容转换为小写,然后再使用简单分词器进行分词
分词例子
原始内容
"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
分词后内容
[ the, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
可配置项
该分词器没有可配置对象。
 
电子邮件分词器(UAX URL Email Tokenizer)
此分词器主要是针对email和url地址进行关键内容的标记。
分词例子
原始内容
原始内容
"Email me at john.smith@global-international.com"
  分词后内容 
[ Email, me, at, john.smith@global-international.com ]
 
可配置项
复制代码
{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_english_analyzer": {
                    "type": "standard",
                    "max_token_length": 5
                }
            }
        }
    }
}
复制代码
  • max_token_length最大令牌长度。如果看到令牌超过此长度,则将其max_token_length间隔分割。默认为255。
 
空白分词器(Whitespace Tokenizer)
该whitespace分析仪将文本分为方面每当遇到任何空白字符。和上面的分词器不同,空白分词器默认并不会将内容转换为小写。
分词例子
原始内容
"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
 分词后内容
 [ The, 2, QUICK, Brown-Foxes, jumped, over, the, lazy, dog's, bone. ]

 

经典分词器(Classic Tokenizer)
可对首字母缩写词,公司名称,电子邮件地址和互联网主机名进行特殊处理。但是,这些规则并不总是有效,并且此关键词生成器不适用于英语以外的大多数其他语言
  • 它最多将标点符号拆分为单词,删除标点符号。但是,不带空格的点被认为是查询关键词的一部分
  • 此分词器可以将邮件地址和URL地址识别为查询的term(词条)
分词例子
原始内容
原始内容
"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
 分词后内容
[ The, 2, QUICK, Brown, Foxes, jumped, over, the, lazy, dog's, bone ]
可配置项
复制代码
{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "my_tokenizer"
                }
            },
            "tokenizer": {
                "my_tokenizer": {
                    "type": "classic",
                    "max_token_length": 5
                }
            }
        }
    }
}
复制代码
  • max_token_length最大令牌长度。如果看到令牌超过此长度,则将其max_token_length间隔分割。默认为255。
断字分词
N-Gram分词器(N-Gram Tokenizer)和Edge N-Gram分词器(Edge N-Gram Tokenizer)
所述ngram标记生成器可以分解文本成单词,当它遇到任何指定的字符的列表(例如,空格或标点),则它返回的n-gram的每个单词的:
比如这种文本
复制代码
原始内容
"Quick Fox"
 分词后内容
[ Q, Qu, u, ui, i, ic, c, ck, k, "k ", " ", " F", F, Fo, o, ox, x ]
而Edge N-Gram分词器会将
[ Q, Qu ]
复制代码
两者都支持配置
  • min_gram最小字符长度
  • max_gram最大字符长度
  • token_chars关键词中应包含的字符类。Elasticsearch将分割不属于指定类的字符。默认为[]

 未整理完。。。。。。

posted on   CRUDEngineer  阅读(293)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示