Press "Enter" to skip to content

NER技术在对话系统中的应用实践

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

导读

 

在58同城C端用户和B端商家IM微聊在线沟通场景下,我们应用对话机器人打造了商家智能聊天助手,对话机器人通过 与C端用户沟通获取商机反馈给B端商家。 在人机对话过程中我们需要识别出电话、地址、时间、服务对象等商机信息。 本次议题将重点分享对话场景下的NER技术实践,首先介绍模型选型,然后介绍数据增强、模型融合、对话上下文引入等调优经验。

 

嘉宾介绍: 桑海龙,58同城AI Lab算法高级工程师,2019年10月加入58同城,目前主要负责智能客服算法研发工作。2017年硕士毕业于哈尔滨工业大学,曾就职于猎豹移动,从事多轮对话算法研发。

 

PPT下载链接:

 

关注58技术公众号回复 “NLP沙龙” ,即可下载

 

01

 

背景

 

一、58同城生活服务平台简介

 

58同城是国内最大的综合性分类信息平台,业务覆盖房产、招聘、生活黄页、二手车等多个领域,平台连接着大量C端用户和B端商家用户。 黄页领域为用户提供各种生活服务信息,比如找保姆、进行二手交易,商务租车等等。 平台的业务模式是: 商家发帖,用户浏览帖子,通过平台建立连接,最终达成服务。 在服务过程中,所有用户在平台遇到使用问题时都会咨询58人工客服,C端用户和B端商家也会通过IM微聊进行大量的沟通,单纯依靠人工沟通会耗费巨大的人力资源。

 

 

在C端用户和B端商家通过IM微聊在线沟通时会遇到很多痛点,具体如下:

 

(1)商家回复不及时,导致商机流失严重

 

(2)服务成本高,商家服务话术不标准

 

(3)聊天分流不均匀,人工客服账号只能接待其绑定的商家对应的用户

 

二、黄页商家智能聊天助手

 

我们自2017年开始研发了58智能客服系统,提供自动问答机器人、人工IM在线沟通和智能辅助聊天整套解决方案,已被广泛应用于58同城各业务客服团队和用户沟通场景,大大节省了客服人力。 鉴于C端用户和B端商家通过IM微聊在线沟通存在前述问题,2019年,我们将智能客服应用于58平台C端用户和B端商家IM在线沟通场景,打造智能客服商家版平台,为B端商家提供智能聊天助手,提高了商家获客效率。

 

 

下图展示了黄页微聊代运营这一典型场景的业务模式,当用户在微聊内向B端商家咨询服务时,会经过智能路由根据目前坐席情况进行自动问答承接方的分配,分配给人工坐席或AI机器人。当前咨询若分配给AI机器人时,机器人可以根据商家帖子内容回复用户的业务咨询,并利用多轮对话技术主动对用户进行商机(如手机号、地点、预期价格等信息)引导和识别,当机器人识别出商机后会将商机信息同步给B端商家,以助力B端商家成单。从而提高了商家获客效率。

 

 

三、AI技术作用于商业,纯服务带来收入

 

黄页商家智能聊天助手包含在各个生活服务会员套餐当中,不同价位的生活服务会员套餐具有不同的服务功能和服务次数,这是AI技术作用于商业,纯服务带来的收益。下图展示了一些可选的生活服务会员套餐。

 

 

02

 

NER技术应用实践

 

一、任务型对话系统架构

 

通常任务型对话系统(taskbot)由自然语言理解(NLU)、对话状态追踪(DST)、对话策略(DP)和自然语言生成(NLG)四个模块构成。在我们的对话系统架构中,将对话状态追踪与对话策略两个模块一起建模为对话管理(DM)模块。在初始版本我们实现了基于有限状态机(FSM)的采用节点配置的对话管理系统,将对话配置抽象为四种节点,可以高速快捷的配置对话流;由于配置具有的局限性,后续我们在部分类目上采用强化学习构建对话管理器,也取得了不错的效果。下图展示了整个对话系统的架构以及一次交互的发生过程:

 

 

在上述对话系统,NER技术通过识别实体,为整个对话系统提供必要槽位信息,同时收集这些信息也是整个对话系统的核心目的。

 

在黄页微聊代运营场景中,需要识别各类商机信息,尤其黄页下大量的业务线所需要的商机信息皆不尽相同,如:“保姆月嫂”类目需要知道服务对象商机,而“奢侈品回收”业务线需要知道品牌商机……但是所有的类目均需要用户的联系方式,因为B端商家与C端用户沟通的目的在于最终成单,而这一过程需要能够与用户更直接的联系渠道。所以我们将商机分为核心商机与丰富度商机两种类型。

 

核心商机(联系方式)

 

电话、微信

 

丰富度商机(46类)

 

地址、时间、物品名称、服务对象……

 

二、NER技术实践历程

 

在业务需求初期,需要快速上线商机识别功能,具备识别能力以满足需求,且在初始阶段由于缺乏标注训练数据,难以开展模型训练并部署上线,因此我们采用正则结合词典的方式,进行了快速上线与优化迭代;在中期积累了一定的标注数据之后,我们尝试采用NER模型进行商机识别,进行了一系列的模型选择与优化工作,最终达到上线状态;最后为了结合二者的优点并进一步提升效果,我们尝试了一些融合与探索实验。

 

 

NER任务是一个序列标注任务,序列标注就是给句子当中的每一个词打上标签,而后提取出我们所需要的关键词;标签的格式通常有IOB2和IOBES两种标准,我们的NER构建时最终选取了IOB的方式,标签的含义具体如下:

 

 

三、NER算法选型

 

在积累了一定的标注数据之后,我们尝试采用NER模型进行商机识别任务。我们尝试了几种业界通用的基于深度学习的NER模型,如BiLSTM+CRF、IDCNN+CRF、BERT等模型,并在此基础上进行了一些对比实验,最终选取IDCNN+CRF作为我们的线上模型。

 

1)、NER模型之BiLSTM+CRF

 

BiLSTM是NLP任务中常见的深度学习模型,它具备强大的捕获句子全局信息的能力,同时通过各种门机制的添加,有效避免了原生RNN模型存在的梯度消失问题,但其对局部信息的感知也不强。将BiLSTM应用于NER当中,采用BiLSTM模型提供表征能力,在其后添加CRF层,以防止出现非法的序列标记结果,从而构成了BiLSTM+CRF这一经典命名实体识别架构,其整体结构如下图所示:

 

 

2)、NER模型之IDCNN+CRF

 

在IDCNN+CRF模型结构中,待识别query先经过Embedding层获取向量表示;然后经过空洞卷积层(IDCNN),IDCNN通过空洞卷积增大模型的感受野, 相较于传统的CNN,IDCNN能够捕捉更长的上下文信息,更适合序列标注这类需要全局信息的任务;在IDCNN之后经过一层全连接神经网络(FF层)后引入CRF,同样CRF的目的在于防止非法槽位标记(BIO)的出现。其模型结构如下所示:

 

 

3)、NER模型之BERT

 

BERT是2018年谷歌提出的预训练语言模型,初现于世间变革新了NLP之路。它采用transformer的结构,通过MLM和NSP两项任务对大量无监督预料进行预训练,以提取语言本身的知识。而后在下游自然语言处理任务上只需要进行少步数的finetune即可取得梦幻般的SOTA效果,一问世便刷新了各项NLP任务的最好结果。采用BERT进行NER任务只需要在每个token对应的位置后接上softmax即可。其具体架构如下:

 

 

4)、NER模型之CRF的作用

 

在上述模型中,在NER任务上,我们看到很多深度学习之后都会接上一层CRF,那幺CRF在整个过程中到底发挥着什幺样的作用呢?通常我们直接使用逐帧softmax时,是将序列标注过程作为n个k分类问题,相当于每个token相互独立的进行分类(假设深度模型内部交互不明显的话),而采用CRF实质上是在进行一个k^n分类,相当于直接从所有的序列空间里找出转移概率最大的那条序列。其实质上是局部最优(token最优)与全局最优(序列最优)的区别,因而采用CRF能够有效避免出现非法的序列标记,从而确保序列有效。下图展示了一个softmax导致序列标注异常的案例。

 

 

5)、NER模型之效果对比

 

在展示了上述几种模型的结构之后,我们进行了一些实验来对比各个模型的效果,以BiLSTM+CRF作为基线模型(ACC达到89.21%),具体如下:

 

① IDCNN与BiLSTM效果相差不大,但IDCNN推理耗时(4核心cpu情况下<9ms)更小;

 

② BERT+softmax取得了同组最好的模型效果。这说明BERT之上再接深度学习复杂结构(甚至是CRF),效果反而不好,推测是由于拟合能力太强得不偿失;

 

③ BERT+softmax推理耗时(接近100ms)与浅层模型相差巨大。可以通过缩减层数与隐层大小来降低耗时,但是效果同样会打折扣;先前我们在分类任务上的实验表明,随“剪枝”程度变化,bert效果通常会降低两个点以上。

 

在权衡了效果与耗时之后,最终我们选择了IDCNN+CRF作为我们的线上模型

 

 

四、NER模型效果优化

 

在采用NER模型识别商机之后,我们首先进行了数据分析的工作,首先在项目初期启动阶段,我们所能获取的标注数据十分有限,尤其是含有商机的标注数据很少;其次在有限的标注数据中,不同商机的分布也存在着严重的不均衡问题,少数商机只有屈指可数的带标签数据;最后,NER序列标注任务本身也存在着token的label不均衡问题,IOB标注准则必然导致大量O标签数据。针对这些问题我们进行了一些优化方案的尝试。

 

 

1)、模型优化之数据增强

 

针对启动阶段存在的数据不足问题,首先我们想到了采用数据增强的方式来补充训练数据,尤其是对含有商机实体的数据进行增强;同时,采用数据增强同样也可以缓解不同商机分布不均衡的问题,我们可以优先或者说更多的增强少数据商机的训练数据。对于数据增强的方式,我们尝试了如下两种方案:

 

同标签token替换(LwTR)

 

采用二项分布概率对句子进行采样,概率替换某位置的token为同标签其它token,如果token长度不一致,则进行延展,句子长度发生变化。

 

同义词替换增强(SR)

 

采用二项分布概率对句子进行采样,概率替换某处分词为同义词/领域词词典的其它词语,如果某词为标记词,则词语整体采用标记。

 

 

由上图我们可以发现,上述数据增强过程依赖实体词典的取值,并且在启动阶段也存在着词典取值稀缺的问题,补充词库同时可以提升规则词典识别的效果,因此,我们需要一套完整的词库构建与扩充过程。我们采取的词库构建与更新方式如下图所示:

 

 

其中的核心在于同义词/领域词的补充和挖掘,在实际的业务场景中,我们有人工获取和机器挖掘两种方式补充,具体如下:

 

人工获取方式—人工客服会话中上报的商机数据

 

人工获取方式—编辑人员每周线上评测标注数据滚入

 

机器挖掘方式—使用百度百科对入库词爬取别称

 

机器挖掘方式—引入同义词词典扩充入库

 

机器挖掘方式—构建词向量表征进行相似度计算召回

 

2)、模型优化之Focal Loss

 

上文数据分析中,我们提到NER任务的建模方式本身存在BIO标签的分布不均衡问题,这一点我们考虑从优化层面来缓解该问题。

 

针对CV目标检测任务中存在的数据不均衡问题, FAIR的何恺明大佬研究团队在2017年提出了Focal loss,该论文获得了ICCV 2017的最佳学生论文。虽然是在CV任务上被提出的,但在NLP任务上,尤其是NER任务上,这一方法同样有效。由于NER任务本身O标签分布数量远远多于BI标签,这一点与目标检测场景很是相似,故而我们尝试了FL损失函数。

 

 

3)、模型优化之效果对比

 

针对NER模型识别商机过程中发现的标注数据量不足、商机分布不均衡以及BIO标签分布不均衡的问题,我们尝试了上述几种方案进行优化,并进行了一系列组合实验来验证上述策略的效果,实质上我们是想回答如下几个问题:

 

① FL(Focal Loss)与CRF并不兼容,但是几乎不会新增额外的时间开销,有没有可能采用softmax+FL代替CRF?

 

② DA(数据增强)对NER模型是不是有增益,是不是一直有效?

 

③ BERT模型本身学习能力强,不采用CRF效果怎幺样?

 

经过实验我们发现,在基模型为IDCNN时,直接采用FL替换CRF,效果出现了一定的下降,这说明CRF对于IDCNN这类模型是必须的;但是BERT+FL相对容忍度较好,对BERT来说,不采用CRF并不影响其模型性能;而DA(数据增强)策略对所有模型都有提升效果,且效果很显着。

 

 

融合识别与探索

 

1)、融合识别

 

针对不同的商机类型,实际上分别适合于规则识别与模型识别。如核心商机中的电话商机,由于其模式很固定,采用规则识别比较容易达到较高的准召效果;而类似地点这种商机类型,较难以采用规则或者词典进行识别,因而比较依赖于模型识别。同时,规则&词典识别由于边界和范围可控因而具有不错的识别准确率,由于同样的原因其对词典或者规则涵盖以外的商机,难以召回;而模型具备良好的泛化性能,基于上述原因,我们尝试将规则识别与模型识别相结合,来构建我们的融合识别策略。其具体结构如下:

 

 

采用上述融合识别策略,核心商机的F1值绝对提升了1.65%,而丰富度商机的F1值局对提升1.33%,效果还是十分显着的。

 

2)、模型探索-引入上下文信息

 

同时,我们还发现有一些商机识别过程对会话级别的上文信息有较强的依赖作用,如核心商机中微信商机的识别,由于用户在给出微信号码时,很多时候倾向于直接给出,当前轮次前后没有任何辅助信息。这样很容易与手机型号(很多类似字符串符合微信的命名规范)这类字符串混淆,从而干扰模型的识别效果。因而模型需要注意到当前轮次所处的会话环境,尤其是用户在前文轮次提到的信息。

 

在这种情况下,我们尝试了采用表示学习(representation)引入context信息,来辅助NER模型进行商机识别的尝试。具体如下:

 

 

其主要过程分为两步:

 

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

 

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

 

03

 

总结与展望

 

一、线上效果总结

 

在项目启动初期,为了快速支持业务上线,我们首先采用规则&词典的方式现行支持了商机识别系统的上线;而后通过快速优化与迭代手段对规则和词典识别的效果进行优化,效果得到了一定的提升;而后在积累了一定的训练数据之后,我们尝试选取NER模型对商机识别进行优化,最终选定了IDCNN+CRF模型进行上线和优化;最后我们结合规则盒模型的优点,采用融合识别的策略进行线上效果优化。针对我们的整个迭代历程,对线上的效果进行了总结,具体如下:

 

 

二、问题与规划

 

尽管我们对NER在实践过程中的不少问题进行了优化,但是仍有可以进一步提升的空间,目前在实际的业务场景当中,仍然存在如下两个问题:

 

① 在业务场景下,需要快速支持新的商机类型识别上线

 

② 存在部分偏向于描述性的商机较难以识别

 

针对上述两个问题,在未来我们计划通过如下手段进行解决:

 

① 在NER模型中运用小样本学习,以快速支持新增商机上线

 

② 尝试DAGA:一种单独适配于NER任务的数据增强方法

 

③ 采用信息抽取的方式识别部分商机类型

 

④ 尝试其它预训练语言模型的实验,如Roberta/WWM/DistillBert等

 

小结

 

本文围绕任务型对话系统中的NER技术实践过程,首先介绍了对话系统所处的业务背景,接着详细介绍了NER技术的落地、迭代与优化过程,最后介绍线上效果,针对系统仍存在的问题进行了未来展望。

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注