地理文本处理技术在高德的演进(下)

在【上篇】里,我们介绍了地理文本处理技术在高德的整体演进,选取了几个通用query分析的点进行了介绍。下篇中,我们会选取几个地图搜索文本处理中特有的文本分析技术做出分析,包括城市分析,wherewhat分析,路径规划,并对未来做一下展望。

四、query分析技术演进

4.1 城市分析

在高德地图的检索场景下,从基础的地图数据索引、到在线召回、最终产品展示,均以市级别行政单位为基础粒度。一次完整的检索需求除了用户输入的query外,还会包含用户的图面城市以及用户位置城市两个城市信息。

通常,大多数的搜索意图都是在图面或者用户位置城市下,但是仍存在部分检索意图需要在其他城市中进行,准确的识别出用户请求的目标城市,是满足用户需求的第一步,也是极其重要的一步。

在query分析策略流程中,部分策略会在城市分析的多个结果下并发执行,所以在架构上,城市分析的结果需要做到少而精。同时用户位置城市,图面城市,异地城市三个城市的信息存在明显差异性,不论是先验输出置信度,还是用后验特征做选择,都存在特征不可比的问题。

在后验意图决策中,多个城市都有相关结果时,单一特征存在说服力不足的问题,如何结合先验置信度和后验的POI特征等多维度进行刻画,都是我们要考虑的问题。

原始的城市分析模块已经采用先验城市分析和后验城市选择的总体流程

但是原始的策略比较简陋,存在以下问题:

  • 问题1:先验和后验两部分均基于规则,效果不好并且可维护性差;
  • 问题2:特征体系存在缺陷。原始的城市分析仅使用query级的特征,包括点击,session改写,query和城市共现等,对于低频query处理得不好。

技术改造

改造1:城市分析

方案

城市分析是一个轻召回重选择的问题,我们将城市分析设计为召回+选择的两阶段任务。

召回阶段,我们主要从query和phrase两种粒度挖掘特征资源,而后进行候选城市归并。

排序阶段,需要对候选城市进行判断,识别是否应为目标城市,用gbdt进行二分类拟合。

样本构建

样本方面,我们选择从搜索日志中随机抽取,简单清洗后,进行人工标注。构造样本时存在本异地分样本分布不均的问题,本地需求远远多于异地,这里需要剔除本地和异地相关的特征,避免模型学偏。

特征体系

主要特征包括:

  • query级特征:如用户在特定query&city下的点击;
  • phrase级特征:类比于query级的特征,在更细粒度下进行统计;
  • 组合特征:为了克服单一特征表征能力不足的问题,这里我们进行了一些人工特征组合。

改造2:城市选择

方案

城市选择在整体的意图决策中处于下游,多种意图先在城市内部PK,然后城市互相PK。城市选择问题可以理解为多个城市间的排序问题,这里我们使用ltr进行城市选择的建模。

样本构建

使用随机query的多个城市意图结果作为样本,每次检索只有1个展示城市,因而每次只需要从候选城市中选择目标作为正样本,其他候选城市均作为负样本,与目标城市构成pair对。

特征构建

主要特征包括:

  • 先验特征。如城市分析部分输出的置信度;
  • 文本特征。一些基础的文本相关性特征;
  • 点击特征。如不同意图城市中的点击强度;
  • 意图特征。一些特征可能影响用户的城市倾向,如用户位置与首位POI距离。

相比原始的城市分析和城市选择,两个模块全部实现机器学习化,在恶劣badcase显著降低的同时,可维护性大幅提高。在后续的建模中,我们将城市分析作为一个上层应用任务,通过多任务的方式接入到query分析的统一模型中来,降低了特征间的耦合,同时实现进一步的效果提升。

4.2 wherewhat分析

地图场景下的query经常包含多个空间语义片段的描述,只有正确识别query中的核心部分做what用于召回,同时用空间描述部分做where进行限定,才能够得到用户想要的POI。如query=北京市海淀区五道口肯德基,what=肯德基,是泛需求。query=南京市雨花台区板桥街道新亭大街与新湖大道交界口湾景,what=湾景,是精确需求。这种在A附近找B或者在A范围内找B的需求我们把它称作wherewhat需求,简称ww。

wherewhat意图分析主要包括先验和后验两个部分。先验要做wherewhat切分,是一个序列标注问题,标注出query中的哪些部分是where哪些部分是what,同时给出where的空间位置。后验要做意图选择,选择是否展示wherewhat意图的结果,可以转化成分类或者排序问题。

wherewhat体系的主要难点在ww切分上,不仅要应对其他query分析模块都要面对的低频和中长尾问题,同时还要应对ww意图理解独特的问题。像语义模糊,比如北京欢乐谷公交站,涌边村牌坊这样的query该切还是不该切,结果差异很大。像语序变换,如query=嘉年华西草田,善兴寺小寨,逆序的表达如果不能正确识别,效果可能很差。

现状与问题

现状

切分:wherewhat模块在成分分析模块下游,主要依靠了成分分析的特征。对于一些比较规整的query,通过成分分析组合的pattern来解决,对于一些中长尾的query,通过再接入一个crf模型进行ww标注。

选择:基于人工规则进行意图的判断和选择。

  • 问题1:切分模型简陋。基于crf的切分模型使用特征单一,对成分特征依赖严重,处于黑盒状态无法分析;
  • 问题2:后验意图判断,规则堆砌,不好维护;
  • 问题3:逆序问题表现不好。由于query的语料大部分是正序的,模型在小比例的逆序query上表现不好。

技术改造

crf问题分析工具

为了能够分析原始crf切分模型的问题,我们基于crf++源码开发了一个crf模型的分析工具,能够将基于维特比算法的预测过程交互式的展示出来,将模型的黑盒分析变成白盒,分析出了一系列问题。

同时,crf问题分析工具也应用在了其他query分析模块。

  • 改造1:特征建设和模型优化

原始的模型依赖成分分析比较严重,由于成分分析特征本身存在准确率的问题,我们从用户的query中总结了一些更加可靠的统计特征。

前缀置信度

描述了片段做前缀的占比。比如望京凯德茂,望京阜通,也有望京单独搜,如果望京在前缀中出现的占比很高,那说明这个片段做where的能力比较强。

后缀熵

描述了后缀的离散程度,如望京凯德茂,望京美食,望京首开,后缀很乱,也可以说明片段做where的能力。

what置信度

片段单独搜占比,比如西门经常是在片段结尾出现,但是单独搜比较少,那片段做what的能力比较弱。

以特征值域做横轴,where和what,label作为纵轴,就得到了特征-label曲线。从这几个特征的特征-label曲线来看,在某些区间下区分度还是很好的。由于crf模型只接受离散特征,特征-label的曲线也指导了特征离散化的阈值选择。对于低频query,我们通过低频query中的高频片段的统计信息,也可以使我们的模型在低频问题上表现更好。

  • 改造2:后验意图选择升级

将原始的堆砌的规则升级到gbdt机器学习模型,引入了先验特征,在拿到一定收益的同时也使得整个体系更加合理。

  • 改造3:鲁棒性优化

将ww中逆序的问题抽象出来,可以归纳为query分析中的鲁棒性问题。随着策略优化进入深水区,存在策略提升用户不可感知,攻击case容易把系统打穿的问题。

如上图,用户变换query中where和what的顺序,效果可能变差。变换下检索城市,对于同一个知名景点,跳转逻辑不一致。用户区划输错,纠错不能识别,效果变很差。这种模块对非预期的query变换,或者更通用地叫做,对上下游的特征扰动的承载能力,我们可以把它叫做模块的鲁棒性。

这里我们设计了对于通用鲁棒性问题解决的思路

在不引入复杂模型的前提下,通过构建ensemble的浅层模型来优化特定问题,降低了问题解决的成本。

对于ww逆序这个特定问题进行了特征复用用本复用,并且模型对外统一

效果上,新的模型在原始测试集效果持平,人工构造攻击case集合准召明显提升,目标case集合具有可观的解决比例,验证了鲁棒性优化的思路是有效的。

这里基本完成了对于ww体系的一个完整的升级,体系中的痛点基本都得到了解决。优化了切分模型,流程更加合理。意图决策上完成了规则到机器学习模型的升级。在优化或者引入浅层机器学习模型的同时尽可能发挥浅层模型的潜力,为从浅层模型升级为深度模型打下基础。

在后续的建模中我们使用字粒度lstm+crf模型代替现有的crf模型,彻底摆脱了对成分分析特征的依赖,同时通过融合知识信息到lstm+crf模型,进一步提升效果。

4.3 路径规划

在高德地图的搜索场景中,一类用户搜索意图为路径规划意图。例如,当用户在高德地图App的搜索框中输入“从回龙观到来广营”,点击搜索按钮后,搜索服务能识别出用户的搜索意图为路径规划,并识别出用户描述的起点为“回龙观”,终点为“来广营”,进而检索到对应的POI点给下游服务做出路线的规划。

从用户输入中识别路径规划意图,并提取出对应的起终点,这是一个典型的NLP任务。早期的路径规划模块使用的是模板匹配的方式,这种方式开发成本低,能解决大部分常见的路径规划问题,如上面这种“从A 到B”类的问题。

但随着业务的不断发展,模块需要解决的问题越来越复杂,比如“坐地铁从西直门到大兴狼垡坐到哪里下车”,“广东到安徽经过哪几个城市”,“去往青岛的公交车有吗” 等等各种非“从A到B”模式的问题。由于模板匹配方式没有泛化能力,只能通过不断增加模板来解决,使得模块越来越沉重难以维护。

优化

由于线上所有的搜索query都会经过路径规划模块,若是让模型去处理所有的query,那么模型不仅要解决意图识别问题(召回类问题),又要解决槽位提取问题(准确类问题),对于模型来说是很难同时将这两个任务学好的。因此,我们采取了以下三段式:

模型前使用关键字匹配策略进行简单意图识别,过滤掉大部分非路径规划query;模型处理疑似路径规划的query,进行槽位提取;模型后再对模型结果进行进一步检验。

样本和特征

机器学习的样本一般来源于人工标注,但人工标注耗时长成本高。因此我们采取的是自动标注样本方式。通过富集路径规划模式,如“从A怎么乘公交到B”,再用清洗后的随机query按照实际起终点的长度分布进行起终点替换,生成大量标注样本。

特征方面,我们使用了成分分析特征及含有关键字的POI词典特征。它们主要在如“从这里到58到家”这类起终点 中含有关键字的query上起着区分关键字的作用。

模型训练

crf算法是业界常用的为序列标注任务建立概率图模型的算法。我们选取的也是crf算法。

效果评估

在验证集准确率召回率,以及随机query效果评比上,指标都有了明显的提升。

对于路径规划这样一个定向的NLP任务,使用crf模型完成了从规则到机器学习模型的升级。作为一个应用层任务,路径规划也很容易被迁移到seq2seq的多任务学习模型中来。

五、展望

过去两年随着机器学习的全面应用,以及基于合理性进行的多次效果迭代,目前的地理文本处理的效果优化已经进入深水区。我们认为将来的优化重点在攻和防两方面。

攻主要针对低频和中长尾问题。在中高频问题已经基本解决的前提下,如何能够利用深度学习的技术进行地理文本处理seq2seq的统一建模,在低频和中长尾问题上进行进一步优化,获得新一轮的效果提升,是我们目前需要思考的问题。另外,如何更好地融合知识信息到模型中来,让模型能够具有接近人的先验判断能力,也是我们亟待提升的能力。

防主要针对系统的鲁棒性。如用户的非典型表达,变换query等定向的问题,如何能够通过定向优化解决这些策略的死角,提高系统的容错能力,也是我们目前需要考虑的问题。

地图搜索虽然是个垂类搜索,但是麻雀虽小五脏俱全,并且有地图场景下很多有特色的的难点。未来我们需要继续使用业界先进的技术,并且结合地理文本的特点进行优化,理解将更加智能化。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

真正拿大厂offer的人,都赢在这一点

学好一门技术最有价值的体现就是“面试”,对于大部分人来说 “面试”是涨薪的主要途径之一,因此我们需要认真的准备面试,因为它直接决定着你今后几年内的薪资水平,所以在面试这件事上花费再多的时间和精力都是值得的。你会发现有…

今天的这个小成绩,需要向阿里云的朋友报告一下!

今天,想向大家报告一个最新的小成绩: 在数据库领域的权威评选——Gartner全球数据库魔力象限评比中,阿里云成功进入“挑战者”象限,连续两年作为唯一的中国企业入选。 最新评选表明,阿里云过去一年在产品技术领域进展迅…

90%的人会遇到性能问题,如何用1行代码快速定位?

阿里妹导读:在《如何回答性能优化的问题,才能打动阿里面试官?》中,主要是介绍了应用常见性能瓶颈点的分布,及如何初判若干指标是否出现了异常。 今天,齐光将会基于之前列举的众多指标,给出一些常…

SpringBoot2 整合 CXF 服务端和客户端

文章目录一、CXF服务端1. 导入依赖2. 创建service接口3. 接口实现类4. cxf配置类5. 查看wsdl结果二、CXF客户端2.1. 客户端2.2. 断点调试2.3. 发起调用服务开源源码.一、CXF服务端 1. 导入依赖 <properties><cxf.version>3.3.1</cxf.version></propertie…

如果张东升是个程序员,你还有机会吗?

来源 | 编程技术宇宙责编 | Carol封图 | CSDN 下载自视觉中国张东升是一家互联网公司的程序员&#xff0c;一直以来都勤勤恳恳老实工作。可最近一段时间&#xff0c;老板接了几个项目回来&#xff0c;不但开启了996的工作模式&#xff0c;更要命的是频频更改需求&#xff0c;弄…

蚂蚁金服资深总监韩鸿源:企业级数据库平台的持续与创新

2019年11月19日&#xff0c;蚂蚁金服在北京举办“巅峰洞见聚焦金融新技术”发布会&#xff0c;介绍2019双11支付宝背后的技术&#xff0c;并重磅发布全新OceanBase 2.2版本。欢迎持续关注&#xff5e; 蚂蚁金服研究员韩鸿源在发布会分享了《企业级数据库平台的持续与创新》&…

jquery标题左右移动动画

标题会在红框范围内来回移动 html和css代码 <div class"menu-notice" click"check_cart"><div class"menu-notice-logo"></div><div class"menu-notice-title" ref"noticeTitle">{{storeinfo[0] ?…

解密 云HBase 冷热分离技术原理

前言 HBase是当下流行的一款海量数据存储的分布式数据库。往往海量数据存储会涉及到一个成本问题&#xff0c;如何降低成本。常见的方案就是通过冷热分离来治理数据。冷数据可以用更高的压缩比算法&#xff08;ZSTD&#xff09;&#xff0c;更低副本数算法&#xff08;Erasure…

再见,工资!2020年6月程序员工资统计,平均14404元,网友:又跌了!

见了鬼&#xff01;工资竟然又跌了2020 年 6 月全国招收程序员 313739 人。2020 年 6 月全国程序员平均工资 14404 元&#xff0c;工资中位数 12500 元&#xff0c;其中 95% 的人的工资介于 5250 元到 35000 元。怪不得小陈发现最近猎头的“骚扰”电话越来越少了&#xff0c;这…

mysql创建function 报错误1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in

解决方法&#xff1a; 执行这条sql就可以了&#xff1a; set global log_bin_trust_function_creators1;运行结果&#xff1a; 函数创建成功了

一个实时精准触达系统的自我修养

问题定义 在互联网行业&#xff0c;唯一不变的就是一直在变化。作为技术同学&#xff0c;我们经常会碰到以下几种需求&#xff1a; 当用户收藏的商品降价后及时通知用户&#xff0c;促进双方交易达成&#xff1b;新用户或90天内未成交的用户浏览多个商品后引导用户主动和卖家聊…

vue-datepicker的使用

写这个文章主要是记录下用法&#xff0c;官网已经说的很详细了 npm install vue-datepicker --savehtml代码 <myDatepicker :date"startTime" :option"multiOption" :limit"limit"></myDatepicker> <myDatepicker :date"e…

数据库怎么选择?终于有人讲明白了

作者 | Alex Petrov所有数据库管理系统的主要工作都是可靠地存储数据并使其对用户可用。我们使用数据库作为数据的主要来源&#xff0c;帮助我们在应用程序的不同部分之间共享数据。我们使用数据库&#xff0c;而不是在每次创建新应用程序时寻找存储和检索信息的方法&#xff0…

医疗数据典型特征及架构发展方向研究

前言 医疗健康产业目前呈高速发展状态&#xff0c;处在互联网对医疗行业赋能的关键阶段&#xff0c;由于医疗行业数据的隐私性较强&#xff0c;通过传统方式很难获取公开的医疗健康数据进行研究&#xff0c;根据阿里云天池比赛赛题设置研究及提供的脱敏数据集着手进行分析是比…

分布式事务 GTS 的价值和原理浅析

GTS 今年双 11 的成绩 今年 2684 亿的背后&#xff0c;有一个默默支撑&#xff0c;低调到几乎被遗忘的中间件云产品——GTS&#xff08;全局事务服务&#xff0c;Global Transaction Service&#xff09;&#xff0c;稳稳地通过了自 2014 年诞生以来的第 5 次“大考”。 2019 …

kafka java.net.UnknownHostException: node4 Error connecting to node node4:9092

解决&#xff1a;修改kafka的server.properties文件 vim /kafka安装路径/config/server.properties 去除下面这行配置的注释&#xff0c;并设置对应的ip地址 #advertised.listenersPLAINTEXT://your.host.name:9092 advertised.listenersPLAINTEXT://192.168.92.104:9092 重启…

看全新升级的KubeSphere 3.0 如何助力企业在容器混合云时代乘风破浪?

数据时代&#xff0c;层出不穷的创新型业务对企业IT提出了更高的要求&#xff0c;业务、技术和管理方面的挑战也逐渐显现。对此&#xff0c;越来越多的企业希望能够快速、简单地创建企业应用&#xff0c;敏捷地满足业务创新的需求&#xff0c;同时还能维持极高的企业级服务水平…

5G的7大用途,你知道几个?

阿里妹导读&#xff1a;5G时代悄悄来临&#xff0c;甚至成为街头巷尾都在讨论的话题。相信你一定有过一些疑问&#xff1a;什么是5G&#xff1f;仅仅只是网速更快吗&#xff1f;5G如何做到毫秒级的延迟&#xff1f;网络切片是什么&#xff1f;5G的标准之争是怎么回事&#xff0…

ALive:淘宝双11直播,技术同学却可以“偷懒”?

“疯狂的”淘宝直播间 今年直播又火了&#xff01; 2019年双11淘宝直播带来近 200亿 成交&#xff0c;以天猫双11交易总额2684亿计算&#xff0c;直播已经占总成交额的近 7.45%&#xff01; 今年的变化 除了以往的手淘和猫客&#xff0c;现在 UC 浏览器、新浪微博、支付宝、…

虚拟机安装centos

到官网下载centos系统&#xff1a; https://www.centos.org/download/ 有三种选择&#xff08;DVD IOS&#xff0c;Everything IOS, Minimal IOS(精简版的)&#xff09;&#xff0c;建议使用DVD IOS 安装虚拟机&#xff1a; #选择典型安装&#xff1a; #选择稍后安装&#…