原生分词器(StandardAnalzyer)|学习笔记

简介: 快速学习原生分词器(StandardAnalzyer)

开发者学堂课程【Lucene 知识精讲与实战(上) 原生分词器(StandardAnalzyer)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/700/detail/12339


原生分词器(StandardAnalzyer)

 

Lucene 原生分词器

1.什么是原生分词器?

原生分词器是 Lucene 自带的分词器。

2. StandardAnalyzer

StandardAnalyzer 叫做标准分词器。

特点:Lucene 提供的标准分词器,可以对用英文进行天然的切分词。对英文的分词效果很好,因为英文和英文,单词和单词之间是用空格进行分隔的,单词不可能连起来写,如果不进行分隔,单词就不叫单词,它只是一堆英文字母。对中文一般用语义分析,同一句话如果切分词不同,会有不一样的意思,StandardAnalyzer 对中文是单字分词,也就是一个字就认为是一个词。

3.示例

(1)下面请看 Lucene 原生分词器的部分源代码。

protected TokenStreamComponents createComponents(String fieldName){

final StandardTokenizer src = new StandardTokenizer ();

src.setMaxTokenLength(this.maxTokenLength);

Tokenstream tok = new LowerCaseFilter (src);

Tokenstream tok = new StopFilter (tok,this.stopwords);

return new TokenStreamComponents(src,tok){

protected void setReader (Reader reader){

src.setMaxTokenLength(StandardAnalyzer.this.maxTokenLength):

super.setReader (reader);

选中 protected TokenStreamComponents

createComponents(String fieldName){

中的createComponents,

找到 StandardAnalyzer ,如图:

image.png

(2)然后打开 StandardAnalyze ,根据它的源代码找它的方法,如图:

image.png

传进的参数 fieldName 叫做域名,它在方法当中会把域的值取出,因为 name 名称里面包含了中英文、字母,空格等,所以可以假设存的域名是 name,然后 name 后面的值会被取出取出之后,会经过以下过程:

(3)请看以下代码:

protected TokenStreamComponents createComponents(String fieldName){

final StandardTokenizer src = new StandardTokenizer ();

src.setMaxTokenLength(this.maxTokenLength);

Tokenstream tok = new LowerCaseFilter (src);

Tokenstream tok = new StopFilter (tok,this.stopwords);

return new TokenStreamComponents(src,tok){

protected void setReader (Reader reader){

src.setMaxTokenLength(StandardAnalyzer.this.maxTokenLength):

super.setReader (reader);


其中,j 代码中的 LowerCaseFilter 是把大写字母转换成小写字母,StopFilter 的作用是去掉停用词,这里还有其他的一些过滤器。

回到文档中,如图是语汇单元的生成过程:

image.png

可以看到,传入域名,把域值取出,取出之后进行切分词,在切分词时,首先 StandardAnalyzer 对英文的分词是通过空格切分;对中文是一个字就是一个词的切分。切分词之后会进行大小写字母的转换,然后去掉停用词、空格以及标点符号等过滤器之后,就会返回已经切分完成的值给用户。

(4)举例:

原文档内容:

Lucene is a Java search engine。

分析后得到的多个词汇单元:

Lucene、Java、full、text、search、engine

刚开始原文档的内容是由空格分隔的,切分之后的文档内容就是:Lucene、Java、full、text、search、engine 的格式,之前的 is 和 a 在搜索中没有意义,所以它们和空格以及最后的句号一起被过滤了。这就是 StandardAnalyzer 的作用。

5如图:

这里使用 StandardAnalyzer 创建得到的结果。

image.png

可以看到,有4 g、6 g等词,这些就是切分后的词,而对于中文,这里显示一个字就是一个词。这就是 StandardAnalyzer 切分的效果。

image.png

相关文章
|
10天前
|
机器学习/深度学习 自然语言处理 搜索推荐
一文掌握jieba分词器的常见用法,附带案例
该文章全面介绍了jieba分词器的使用方法,包括安装步骤、不同分词模式的使用,以及如何通过实例代码进行文本分词处理。
12 0
|
2月前
|
自然语言处理 前端开发 Java
ElasticSearch 实现分词全文检索 - Scroll 深分页
ElasticSearch 实现分词全文检索 - Scroll 深分页
28 0
|
4月前
|
机器学习/深度学习 自然语言处理 算法
必知的技术知识:IK分词器实现原理剖析——一个小问题引发的思考
必知的技术知识:IK分词器实现原理剖析——一个小问题引发的思考
84 0
|
5月前
|
自然语言处理 算法 搜索推荐
ES-IK分词器的概念和基本使用
ES-IK分词器的概念和基本使用
|
存储 JSON 自然语言处理
三.全文检索ElasticSearch经典入门-索引CRUD&分词器&文档映射&文档CRUD
三.全文检索ElasticSearch经典入门-索引CRUD&分词器&文档映射&文档CRUD
|
JavaScript 前端开发
JavaScript实战笔记(三) 文本搜索
JavaScript实战笔记(三) 文本搜索
86 0
|
存储 JSON 自然语言处理
ElasticSearch 学习笔记(三)-----ES的设计原理以及分词器说明
接上一篇《ElasticSearch 学习笔记(二)-----Elasticsearch的简介以及应用》,这篇,我们来学习ElasticSearch中的两个重要知识点,设计原理与分词器。
213 0
ElasticSearch 学习笔记(三)-----ES的设计原理以及分词器说明
|
存储 人工智能 算法
数字音频基础(下)| 学习笔记
快速学习数字音频基础(下),介绍了数字音频基础(下)系统机制, 以及在实际应用过程中如何使用。
390 0
数字音频基础(下)| 学习笔记
|
存储 开发者
数字音频基础(中)| 学习笔记
快速学习数字音频基础(中),介绍了数字音频基础(中)系统机制, 以及在实际应用过程中如何使用。
137 0
数字音频基础(中)| 学习笔记
|
编解码 开发者
数字音频基础(上)| 学习笔记
快速学习数字音频基础(上),介绍了数字音频基础(上)系统机制, 以及在实际应用过程中如何使用。
275 0
数字音频基础(上)| 学习笔记