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的在线检索服务,它具备高可用、高时效、低成本的优势,帮助企业和开发者量身定做适合业务发展的智能搜索服务。
85116 138
|
机器学习/深度学习 算法 流计算
深度预测平台RTP介绍
前言 RTP平台是阿里内部一个通用的在线预测平台,不仅支持淘系搜索、推荐、聚划算、淘金币等业务,也支持国际化相关icbu、lazada等搜索推荐业务,同时还支持着淘客,优酷、飞猪等大文娱的搜索推荐场景。
10635 0
|
XML 数据挖掘 Linux
服务器丨Linux安装测试单细胞分析软件copykat,遇到的常见报错与解决思路与方法
服务器丨Linux安装测试单细胞分析软件copykat,遇到的常见报错与解决思路与方法
|
10月前
|
人工智能 自然语言处理 运维
让搜索引擎“更懂你”: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>,欢迎体验与反馈。
2664 1
|
搜索推荐 大数据 数据库
【Havenask实践篇】搭建文本检索服务
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文举例数据库检索加速的一个简单场景,使用Havenask对数据库的文本字段建立倒排索引,通过倒排检索列提高检索性能,缩短检索耗时。
114707 51
【Havenask实践篇】搭建文本检索服务
|
自然语言处理 数据处理 调度
《Havenask分布式索引构建服务--Build Service》
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask分布式索引构建服务——Build Service,主打稳定、快速、易管理,是在线系统提升竞争力的一大利器。
102703 3
《Havenask分布式索引构建服务--Build Service》
|
自然语言处理 搜索推荐 算法
【一文读懂】基于Havenask向量检索+大模型,构建可靠的智能问答服务
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内的几乎整个阿里的搜索业务。本文针对性介绍了Havenask作为一款高性能的召回搜索引擎,应用在向量检索和LLM智能问答场景的解决方案和核心优势。通过Havenask向量检索+大模型可以构建可靠的垂直领域的智能问答方案,同时快速在业务场景中进行实践及应用。
112028 64
|
SQL 开发者 索引
【深入浅出】阿里自研开源搜索引擎Havenask变更表结构
本文介绍了Havenask的表结构变更,包括表结构简介、全量构建流程和变更表结构三个部分。表结构由schema配置,字段类型包括INT、FLOAT、STRING等,索引有倒排、正排和摘要索引。全量表变更会触发全量构建,完成后自动切换,但直写表不支持直接变更。变更过程涉及使用hape命令更新schema并触发全量build。最后还有全量构建的流程图和具体操作步骤。
62304 2
|
JavaScript
Vue中的路由导航守卫有哪些?它们的执行顺序是什么?
Vue中的路由导航守卫有哪些?它们的执行顺序是什么?
634 6