前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch 在网页摘要计算中的优化实践

Elasticsearch 在网页摘要计算中的优化实践

原创
作者头像
腾讯云大数据
发布2021-02-23 19:01:12
2.2K0
发布2021-02-23 19:01:12
举报

腾讯云 Elasticsearch Service】高可用,可伸缩,云端全托管。集成X-Pack高级特性,适用日志分析/企业搜索/BI分析等场景


导语 | 网页摘要计算,术语是 snippet computing/highlight computing。用户在输入框输入的关键词命中相关网页(ES 中的文档)后,需要根据关键词以及打分模型从网页内容筛选出 top N 的语句组成短文返回给前端手机用户,关键词红色高亮。笔者小组负责网页摘要高亮计算,本文将从模型优化及工程演变角度,还原 ES 在网页摘要技术中的应用实践。

文章作者:魏征,CSIG 智慧零售数据中心大数据工程师。

一、项目背景

通用搜索引擎,细分模块包括网页搜索、图片搜索、视频搜索、新闻搜索等,国际化市场同时需要支持主流市场语言。笔者的项目组是网页搜索下的网页摘要高量计算,产品一期市场覆盖西欧国家,所以网页摘要计算需要支持英语、法语、德语、意大利语、西班牙语等。通用搜索引擎架构分为离线和在线两部分,离线主要是网络爬虫、属性打标、数据抽取、分词计算/索引创建等,在线包括用户意图识别、输入纠错、网页/图片/视频/召回和排序、广告投放、特效卡片(天气、股票、交通)等。如下是周明老师的一张通用搜索引擎架构图,细节请参考https://www.msra.cn/zh-cn/news/features/ming-zhou-nlp-search-engine

网页查询属于上图中的在线模块,上下流程分为:①网页基础召回,即粗排,用户输入关键词从 ES 索引中命中大量的基于 scorer 基础排序后的网页 doc IDs;②网页精排,算法团队根据网页的实时属性库再次排序取出 TOP 10 的网页/文档 ID(即上图中的 Ten Blue Links);③网页摘要高亮计算,根据 TOP 10 的网页 ID,在 ES 中查询出网页内容源数据和分词数据,使用Lucene/ES 的已有高亮计算功能(https://www.elastic.co/guide/en/elasticsearch/reference/current/highlighting.html),并结合网页场景的数据模型,计算出10个网页的摘要短文。

由于网络爬虫从互联网爬出的网页接近千亿,按网站的质量/流量,把网页分为3个等级分别存储在不同的3套 ES 集群,同时网页基础召回和摘要计算团队分开,一共6套 ES 集群。网页基础召回团队的 ES 集群存储倒排索引数据,职责对应上述的流程①;摘要计算团队 ES 集群正排存储网页源数据和对应的分词数据,源数据都是文本,字段包括:网页 title、网页 meta、网页content,职责对应上述的流程③。

网页摘要计算,术语是 snippet computing/highlight computing。用户在输入框输入的关键词命中相关网页(ES 中的文档)后,需要根据关键词以及打分模型从网页内容筛选出 top N 的语句组成短文返回给前端手机用户,关键词红色高亮。笔者小组负责网页摘要高亮计算,支持西欧主流语言、中文、阿拉伯语等,产品评测网页摘要效果需要达到9.x分,接口时延 30ms 以内。网页摘要文本拉丁语长度一般不超过160字符,中文长度一般不超过80字符。输入【天山 昆仑山】,产品效果大概如下:

二、业务痛点

ES/Lucene 原生的摘要高亮计算模块只是基础的通用功能,无法满足网页搜索摘要业务的数据特征场景和业务诉求,需要在 ES/Lucene 已有的 BM25 模型上优化:

1. 防安全攻击,特殊字符转译/反转译处理

2. 正确分句模型优化:数据源是爬虫团队从 html 抽取,包含了各种短句,各种奇怪字符,短句之间无句子符号导致数据源不是理想状态的文本,ES/Lucene 使用的 jdk 的 BreakerIterator 无法正确分句

3. 语句过滤模型:超短语句过滤、奇怪字符超过句子长度百分比过滤、句子内部高量词重复/过多过滤、句子语义混乱过滤

4. 句子重复判定过滤模型:句子之间重复度过高过滤,使用编辑距离算法 Levenshtein Distance

5. 句子打分模型优化:摘要文本由网页的 meta 和 content 组合而出,基于已有的 BM25模型,需要补充多种打分因子:meta、content 的权重因子;句子长度与语句黄金长度偏差权重因子、语句在文本先后位置的权重因子、语句是否有标点符号权重因子

6. NLP 摘要过长截断优化:句子打分模型出来的文本过长,返回给用户的摘要文本长度,文本拉丁语一般不超过160字符,中文长度一般不超过80字符,引进 NLP 句子截断模型,语句截断后语意基础完成、无词组破损、句末非半句子符号

7. 饥饿处理:句子打分模型出来的文本过短,回补语句处理。

8. 特殊同义词处理:特殊网页(比如维基百科)处理,优化专业词条(比如名人的名字)全写/缩写在语句中高亮、拆分、打分处理。

三、工程三期演变

工程一期:侵入式修改 Lecene/ES 高亮计算源代码,结合网页数据特征、业务规则,实现独有分句模型、安全特殊字符处理、打分模型、饥饿处理等手段使摘要效果用户体验评测达到9.x分。

优点:快速实现功能,满足研发进度;

缺点:

  • 自研特性代码和 ES 开源耦合,后续维护升级困难;
  • Lucene/ES 的摘要计算服务运行在 data node 节点,自研部分运行在 Coordinator node和 data node 节点;
  • ES 查询接口是 QueryThenFetch 模型,当前业务数据只需正排存储(即 Fetch 查询),考虑业务耗时、存储模型和成本,未来使用 KV 数据库来代替 ES;

工程二期:摘要高亮计算代码独立成 ES 插件,使摘要计算完全运行在 coordinator 节点,达到计算和存储节点分离。

优点:

  • 工程代码和 ES/Lucene 源代码分离,算法人员专注 NLP、相关性模型优化等高阶问题,团队人力分为大数据存储和模型算法,各司其职;
  • 为后续的摘要计算微服务化场景做好铺垫;

缺点:计算无法根据流量实时动态扩缩容;

工程三期:摘要高亮计算独立为微服务,数据存储使用基于 rocksDB 的分布式 KV 存储代替 ES存储。

优点:

  • 借用流行的 springBoot 框架微服务化摘要计算接口,接口无状态,并部署在云上,根据流量实时自动扩所容;
  • 数据存储使用 KV 降低成本


最新活动

包含文章发布时段最新活动,前往ES产品介绍页,可查找ES当前活动统一入口

Elasticsearch Service自建迁移特惠政策>>

Elasticsearch Service 新用户特惠狂欢,最低4折首购优惠 >>

Elasticsearch Service 企业首购特惠,助力企业复工复产>>

关注“腾讯云大数据”公众号,技术交流、最新活动、服务专享一站Get~
关注“腾讯云大数据”公众号,技术交流、最新活动、服务专享一站Get~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【腾讯云 Elasticsearch Service】高可用,可伸缩,云端全托管。集成X-Pack高级特性,适用日志分析/企业搜索/BI分析等场景
  • 一、项目背景
  • 二、业务痛点
  • 三、工程三期演变
  • 最新活动
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档