关于Tokenizer与TokenFilter的区别
TokenStream是一个能在被调用后产生语汇单元流的类,但是 TokenStream 类有两个不同的类型:Tokenizer 类和 TokenFilter 类。这两个类都是从抽象类TokenStream类继承而来。
Tokenizer 对象通过Java.io.Reader 对象读取字符创建语汇单元,而TokenFilter 类则负责处理输入的语汇单元,然后通过新增、删除或者修改属性的方式来产生新的语汇单元。
当分词器从tokenStream 方法或者 reusableTokenStream 方法返回tokenStream 对象后,它就开始用一个tokenizer对象创建初始的语汇单元流,然后再链接到任意数量的tokenFilter对象来修改这些语汇单元。这被称为分词器链。
Tokenizer是一个以Reader为输入的TokenStream;而TokenFilter是一个以另一个TokenStream为输入的TokenStream。
表面上看两者只是输入不同,但正因为这一点,Tokenizer被用来做初级的文本处理,它把从Reader读入的原始文本通过一些简单的办法处理成一个个初级的token;TokenFilter则以Tokenizer为输入(因为Tokenizer继承自TokenStream),用一些规则过滤掉不符合要求的token(像StopFilter中的停用词),产生最终的token stream。
还记得前文说的WhitespaceAnalyzer和SimpleAnalyzer引用的都是Tokenizer,StopAnalyzer和StandardAnalyzer引用的都是TokenFilter吗?这就是因为前二者处理规则比较简单,用Tokenizer把Reader的输入经过一步处理就够了;后二者处理要复杂一些,需要用到TokenFilter,而TokenFilter在Tokenizer处理的基础上进行一些过滤,这样才能满足后二者的需要。
另外,引用他人的解释
Lucene Analyzer包含两个核心组件,Tokenizer以及TokenFilter。两者的区别在于,前者在字符级别处理流,而后者则在词语级别处理流。Tokenizer是Analyzer的第一步,其构造函数接收一个Reader作为参数,而TokenFilter则是一个类似拦截器的东东,其参数可以使TokenStream、Tokenizer,甚至是另一个TokenFilter。整个Lucene Analyzer的过程如下图所示:
上图中的一些名词的解释如下表所示:
类 | 说明 |
Token | 表示文中出现的一个词,它包含了词在文本中的位置信息 |
Analyzer | 将文本转化为TokenStream的工具 |
TokenStream | 文本符号的流 |
Tokenizer | 在字符级别处理输入符号流 |
TokenFilter | 在字符级别处理输入符号流,其输入可以是TokenStream、Tokenizer或者TokenFilter |
转载于:https://www.cnblogs.com/yaokaizi/p/3758563.html
关于Tokenizer与TokenFilter的区别相关推荐
- Lucene分词实现---Analyzer、TokenStream(Token、Tokenizer、Tokenfilter)
一 分清概念: 1 TokenStream是用来走访Token的iterator(迭代器) , Tokenizer继承自TokenStream,其输入为Reader . TokenFilter ...
- Lucene 中的Tokenizer, TokenFilter学习
https://brandnewuser.iteye.com/blog/2305140 lucene中的TokenStream,TokenFilter之间关系 TokenStream是一个能够在被调用 ...
- Lucene--TokenStream(TokenFilter、Tokenizer)
TokenStream即是从Document的域(field)中或者查询条件中抽取一个个分词而组成的一个数据流.继承TokenStream的类必须是final类型的,或者至少increamStoken ...
- Transfromers的tokenizer
1. 获取tokenizer对象 from transformers import BertTokenizer tokenizer = BertTokenizer.from_pretrained('b ...
- 深度解析 Lucene 轻量级全文索引实现原理
作者:vivo互联网服务器团队-Qian Yulun 一.Lucene简介 1.1 Lucene是什么? Lucene是Apache基金会jakarta项目组的一个子项目: Lucene是一个开放源码 ...
- Lucene in action 笔记 analysis篇
Analysis, in Lucene, is the process of converting field text into its most fundamental indexed repre ...
- Solr笔记--转载
Solr 是一种可供企业使用的.基于 Lucene 的搜索服务器,它支持层面搜索.命中醒目显示和多种输出格式.在这篇分两部分的文章中,Lucene Java™ 的提交人 Grant Ingersoll ...
- 【Java】Lucene检索引擎详解
基于Java的全文索引/检索引擎--Lucene Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能. L ...
- 分词相关技术(转载)
最近在做问答系统,自己在园子里面找了下资料,觉得不错,自己是菜鸟原创不行,废话不多说了,送上资料. 第一个是关于Lucene的分词技术 这里可以下载PDF看,Lucene 原理与代码分析完整版 目录如 ...
最新文章
- php节点对象,JavaScript_JavaScript中访问节点对象的方法有哪些如何使用,JavaScript中访问节点对象的方法 - phpStudy...
- NYOJ 664 数字整除
- 简便方法创建自签名证书
- 数据分析TB级别数据量大了怎么办,不会代码模型训练怎么办?
- .net身份证号码验证
- 智能实验室-全能优化(Guardio) 5.10.0.1150
- 泰山服务器 oracle数据库,泰山之巅对话•Oracle数据库掌门人:领先对手10年?凭什么口气这么大?...
- c语言 多线程 参数,如何用C语言实现多线程
- php smtp发送附件,PHP:如何使用smtp设置发送带附件的电子邮件?
- 架构师一般做到多少岁_《迷茫中的我们该如何突破瓶颈——成长为一名架构师》...
- 学习OpenCV2——卡尔曼滤波(KalmanFilter)详解
- 使用poi导出大量数据到excel遇到的问题
- mysql回显_SQL回显
- 随机过采样与随机欠采样 代码
- 强化物联网连接 Silicon Labs收购Micrium
- 【jzoj1592】【二分】【GDKOI训练】音乐节拍
- 如果说这个世界不是真实存在的,只是一段代码,迄今为止你发现了哪些bug?
- 苹果地图副总裁_挖角苹果高级计算机视觉专家 Mapillary地图更新添一员大将
- jdk8的ConcurrentHashMap实现
- 自控原理学习笔记-系统稳定性分析(2)-环路分析及Nyquist-Bode判据
热门文章
- 机器人门禁控制盒怎么接线方法_RFID门禁系统原理、初始密码、密码修改方法...
- 刷卡读取信息自动录入表格_人事自动化管理系统.xls
- ios打不开html文件,在DocumentsWeb目录中打开UIWebview时,ios-css和js在html文件中无法链接...
- jquery查找父窗体id_js/jquery如何获取父窗口的元素?
- ubuntu 以太网已连接但是无法联网_5G物联网掀起工业自动化新高潮 连接器需求巨大...
- ubuntu python3 mysql_ubuntu14.04 python3.*连接mysql
- git rebase 修改提交信息
- Spring mvc @RequestHeader
- Node.js ES6 模块化的基本语法-按需导出与按需导入
- Flink watermark