4

帮帮商家版黄页微聊代运营中的商机槽位识别实践

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI1NDc5MzIxMw%3D%3D&%3Bmid=2247491238&%3Bidx=1&%3Bsn=efcba03c3688271eb5d43bf41dff7e1d
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

导读

58同城是国内最大的生活服务信息服务平台,平台连接着数千万C端用户和数百万B端商家,基于IM微聊和对话机器人能力构建的帮帮智能客服商家版,支持QABot单轮问答和TaskBot多轮引导能力,通过商机引导收集用户商机。将帮帮商家版应用在黄页微聊代运营场景下,打造黄页商家智能聊天助手并不断优化,机器人获取商机转化率达到了人工客服水平的85%。

背景

商机槽位识别在上述过程中,通过识别实体槽位,承担着获取用户信息的作用。本文将详细介绍商机槽位识别模块相关优化实践。

a2mQfeJ.png!mobile

商机与槽位

商机:我们将商家所需的电话、微信、地址、时间四种信息,定义为通过商机引导之后需要获取的商机;

槽位:对于每种商机下包含的不同实体类型,我们定义为槽位。

黄页代运营项目商机槽位识别模块的目的即是通过各类算法和规则识别出上述四种商机类型。

商机转化率是评估黄页代运营效果的主要指标, 商机转化率:获取商机的会话数/所有会话数

为了方便识别,这四种商机会被分拆成不同的槽位,具体如下:

  • 电话商机->mobile等3个槽位

  • 微信商机->wechat、QQ两个槽位

  • 地址商机 ->city、subway等16个槽位

  • 时间商机 ->hour、someyear等30个槽位

识别难点

尽管业界目前对实体识别这类序列标注任务的研究已经相当充分,然而结合具体的业务场景,进行商机槽位识别仍然面临着各种各样的的问题。在帮帮商家版黄页代运营项目的商机槽位识别中,我们遇到的一些问题及解决方案如下:

  • 商机间断用户对商机的表述不连续,尤其是时间、地点商机, 举例:”我想租北京的房子,将台地铁站附近的”

    解决方案:识别粒度细化,拆分商机到实体槽位地址商机->city、subway等16个实体槽位;

    最终效果:city :北京+subway :将台地铁站 = 地址:北京将台地铁站。

    需要引入商机拼接逻辑

  • 微信本身没有实体范式,品牌型号如A4L2019  、vivox5 ,符合命名规则的任意串易造成误召回,在二手回收业务线尤其明显, 举例: kefu:“亲,您方便留下您的微信吗,我们马上联系您哦~”,user:“U*****H”

    解决方案: 引入知识库黑名单后过滤处理; 模型纳入上下文学习品牌类出现环境;

最终效果: 微信识别准确率绝对提升 2.03%

  • 微信识别依赖上下文环境信息, context 轮数不足漏召回,轮数过多易导致误召回,举例: user1:“你好,你加我微信聊吧~”,user2:“我想修个手机”,user3:“进水坏了,是lzx********1”

    解决方案:人工统计分析纳入context轮数与准召、转化率的关系; 确定引入最近5轮上文历史

      最终效果:提升微信识别召回率2.57%,提升商机转化率1.29 %

整体架构

商机槽位识别模块整体采用正则+模型融合识别的方式实现,结合了规则与模型的优点;在模块迭代的过程中,跟随业务需求,从开始只支持电话、地址、时间三种商机类型,扩展到引入上下文信息,支持微信商机识别;远期计划新增支持约40种商机类型的识别,涉及商家版黄页业务线的各个子类商机槽位信息。

  • 正则优点:初期可快速实现、模式准确率高       

  • 正则缺点:规则死板、泛化性不足

  • 模型优点:泛化效果好、学习模式                         

  • 模型缺点:需要较多训练数据、badcase问题

整体结构如下图所示:

BjYZRr2.jpg!mobile

  • 支持电话、微信、 QQ正则

  • 模型支持电话、 地址、时间识别

  • 结合模型和正则结果获得最终识别结果

  • 支持引入上下文 信息,来辅助识别

模型结构

实体槽位识别是一种常见的序列标注任务,在算法选型阶段对比了序列标注领域经典的BILSTM+CRF与IDCNN+CRF的效果,同时尝试了引入时下的预训练语言模型BERT,在权衡了识别效果与推理耗时之后,最终模型采用IDCNN+CRF结构,识别共计49个实体槽位;标签的格式采用BIO标准,其中B表示实体开始位置(Begin),I表示在实体内(Inside),O表示在实体外(Outside)。

在IDCNN+CRF模型结构中,待识别query先经过Embedding层获取向量表示;然后经过空洞卷积层(IDCNN), IDCNN通过空洞卷积增大模型的感受野, 相较于传统的CNN,IDCNN能够捕捉更长的上下文信息,更适合序列标注这类需要全局信息的任务;在IDCNN之后经过一层全连接神经网络(FF层)后引入CRF,CRF的目的在于防止非法槽位标记(BIO)的出现,比如在上述标签标记原则中,I表示在实体内,因此不会直接出现在O之后,CRF的意义在于通过转移矩阵的学习,防止出现这种非法组合标记,提高模型识别的准确率。

IDCNN+CRF具体结构如下图:

UR3EneU.png!mobile

在BILSTM+CRF模型中,其整体结构与IDCNN类似,区别在于表征主体由IDCNN换成了双向LSTM,CRF在此处的作用与前者完全一致;图中的ht为LSTM隐藏层状态的初始化,此处默认随机初始化,其结构具体如下:

AF3YVrn.jpg!mobile

两种模型的整体区别在于:1.IDCNN更擅长局部信息的把握(尽管IDCNN相较于CNN能够更好的捕捉长距离依赖),而BILSTM由于能够更好的建模全局依赖信息;2.同时,相比于LSTM,作为一种卷积神经网络IDCNN的并行计算更好一些,能够更好的利用GPU的并行性。

同时,我们也尝试了使用BERT作为上述结构的基座进行实验,即将BERT模型的输出接入IDCNN或者BILSTM的输入进行训练,BERT作为NLP任务时下火热的预训练语言模型,对其结构我们不再赘述。

通过实验,以BILSTM+CRF为baseline,我们对比各模型在BIO标签上的top1 acc,我们发现BILSTM+CRF与IDCNN+CRF的效果不相上下,而引入BERT初始化之后,效果出现了不同程度的下降(-1.1%~-3.59%),推测其原因是BERT本身就具有强大的表征能力,BERT的拟合能力太强,后面接入复杂模块反而得不偿失。考虑到IDCNN的推理耗时较低,最终我们选择了IDCNN+CRF作为模型主体。

模型探索

由于微信商机的识别极度依赖上下文环境,目前微信由正则匹配来实现。同时我们实验了基于表示学习的上下文相关的槽位识别模型,该模型基于representation学习编码上下文信息,而后将该信息引入后续槽位识别模型当中去;从而使槽位识别过程能够感知上下文环境。获取表示与抽取槽位的过程如下:

y2ENRn7.png!mobile

  • 获取表示:如上图所示,模型首先采用双向GRU编码历史上文信息,通过获取隐层状态可以得到历史上文query的表示向量m,该向量可以代表历史query的信息;同样地通过另一个双向GRU, 获取当前轮用户query的表示向量c;而后分别拼接当前向量c到历史向量m上,并经过一层前馈神经网络得到新的交互向量g;此后,将g向量按照query时间顺序,通过一个双向GRU便获得了上下文整体与当前query的交互向量ht。

  • 抽取槽位:上述过程中获得的上下文向量ht,以参数初始化的方式引入先前介绍的BILSTM+CRF结构中(前述BILSTM结构图中的ht),输出槽位标签。

同时,我们也尝试了直接在现有模型上通过拼接上文的形式来进行识别微信,即将多轮query拼接成一个长query,而后通过BILSTM+CRF来识别这一个长query

目前两种模型处理方式均未达到强规则+关键词识别的效果,其中采用拼接方式的微信商机F1值较采用正则规则低7.65%;而上下文识别模型效果虽然仍低于正则规则,但已经高于拼接方式3.79%。一是由于微信本身的实体属性不强,可以由符合条件的任意字符串构成,限制了模型的识别能力;二是上下文相关模型需要积累大量数据,目前数据尚有所匮乏;因而我们继续采用正则规则识别微信商机;同时也可以看出上下文识别模型效果较拼接实现方式好出不少, 该模型的相关特点如下:

  • 优点:可支持较多轮数表征、上文信息与当前轮query有信息交互。  

  • 缺点:编码获取表征需要额外耗时、需要大量的有标注训练数据 。 

总结与展望

本文重点介绍了帮帮商家版黄页代运营场景下,对商机槽位识别模块的优化实践,其中详细介绍了采用规则和模型识别商机的整体架构,包括前期实体识别模型方案选型,针对微信识别难点,后续对上下文实体识别模型的探索。商机槽位识别作为一项NLP基础任务,在对话机器人中扮演着重要角色,与黄页代运营核心指标---商机转化率直接相关,因此需要识别商机更加准确,召回更多商机。通过对商机槽位识别的优化,促进了黄页代运营场景下商机转化率的提高,为公司带来了更多效益。

未来展望:

  • 目前只提供上述四种商机识别,B端商家获取信息较少,对识别商机的使用率不足,为进一步服务C端用户细化需求,促进B端商家对商机的使用,提高商机使用率,计划新增40种商机类型的识别,包括物品种类、数量、价格、酒水品类、面积大小等商机类型。

  • 进一步优化实验上下文相关的槽位识别模型,积累更多数据,同时尝试各类数据增强方法(如EDA等),融合上下文信息,提升模型在微信等上下文相关商机的识别效果。

  • 对BERT等预训练模型的潜力挖掘不够,后续合理设计BERT上层结构,同时精细化调整超参数。

参考文献:

[1] Lample G , Ballesteros M , Subramanian S , et al. Neural Architectures for Named Entity Recognition[J]. 2016.

[2]  Yu F , Koltun V . Multi-Scale Context Aggregation by Dilated Convolutions[C]// ICLR. 2016.

[3]  Bapna A , Tur G , Hakkani-Tur D , et al. Sequential Dialogue Context Modeling for Spoken Language Understanding[J]. 2017.

部门简介:

58同城TEG技术工程平台群AI Lab,旨在推动AI技术在58同城的落地,打造AI中台能力,以提高前台业务人效和用户体验。AI Lab目前负责的产品包括:智能客服、语音机器人、智能写稿、智能语音分析平台、智能营销系统、AI算法平台、语音识别等,未来将持续加速创新,拓展AI应用。

部门详细介绍可点击:

ailab.58.com

作者简介:

桑海龙 ,58同城TEG技术工程平台群AI Lab高级算法工程师  


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK