对话系统之NLU

核心思路

意图识别NLU,一般作为多分类问题,需求是对给定query进行分类,找到最可能的主问题类别。

对话系统之NLU2.0,核心思路是以搜代分(检索+排序):

离线:

  • 训练一个语义相似度表征模型。
  • 用表征模型预测每一个知识库内标准问的语义向量。
  • 将语义向量入库,即存入检索es库中

在线(来了一个query请求):

  • 用上面训练的表征模型预测query的向量。
  • 通过传统检索方法召回top n候选集。
  • 根据相似度完成对top n候选的排序。

离线

离线负责数据预处理、数据集构建、模型构建、模型训练、物料/索引问的向量预测、索引构建入库的核心操作,当然一些服务的基本配件,比如一键打包/部署的脚本、定时任务、日志、监控、校验等任务也会有

索引构建入库的2种方式:

  1. 切词,然后做倒排索引,即传统的search切词倒排索引模式

  2. 现在比较潮流的做法就是把文本转化为向量然后做成向量索引,即泛化程度较高的语义向量索引

语义相似度表征模型方案1:

  • 采用 AM-Softmax,它是一种带margin的softmax,通常用于用分类做检索的场景
  • 分类任务的目标是“最靠近所属类的中心”,而排序的目标是“类内差距小于类间差距”
  • 为了保证分类模型的特征可以用于排序,那么每个样本不仅仅要最靠近类中心,而且是距离加上 $m$​ 之后还要最靠近类中心,这便是带加性margin的Softmax的重要性!
  • 最后,取CLS层输出,直接进行余弦相似度计算

图片1

语义相似度表征模型方案2:

  • 分类相似性学习-Pointwise
    即将句子相似度视为二分类模型(sigmoid接近1更相似);
  • 度量学习
    即将句子相似度视为排序关系学习问题;
  • 采用Listwise的训练方式,如:ListNet
    正负例采样
    主问题+相似问+负采样多个
    取度量模型的隐层进行ranking

图片2

语义相似度模型选择:

1、Poly-encoders

论文名称:ICLR 2020 | Poly-encoders: Transformer Architectures and Pre-training Strategies for Fast and Accurate Multi-sentence Scoring

arxiv地址
https://arxiv.org/pdf/1905.01969.pdf

论文解读:
https://jishuin.proginn.com/p/763bfbd2cb83

解决双塔式交互不足以及交互式速度慢的问题!

2、Keyword-BERT

论文名称:Keyword-Attentive Deep Semantic Matching

arxiv地址https://arxiv.org/pdf/2003.11516.pdf

中文解读:基于关键字注意的深层语义匹配模型远离送命题: 问答系统中语义匹配的『杀手锏』

Code: https://github.com/DataTerminatorX/Keyword-BERT/tree/master/keyword-bert

注意:如果我们不能提供足够的训练样本,去教会模型分辨出『关键信息』,光凭模型自身的花式 CNN/RNN/Attention,纵使使出浑身解数,在一些很难分辨的 case 上也未必work!!可以考虑 Keyword-BERT

本文的主要贡献如下:

  1. Keyword-attentive BERT:在 BERT 的最后一层引入一个额外的 keyword-attentive 层,目标是在注意力机制中强调关键词与非关键词之间的交互。通过明确地 “告诉” 模型哪些是重要的词,实验表明 Keyword-attentive BERT 优于原始 BERT。
  2. 更好的负采样训练更鲁棒的模型:提出了一种新的负采样方法,该方法采用 keyword 重叠分数来选择信息更丰富的负样本。此外,应用实体替换技巧来生成更多种类的负样本,比如将实体 “China” 替换成 “America”,经过数据增强,模型训练得更加鲁棒。
  3. Keyword 抽取:提出一种利用领域信息的简单有效的关键字提取算法,抽取出来的关键字可以在三个方面使用:a. 建立 keyword-attentive 深层语义匹配模型,b. 提高 QA 搜索引擎的召回质量,c. 改进负采样训练一个更好的语义匹配模型。

img

3、SimNet

服务地址:Paddle短文本语义匹配—SimNet

短文本语义匹配(SimilarityNet, SimNet)是一个计算短文本相似度的框架,可以根据用户输入的两个文本,计算出相似度得分。SimNet框架在百度各产品上广泛应用,主要包括BOW、CNN、RNN、MMDNN等核心网络结构形式,提供语义相似度计算训练和预测框架,适用于信息检索、新闻推荐、智能客服等多个应用场景,帮助企业解决语义匹配问题。可通过AI开放平台-短文本相似度线上体验。

同时推荐用户参考 IPython Notebook demo

在线

在线则有query/用户的向量预测、向量召回的工作(facebook开源的向量召回工具faiss等)。用户请求query输入,把它用离线训练好的模型转化为向量。之后通过传统检索召回一批和query字面相似的结果,经过一些规则并根据相似度进行排序,即可得到与之最接近的top主问题。除此之外,当然也有日志、监控、热更新、服务等其他算法服务也会有的工作。

NLU2.0 优缺点

优点是:

  • 可控性强,准确率高

    可以通过备选query的上下线来进行干预

  • 把文本分类问题实质上转化为一个比较通用的相似度任务

    语义相似度模型的构建相对简单,可以用外部数据进行训练,不需要领域内标注数据。

  • 可以通过加备选query(别名)完成很多个分类的配置,从而实现多分类

    对于样例数较少的类别比较友好,能够解决长尾问题?

但是也有缺点:

  • 需要足量的备选query才能够实现较为精准的预测,缺少的话会影响召回。

Tips:

  • 对于类目比较多的文本分类,我们可以把问题拆分,部分高频的可以用普通的文本分类来处理
  • 对于长尾的,文本分类多分类其实很难处理,很容易学不到,因此就可以用文本检索的方式来处理

参考

心法利器[26] | 以搜代分:文本多分类新思路

心法利器[16] | 向量表征和向量召回

心法利器[20] | NLU落地场景-智能对话交互


对话系统之NLU
http://example.com/2021/10/31/2021-10-31-对话系统之NLU/
作者
NSX
发布于
2021年10月31日
许可协议