简介:智能开放搜索上线定制召回模型-定制分词器功能,满足各行业、垂类、业务特殊,对搜索有较高分词要求的客户,提升语义理解能力,精准召回用户搜索意图。

NLP算法在搜索链路中的应用

这是一个完整的从查询词到搜索结果的链路,其中自然语言处理(NLP)算法发挥作用的地方主要在第二阶段的查询分析,该阶段包含多个NLP算法模块,如分词、纠错、实体识别、词权重、同义词以及语义向量等。开放搜索结合了文本和语义向量实现多路召回,从而满足不同业务场景的搜索效果需求。

查询分析

NLP算法可以在这几个子模块发挥作用:

  • 分词,精准的分词能提高检索效率,让召回结果更加精准。
  • 拼写纠错,对用户输入query中出现的拼写错误进行自动纠错,提升用户搜索体验。
  • 实体识别,为query 中的每个词打上对应的实体标签,从而为后续的query改写和排序提供关键特征。
  • 词权重,会对每个词划分不同的权重,在查询结果时去做丢词的重查,提升搜索准确率并降低无结果率。
  • 同义词,扩展出相同、相近意思的词来扩大召回范围。
  • 最后,经过完整的查询分析模块之后,进行整体的query改写,将用户输入query转换成向量和查询串,到相应搜索引擎中进行查询。

自研NLP模型难点

自建模型领域适配难

  • 自研搜索在具体场景业务中效果差强人意

例如:开源IK分词VS电商行业增强版

公开行业模型少

  • 云服务产商基本只提供通用模型,公开行业数据集也主要覆盖通用领域

自主参与领域模型优化难度大

  • 构建一个行业搜索NLP模型主要包含一下流程:

  1. 首先是标注数据集,这一步对于行业知识的要求非常高,同时数据量也至少需要达到万级别,标注这些数据的耗时可能长达数月
  2. 接着是模型训练,这一步需要专业的算法从业人员进行开发调试,如果对算法不熟悉,将大幅降低模型效果与迭代效率。
  3. 最后是模型上线,这一步需要工程、算法人员共同部署运维,如果涉及到深度模型,还需进行工程性能相关的效率优化。

从零开始自主开发行业模型困难重重,在数据集标注阶段其实就已经存在了很多的挑战:

  • 标注难点
  1. 分词标注领域知识要求高,交叉歧义判断难;

例如:药物的名称:利多卡因氯己定气雾剂 | 利多卡因 氯己定 气雾剂

          地址:南召县四棵树乡王营村 | 南召 县 四棵树 乡 王营 村

洗衣服粉 | 洗衣  服  粉b

  1. 实体识别标注领域知识要求高;

例如:澳洲爱他美(母婴品牌)金装一段、科比(球鞋系列

pytorch实现GAN(算法模型

针对分词、查询分析模型影响搜索效果,行业模型训练开发难度大等问题,开放搜索提供了轻量化客户定制解决方案:

开放搜索轻量化客户定制解决方案

方案效果介绍及选型

搜索召回和相关性排序在实际应用中最突出的问题之一就是NLP任务的领域适配问题。上图为开放搜索根据不同业务痛点和诉求提供的解决思路及对应效果分数参考;(上面提到的分数不是严格的技术指标)

  1. 直接使用通用模型大概能达到60分的效果;
  2. 开放搜索产品结合阿里经济体内数据资源积累,提供开箱即用的行业模型(电商、内容、教育、游戏、互娱等)对客户场景具备不错的适用性,可以达到80分的效果;
  3. 当客户有针对性优化,团队资源充足情况下,可以自主定制,进行领域模型优化,但NLP任务的标注门槛相对较高,标注质量不可控,模型训练难度大、周期长,很难突破85分;
  4. 轻量化客户定制可以减少客户标注量级,实现完全无标注或少量简单标注。同时基于行业、垂类、业务的特殊数据,结合原有成熟的NLP模型,让定制与扩展更简单,从而直接达到85分效果;

轻量化客户定制召回模型-定制分词器

分词是搜索引擎的重要基础组件,分词效果会直接影响搜索召回和最终结果。由于业务场景的多样性,不同行业、垂类、业务都有各自的特殊性通用、开源的分词器很难满足具体到每个客户的分词要求。

阿里云智能开放搜索(OpenSearch)提供了丰富的行业分析器,基于对应的行业分析器,经过简单的配置、训练,得到业务专属的定制分析器。整个定制过程无需进行额外的数据对接工作,召回定制模型训练会自动抽取已有数据进行适配。

通过定制召回模型-业务定制分析器功能,客户可以基于预训练行业NLP模型和自身业务数据,定制专属分析器,减小特殊行业、垂类、业务分词场景下的bad case,无需进行数据标注,实现一站式搜索引擎开发与NLP模型定制,智能化提升搜索效果。

适用客户

  1. 搜索为核心业务重要场景,对搜索有更高效果要求的客户
  2. 行业、垂类、业务特殊,有较多专属名词的客户
  3. 搜索投入人力有限,算法同学相对较少的客户

开放搜索后续还会上线更多定制召回模型,例如:定制拼写纠错、定制同义词等,敬请期待~

效果对比

  1. 电商社区场景

智能开放搜索(OpenSearch)提供的电商行业模型虽然已经能正确处理大部分的case,但仍存在一些切错的情况。结合客户数据,基于电商行业模型训练定制分词模型后,badcase基本都被修复。

  1. 地址场景

产品目前虽然还未开放地址行业模型,通用模型对于一些语义歧义多的case处理不好,但是结合客户数据,基于通用模型训练定制分词模型后,也可以修复大部分badcase。

小结:

  • 如果您的业务目前正在或准备使用开放搜索(OpenSearch)的行业版,可以在行业模型的基础上进行定制分词模型的训练;
  • 如果开放搜索还没有提供与您业务接近的行业版,建议选择在通用版模型的基础上进行定制,这种情况需要数据尽量多,分布尽量全面均衡,有助于提升定制分词模型的效果。

模型接入流程

  1. 创建并训练模型
  • 创建模型,训练模型

其中基础分析器包括:中文-通用分析、中文-电商分析、IT内容分析、行业-游戏通用分析,行业-教育搜题、行业-内容IT分析、行业-电商通用分析

  1. 创建自定义分析器(可选)
  • 在搜索算法中心>分析器管理页面,选择文本分析器创建,选择分析器类型为定制模型分析

  • 创建完成后,可使用定制自定义分析器进行分词测试,以及词条管理等功能:

  1. 配置定制分析器模型
  • 定制分析器创建完成后,即可通过线下变更将已配置定制召回模型的定制化分析器应用到索引中;
  • 在配置索引结构页面,找到对应的索引,替换成已配置定制召回模型的定制化分析器,并选择需要生效的模型版本;

  • 索引重建结束,即可在搜索测试界面测试效果;

原文链接

本文为阿里云原创内容,未经允许不得转载。

智能开放搜索上线定制分词器相关推荐

  1. 新功能 | 智能开放搜索上线定制分词器

    NLP算法在搜索链路中的应用 这是一个完整的从查询词到搜索结果的链路,其中自然语言处理(NLP)算法发挥作用的地方主要在第二阶段的查询分析,该阶段包含多个NLP算法模块,如分词.纠错.实体识别.词权重 ...

  2. 电商项目商品搜索模块 - ESik分词器安装

    2019独角兽企业重金招聘Python工程师标准>>> 洋鼹鼠-满足国人一切海外需求! 洋鼹鼠PC端搜索商品 com.ningpai.site.goods.controller.Go ...

  3. Lucene全文检索_分词_复杂搜索_中文分词器

    1 Lucene简介 Lucene是apache下的一个开源的全文检索引擎工具包. 1.1 全文检索(Full-text Search)  1.1.1 定义 全文检索就是先分词创建索引,再执行搜索的过 ...

  4. ik分词器实现原理_SpringBoot整合Elasticsearch实现商品搜索

    本文主要介绍在Elasticsearch中实现商品搜索功能 中文分词器 Elasticsearch有默认的分词器,默认分词器只是将中文逐词分隔,并不符合我们的需求. get hanzo/_analyz ...

  5. 基于MaxCompute+开放搜索的电商、零售行业搜索开发实践

    简介:搜索一直是电商行业流量来源的核心入口之一,如何搭建电商行业搜索并提升搜索效果,一直是电商行业开发者努力攻克的难题.基于传统数据库或开源引擎虽然能够搭建基础搜索服务,但随着商品数据的增多和业务流量 ...

  6. 算法专家解读 | 开放搜索教育搜题能力和实践

    简介:达摩院算法专家--徐光伟(昆卡)聚焦在线教育行业的拍照搜题场景,介绍如何应用开放搜索来构建更高搜索性能及搜题准确率的搜题系统,从而助力在线教育行业客户掌握更高层次用户体验的获客工具. 讲师:徐光 ...

  7. 一文详解 | 开放搜索兼容Elasticsearch做召回引擎

    简介:开放搜索发布开源兼容版,支持阿里云Elasticsearch做搜索召回引擎,本文详细介绍阿里云ES用户如何通过接入开放搜索兼容版丰富行业分词库,提升查询语义理解能力,无需开发.算法投入,即可获得 ...

  8. ES入门学习:ElasticSearch、Kibana、ik分词器的安装、简单使用及SpringBoot集成

    前言 es是采用Java语言开发,因此,想要安装运行es需要提前准备好jdk环境,关于linux配置jdk在前文linux配置jdk 本文主要介绍es的安装.kibana的安装和简单使用及ik分词器的 ...

  9. elasticsearch 添加或修改分词器

    1 索引的分析 索引分析: 就是把输入的文本块按照一定的策略进行分解, 并建立倒排索引的过程. 在Lucene的架构中, 这个过程由分析器(analyzer)完成. 1.1 分析器的组成 ① 字符过滤 ...

最新文章

  1. c语言for循环加法,BigDecimal 在for循环中相加注意事项
  2. 中国水处理行业十四五趋势规划与布局动态分析报告2022年
  3. 三级菜单 python_python三级菜单
  4. 时区日期处理及定时 (NSDate,NSCalendar,NSTimer,NSTimeZone) -- IOS(实例)
  5. python -m SimpleHTTPServer
  6. C#创建用户控件 - IPv4地址输入框
  7. Java Web实训项目:西蒙购物网(中)
  8. linux系统加多个网卡,Linux环境下填加多个IP段在同一网卡
  9. 【Android】ArcFaceDemo
  10. Arcgis 如何将大量数据转换成csv导出
  11. 大数据技术原理与应用(第一章,大数据概述)
  12. 概率论、随机过程知识梳理——思维导图
  13. 51单片机矩阵键盘控制数码管
  14. vivo和小米鸿蒙系统哪个好,vivo和华为还有小米,哪个系统流畅度更好?
  15. (二)外显子组数据分析之原始数据sra数据下载
  16. 十进制浮点型数据转换成二进制,并在内存中的存储方式
  17. 程序员为什么不单干、接私活、自己开公司
  18. vtkPropPicker拾取功能
  19. HCIE - Routing Switching v3.0 Outline
  20. mobi怎么在iphone上打开?

热门文章

  1. 沈师 PTA 数据库题目及部分解析 第一章
  2. 如何重用Excel Macro(宏)
  3. 上诉法院力挺FCC“网络中立”规则
  4. MySQL 中的全文搜索(附示例)
  5. CCF 认证考试201712-1最小差值-Python实现
  6. 如何查看微信第三方小程序页面路径
  7. MarkDown常用语法总结(含github,boostnote,stackedit编辑器语法的细微差别)
  8. Java第一节课晚自习整理
  9. OAuth 2.0 概念及授权流程梳理
  10. 弘辽科技:淘宝开店卖化妆品怎么样?有哪些技巧?