基于Siamese网络的zero-shot意图分类

原文地址:Zero-Shot Intent Classification with Siamese Networks

通过零样本意图分类有效定位域外意图

2021 年 9 月 24 日

意图识别是面向目标对话系统的一项重要任务。意图识别(有时也称为意图检测)是使用标签对每个用户话语进行分类的任务,该标签来自预定义的标签集。

分类器在标记数据上进行训练,并学习区分哪个话语属于哪个类别。如果一个看起来不像任何训练话语的话语来到分类器,有时结果会很尴尬。这就是为什么我们也会对“域外”话语进行分类,这些话语根本不属于域。

img

意图分类器对话语进行分类。在这里,示例领域是机票预订和“嘿,兄弟,你是机器人吗?”是一个域外的话语。作者图片

问题是用户和我们开发人员生活在不同的语言中。开发人员希望留在语义丛林中的安全农场(所谓的领域),但用户并不十分了解分类器或聊天机器人NLU是如何工作的(他们也不必知道)。你不能指望用户保持在正确的语义领域,相反,你应该赋予你的聊天机器人处理良好话语的技能。

img

你的安全语义农场在口语的野性。你永远不知道从野外来的是什么!作者图片

在这篇文章中,我们将讨论如何通过检测哪些话语属于域,哪些话语不在域内来保持域的完整性,Chris是我们的司机语音助手。首先,我将介绍Chris域和话语,然后我们将讨论什么zero-shot学习文本分类与Siamese网络。

Chris Domain and Data

Chris是司机的语音助手。我们的Chris是一个驾驶助手,由德国自动实验室制造。Chris可以发送/阅读短信,WhatsApp消息,打电话给电话联系人,播放音乐,导航,响应天气查询和聊天。

img

img

我们的 Chris,在左边。Chris和他的能力,在右边。图片来自德国汽车实验室网站。

Chris是一个以任务为导向的会话代理,因此用户的话语通常简洁而切中要害。这些是典型的用户话语:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
play music
some music please
stop the music
send a message
send a message to Tess
send a whatsapp
read my messages
do I have any new messages
display the latest message
start the navigation
show navigation
show the map
stop the navigation
nearest gas station
find a parking spot
read it
no cancel
cancel
yes
next
no next
tell me the time
how is the weather today

意图名称由子域名和动作名称组成。以下是与上述话语相对应的一些意图名称:

1
2
3
4
5
6
7
8
9
10
11
music.play
music.pause
messages.write
messages.read
navigation.start
navigation.stop
universals.accept
universals.reject
universals.next
misc.time
misc.weather

域外话语呢?下面是一些例子:

1
2
3
4
5
6
7
8
9
10
11
hey siri
launch siri
wake up siri
open my instagram
share my video on instagram
delete my facebook account
play my audibooks
set an alarm
show alarms
please delete all alarms
open the doors

这是完全正常的用户要求一些功能,你的聊天机器人根本没有。例如,打开车门根本不在克里斯的技能范围内。尽管UX团队在每个包装中都包含了关于Chris技能的指导方针,但用户可能会跳过它..这就是为什么您的聊天机器人NLU应该始终准备好处理广泛的域外话语,用户要求的是他们可以想象到的聊天机器人可以实现的能力,而不是用户手册中写的那些。

简短的话语乍一看可能很“容易”,但也有一些挑战。语音识别错误可能会给人带来困难,特别是在短的话语中,因为语义上至关重要的单词可能会从话语中丢失(例如“play music”中的“play”)。此外,语音引擎必须在正确的时间开始倾听,否则它可能会错过一个单词,短的话语,如“yes”,“no”,这对解决上下文至关重要。从WER的角度来看,仅仅缺少3个字母并不是一个严重的ASR错误,但如果您的代理多次要求用户批准,则可能会给用户带来挫败感。所有的语音机器人都有声学和语义方面的挑战,永远不要低估使用语音的挑战。

什么是zero-shot文本分类?

零短文本分类是在一组类标签上训练分类器,并用分类器在训练集中没有看到的类标签来测试分类器的任务。NLP最近的工作集中在更广泛的背景下的zero-shot学习,zero-shot学习NLP现在意味着训练一个模型来完成它没有明确训练的任务。GPT-3是一个zero-shot学习者,吸引了相当多的关注。

在zero-shot分类中,我们用一些视觉线索或类名向分类器描述一个看不见的类。对于zero-shot文本分类,通常使用意图名称来描述意图的语义。当我第一次开始做Chris NLU时,数据是用于“常规”意图分类的。然后我开始尝试,并找到了我们的类命名方案**域。动作(音乐)。玩,导航。开始等等)确实非常适合zero-shot学习。

将标签和话语嵌入到同一空间

zero-shot文本分类的常用方法是将意图名称和话语嵌入到同一空间中。这种zero-shot算法可以像我们人类一样,通过语义组来学习意图名称和话语之间的语义关系。这根本不是一个新想法,研究人员使用单词向量来表示固定维度的文本和意图名称(例如在Veeranna at all.2016)。通过Transformers的发明,密集表示经历了一场革命,现在我们有了更多高质量的句子和单词Embeddings。

在我们的研究中,我们首先使用平均池词向量来表示话语,然后使用BERT对我们的话语进行编码来生成话语向量。首先让我们看看当我们使用词向量时意图名称是如何与话语结合在一起的。我们使用了100维手套向量。我们通过平均一个话语的词向量来生成句子Embedding。为了得到标签的Embedding(例如music.play),我们平均了域(music)和动作(play)的Embeddings。在为所有话语生成Embedding之后,我们使用t-SNE将数据集转换为二维(出于可视化目的)。下面的散点图显示了所有数据集的话语和意图名称,具有相同意图的话语用相同的颜色表示:

img

Chris的话语,每种颜色都代表一种意图。

这就是话语和意图名称的排列方式:

img

Embedding意图名称和话语到同一空间

如果我们放大一点,我们会看到意图名称和相应的话语确实非常一致:

img

放大到上面的视觉效果

数据集的话语创建了一个相当漂亮的散点图,没有太多的异常值,相同的意图的话语与意图名称组合在一起。

如果我们想用BERT嵌入话语和意图名称呢?这对话语很有效,但意图名称不是真实的句子和简短的表达。BERT是针对完整句子进行训练的,对于像我们的意图名称这样的简短表达可能不太有效。在这种情况下,我们可以通过BERT为话语创建768维Embeddings,并通过词向量为意图名称创建100维Embeddings。为了将它们嵌入到相同的空间中,我们需要计算一个投影矩阵φ,将768个模糊的话语向量投影到100维意图向量上。由于我们有标注的数据,我们可以通过回归来学习投影矩阵。(尽管包含正则化以防止过拟合很重要)。然后我们有一个类似于上面的视觉对齐。

用于zero-shot文本分类的Siamese网络

上面的探索性数据分析告诉我们,意图名称和话语之间的语义相似性是非常明显和可学习的。然后我们可以要求Siamese神经网络学习意图名称和话语之间的相似性。

传统的意图分类器输入一个话语并生成一个类标签。通常我们用LSTM或BERT对话语进行编码,然后将编码后的话语输入到Dense层并得到一个类标签:

img

传统的意图分类器。by作者

我们的zero-shot意图分类器会学习标签和话语在语义上是否相似。我们使用了Siamese网络架构,这对于计算语义相似度非常有用。我们的Siamese网络输入一个意图名称和一个话语;输入相关或不相关的输出。

架构与我在我之前的SiameseNN文章中描述的相同。该体系结构包括

  • LSTM/BERT层对话语和标签进行编码
  • 然后是距离层,计算话语和标签之间的语义距离
  • 最后是一个Dense层,将距离向量压缩为二进制值

该体系结构仍然是一个文本分类器,但此时输入数为2,输出向量维数仅为1。输出为二进制,0表示标签与话语不相关;1表示该话语属于该标签的类。

img

Siamesezero-shot意图分类器。作者图片

我们可以向Siamese分类器询问任何我们想要的标签(即使分类器以前从未见过这个标签),只要我们能为标签提供一个良好的Embedding。这对于域外的话语来说是很好的,因为即使你没有任何标记好的类数据或只有几个例子,Siamese zero-shot分类器仍然可以决定一个话语是否与Chris域相关或与域不相关。

Siamese网络用于语义相似已经有很长一段时间了,但是玩一些技巧可以让我们毫不费力地获得zero-shot意图预测模型。有时候,这个想法一直就在你面前,但你必须从不同的角度去看待它。

在本文中,我们继承了一种全新的方法来解决“传统”的意图分类问题。首先,我们对Chris的话语进行了语义分组。然后,我们刷新了关于Siamese网络的知识。最后,我们看到了如何使用Siamese网络进行zero-shot分类。

我希望所有的读者都喜欢我们的Chris的能力和数据,并希望在更多的Chris文章中见到你。在那之前,请保持关注和健康❤️

参考文献

  • Language Models are Few-Shot Learners, https://arxiv.org/abs/2005.14165
  • Are Pretrained Transformers Robust in Intent Classification?
    A Missing Ingredient in Evaluation of Out-of-Scope Intent Detection https://arxiv.org/pdf/2106.04564.pdf
  • Detecting Out-Of-Domain Utterances Addressed to a Virtual Personal Assistant https://www.microsoft.com/en-us/research/wp-content/uploads/2014/09/IS14-Orphan2.pdf
  • Using Semantic Similarity for Multi-Label Zero-Shot
    Classification of Text Documents , https://www.esann.org/sites/default/files/proceedings/legacy/es2016-174.pdf

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云手机的境外舆情监控应用——助力品牌公关

在当今数字化时代,社交媒体已成为品牌传播和互动的主要平台。随之而来的是海量的信息涌入,品牌需要及时了解并应对海外社交媒体上的舆情变化。本文将介绍如何通过云手机进行境外舆情监控,更好地帮助企业公关及时作出决策。 1. 境外舆情监控与…

图像实现曲面屏效果

图像实现曲面屏效果 双线性插值 双线性插值是一种常用的图像插值方法,用于在图像中两个相邻像素之间进行插值,以获取介于它们之间某个位置的像素值。在透视变换等情况下,由于原始图像的像素点与目标图像的像素点位置不完全重合,…

HTML入门:推荐1款免费好用的web开发工具

前言 你好,我是云桃桃。 在过去的 10 年里,我一直专注于 web 前端开发领域,积累了丰富的经验和知识。 所以,接下来,我会把自己所学所做给体系化输出,我将持续与你分享关于 HTML、CSS、JavaScript&#x…

yolov7添加spd-conv注意力机制

一、spd-conv是什么? SPD-Conv(Symmetric Positive Definite Convolution)是一种新颖的卷积操作,它主要应用于处理对称正定矩阵(SPD)数据。在传统的卷积神经网络(CNN)中,…

天拓四方工业物联网网关在质量管理方面的应用

项目背景 某印刷企业为了提高产品质量和客户满意度,决定建立印刷质量追溯系统,以便对生产过程中的关键参数和产品质量进行追溯和管理。 应用方案 该企业选择了一款具备数据采集和传输功能的工业物联网网关,并与印刷机、切纸机等核心设备进…

【脑科学相关合集】有关脑影像数据相关介绍的笔记及有关脑网络的笔记合集

【脑科学相关合集】有关脑影像数据相关介绍的笔记及有关脑网络的笔记合集 前言脑模板方面相关笔记清单 基于脑网络的方法方面数据基本方面 前言 这里,我将展开有关我自己关于脑影像数据相关介绍的笔记及有关脑网络的笔记合集。其中,脑网络的相关论文主要…

MySQL篇—执行计划之覆盖索引Using index和条件过滤Using where介绍(第三篇,总共三篇)

☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…

vscode 本地/远程添加python解释器

文章目录 1. 背景2. 增加python解释器 1. 背景 我们在使用 vscode 去远程调试代码时,如果环境存在多个 Python 版本(如用 conda 管理),没有选择正确的 Python 解释器会导致少包、库不适配等各种问题 2. 增加python解释器 windo…

kubernetes(k8s)集群超级详细超全安装部署手册

一、卸载k8s 针对机器已安装过k8s的情况,如未安装过,请忽略。 # 首先清理运行到k8s群集中的pod,使用 kubectl delete node --all# 使用脚本停止所有k8s服务 for service in kube-apiserver kube-controller-manager kubectl kubelet etcd k…

Linux的进程的概念

目录 1.冯诺依曼体系结构(硬件) 2.操作系统(软件) 2.1概念 2.2设计os(操作系统)的目的 2.3如何理解管理 2.4系统调用和库函数概念 3.进程 3.1基本概念 3.2描述进程-PCB和组织进程 3.3ps axj指令 3.4查看进程 3.5通过系统调用获取进程表示符(P…

价格腰斩,腾讯云2024优惠活动云服务器62元一年,多配置报价

腾讯云服务器多少钱一年?62元一年起,2核2G3M配置,腾讯云2核4G5M轻量应用服务器218元一年、756元3年,4核16G12M服务器32元1个月、312元一年,8核32G22M服务器115元1个月、345元3个月,腾讯云服务器网txyfwq.co…

Mac M系列芯片如何重新安装系统

使用可引导安装器重新安装(可用于安装非最新的 Mac OS,系统降级,需要清除所有数据,过程确保连接上网络,虽然这种方式不会下载 Mac OS,但是需要下载固件等信息) 插入制作好的可引导安装器&#x…

如何在Linux使用Docker部署Redis并结合内网穿透实现公网远程连接本地数据库

文章目录 前言1. 安装Docker步骤2. 使用docker拉取redis镜像3. 启动redis容器4. 本地连接测试4.1 安装redis图形化界面工具4.2 使用RDM连接测试 5. 公网远程访问本地redis5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 正文开始前给大家推荐个网站…

pandas.DataFrame新增列、dropna()方法-丢弃含空值的行、列;inf的处理技巧

在Dataframe中新添加一列 直接指明列名,然后赋值就可 import pandas as pddata pd.DataFrame(columns[a,b], data[[1,2],[3,4]]) data >>> dataa b 0 1 2 1 3 4 添加一列’c‘,赋值为空白值。打印出来 data[c] data >>>…

汽车碰撞与刮伤的实用维修技术,汽车的车身修复与涂装修补教学

一、教程描述 本套汽车维修技术教程,大小7.44G,共有60个文件。 二、教程目录 01-汽车车身修复教程01-安全规则(共3课时) 02-汽车车身修复教程02-汽车结构(共3课时) 03-汽车车身修复教程03-汽车修复所使…

Ambari动态给YARN分配计算节点

1.前言 YARN可用的计算节点数量并不总是等于 Hadoop集群节点数量,可以根据业务需求分配 YARN计算节点数量。 这里首先介绍一些前置知识: YARN中 ResourceManager 和 NodeManager是两个核心组件,其中 ResourceManager负责集群资源的统一管理…

【java数据结构】模拟二叉树的链式结构之孩子表示法,掌握背后的实现逻辑

📢编程环境:idea 📢树结构,以及叶子,结点,度等一些名词是什么意思,本篇不再赘述。 【java数据结构】模拟二叉树的链式结构之孩子表示法,掌握背后的实现逻辑 1. 认识二叉树1.1 二叉树…

社区店引流推广秘籍:让你的店铺人气爆棚

作为一名开鲜奶吧5年的创业者,我深知在如今竞争激烈的市场环境下,开一家成功的社区店并非易事。 从选址到装修,从商品选择到服务提升,每一个环节都至关重要。但其中,引流推广无疑是让店铺人气爆棚、脱颖而出的关键所在…

力扣hot100题解(python版33-35题)

33、排序链表 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2: 输入:head [-1,5,3,4,0] 输出:[-1,0,3,4,5]示例 3&a…

紫光展锐T618_4G安卓核心板方案定制

紫光展锐T618核心板是一款采用纯国产化方案的高性能产品,搭载了开放的智能Android操作系统,并集成了4G网络,支持2.5G5G双频WIFI、蓝牙近距离无线传输技术以及GNSS无线定位技术。 展锐T618核心板应用旗舰级 DynamlQ架构 12nm 制程工艺&#x…