Havenask 分词器开发

简介: 本次分享由阿里云智能引擎工程师江半介绍Havenask分词器开发,内容涵盖三部分:1. 分词器插件简介,Tokenizer是Analyzer内部组件,负责文本切词;2. 内置分词器介绍,包括simple、aliws、multilevel_aliws和singlews等类型;3. 分词器开发实战,通过特定分隔符切词的TestTokenizer插件,详细讲解编写分词器插件的流程。整个过程涉及初始化、配置读取及Token生成等步骤。

Havenask 分词器开发

 

内容介绍:

一、分词器插件简介

二、内置分词器介绍

三、分词器开发实战

 

本次分享的主题是 Heavenask 的分词器开发,由阿里云智能引擎工程师江半分享。

image.png  

以下三点展开,第一介绍分词器插件,第二介绍内置分词器,第三从实战角度看分词开发运作

image.png

 

一、分词器插件简介

Tokenizer 是一个工作在 Analyzer 内部的组件,Analyzer 一般将处理后文本交给 Tokenizer 组件进行切,比如归一化后的文本Tokenizer 的输入是一段文本,输出是一段 Token 序列,其中 Token 是倒排检索最小

image.png  

 

二、内置分词器介绍

Heavenask 常用的内置分词器对于文本的切词需求,不同应用之间各不相同,引擎通过默认支持内置通用 Tokenizer 来支持常见的切词需求。当前内置支持的Tokenizer类型包括simplealiwS、 multilevel_aliws和singlews等。

simple 是一个简单的分词器,它通过配置一个分隔符,将一段文本按照配置的分隔符进行分词,默认的分隔符是\t.

aliws 分词器基本支持检索度,也可以通过配置获得扩展检索单元默认 tokenizer_id 为INTERNET_ CHN, use_extend_retrieve 默认不开启,开启后会打开AliWS的ws::SEG_TOKEN_RETRIEVE_BASICI WS::SEG_TOKEN_RETRIEVE_EXTEND选项

singlews是简单的单词分词器,会把英文的单词以及数字组合按照空格等字符分割,中文被切成单字,如果有特定字需分子的需求,就需要用到分词器开发,multilevel_aliws 相对 aliws 增加了检索度和语义度的分词功能需要 parameters 配置

image.png

 

三、分词器开发实战

Tokenizer可以让用户根据自己的搜索需求去定制特定的分词逻辑,本节将通过一个按照特定分隔符切词的 TestTokenizer 插件,介绍编写分词器插件的一般流程。比如用户配置分隔符为“:”,如果词器开发实战中有两个“:”,对于分词器“:”开发“:”实战一段文本切词结果是分词“:”加开发“:”,然后再加实战,一共是5个token,其中包含两个分隔符

系统在创建 Tokenizer 对象首先调用 init 接口的时候 TestTokenizer 可以读取 analyzer.jason 中的配置的参。如果 init 接口返回失败,Tokenize r就创建失败,在分词时,analyzer会循环调用tokenizernext接口,把需要分词的文本传给 tokenizer,next 接口会依次返回token 序列中的下一个token

系统在创建 analyzer 对象时,调用 tokenizer clone 接口,克隆出一个 tokenizer 对象传给 analyzer, analyzer 在析构的过程中负责释放克隆的 tokenizer。

最后是 TestTokenizer 在init接口中读取 separator 参数获取分割符的配置第一点是先实现 testtognide

image.png

第二点实现 Tokenizer Module Factory 类Togonizer 对象是由 Tokenizer Manage r对象生成。testTokenizerModuleManager TokenizerModuleFactory 的子类。在使用过程中,Tokenizer 对象主要向 TokenizerManager 对象获取。TokenizerManager 根据配置内容生成,在生成 TokenizerManager 过程中涉及到 Tokenizer 插件的加载以及 Tokenize 对象被 TokenizerModuleFactory 生成的过程。整个过程首先去初始化 Tokenizer 工厂,里面的 KeyValueMap& 是配置文件中去传入的参数列表,根据 Tokenizer 类型会创建指定的 Tokenizer,根据传入的 tokenat typ e创建具体的 Tokenizer 引擎根据 SO 内部定义 creatFactory 方法创建具体的TestTokenizerFactory 对象,factory 使用完成之后,调用 SO 内部的 destroy Factory 销毁 factory 对象

image.png

以上是本次分享的全部内容。

image.png

相关文章
|
SQL 运维 搜索推荐
《揭秘,阿里开源自研搜索引擎Havenask的在线检索服务》
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask的在线检索服务,它具备高可用、高时效、低成本的优势,帮助企业和开发者量身定做适合业务发展的智能搜索服务。
84917 138
|
机器学习/深度学习 算法 流计算
深度预测平台RTP介绍
前言 RTP平台是阿里内部一个通用的在线预测平台,不仅支持淘系搜索、推荐、聚划算、淘金币等业务,也支持国际化相关icbu、lazada等搜索推荐业务,同时还支持着淘客,优酷、飞猪等大文娱的搜索推荐场景。
10071 0
|
8月前
|
人工智能 自然语言处理 运维
让搜索引擎“更懂你”:AI × Elasticsearch MCP Server 开源实战
本文介绍基于Model Context Protocol (MCP)标准的Elasticsearch MCP Server,它为AI助手(如Claude、Cursor等)提供与Elasticsearch数据源交互的能力。文章涵盖MCP概念、Elasticsearch MCP Server的功能特性及实际应用场景,例如数据探索、开发辅助。通过自然语言处理,用户无需掌握复杂查询语法即可操作Elasticsearch,显著降低使用门槛并提升效率。项目开源地址:<https://github.com/awesimon/elasticsearch-mcp>,欢迎体验与反馈。
2178 1
|
11月前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
472 7
|
11月前
|
安全 数据库 数据安全/隐私保护
处理用户输入数据格式验证不通过的情况时,如何给出友好的提示信息?
处理用户输入数据格式验证不通过的情况时,如何给出友好的提示信息?
710 78
|
11月前
|
数据采集 数据库 Python
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
495 75
|
11月前
|
SQL 关系型数据库 MySQL
除了使用cursor.execute()和executescript(),还有哪些可以手动进行参数化查询的方法?
除了使用cursor.execute()和executescript(),还有哪些可以手动进行参数化查询的方法?
299 73
|
11月前
|
存储 SQL 数据采集
Django框架的表单验证和过滤机制的原理是什么?
Django框架的表单验证和过滤机制的原理是什么?
267 73
|
11月前
|
SQL 安全 数据库连接
除了使用Django的ORM,还能通过什么方式在Django中避免SQL注入漏洞?
除了使用Django的ORM,还能通过什么方式在Django中避免SQL注入漏洞?
296 73
|
11月前
|
SQL 安全 前端开发
Django表单验证和过滤机制在应对复杂安全场景时可能存在哪些漏洞?
Django表单验证和过滤机制在应对复杂安全场景时可能存在哪些漏洞?
307 71