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

star2017 1年前 ⋅ 7910 阅读

作者:桑海龙 AICUG 人工智能社区

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

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

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 技术的落地、迭代与优化过程,最后介绍线上效果,针对系统仍存在的问题进行了未来展望。


本文地址:https://www.6aiq.com/article/1629197911480
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出

更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: