BERT for Joint Intent Classification and Slot Filling 论文阅读

news2024/10/5 15:23:35

BERT for Joint Intent Classification and Slot Filling 论文阅读

  • Abstract
  • 1 Introduction
  • 2 Related work
  • 3 Proposed Approach
    • 3.1 BERT
    • 3.2 Joint Intent Classification and Slot Filling
    • 3.3 Conditional Random Field
  • 4 Experiments and Analysis
    • 4.1 Data
    • 4.2 Training Details
    • 4.3 Results
    • 4.4 Ablation Analysis and Case Study
  • 5 Conclusion
  • 阅读总结

文章信息:

在这里插入图片描述

原文链接:https://arxiv.org/abs/1902.10909

源码:https://github.com/monologg/JointBERT

Abstract

意图分类和槽填充是自然语言理解中两个重要的任务。它们通常受制于规模较小的人工标记训练数据,导致泛化能力较差,特别是对于罕见词汇。最近,一种新的语言表示模型BERT(Bidirectional Encoder Representations from Transformers)在大规模未标记语料库上进行了深度双向表示的预训练,通过简单微调后为各种自然语言处理任务创建了最先进的模型。然而,对于自然语言理解,尚未有太多关于探索BERT的努力。在本工作中,我们提出了一种基于BERT的联合意图分类和槽填充模型。实验结果表明,与基于注意力的递归神经网络模型和槽门控模型相比,我们提出的模型在几个公共基准数据集上实现了意图分类准确性、槽填充F1值以及句子级语义框架准确性的显著改进。

1 Introduction

在这里插入图片描述
表1:用户查询到语义框架的示例。

近年来,各种智能音箱已经被部署并取得了巨大成功,例如Google Home、Amazon Echo、天猫精灵等,它们促进了目标导向的对话,并通过语音交互帮助用户完成任务。自然语言理解(NLU)对于目标导向的口语对话系统的性能至关重要。NLU通常包括意图分类和槽填充任务,旨在为用户的话语形成语义解析。意图分类专注于预测查询的意图,而槽填充则提取语义概念。表1展示了用户查询“找一部史蒂文·斯皮尔伯格的电影”进行意图分类和槽填充的示例。

意图分类是一个分类问题,它预测意图标签 y i y^i yi,而槽填充是一个序列标注任务,将输入词序列 x = ( x 1 , x 2 , ⋯   , x T ) x=(x_1,x_2,\cdots,x_T) x=(x1,x2,,xT) 标记为槽标签序列 y s = ( y 1 s , y 2 s , ⋯   , y T s ) y^s=(y_{1}^{s},y_{2}^{s},\cdots,y_{T}^{s}) ys=(y1s,y2s,,yTs)。基于循环神经网络(RNN)的方法,尤其是门控循环单元(GRU)和长短期记忆(LSTM)模型,已经在意图分类和槽填充方面取得了最先进的性能。最近,提出了几种用于意图分类和槽填充的联合学习方法,以利用和建模两个任务之间的依赖关系,并改善独立模型的性能(Guo等,2014年; Hakkani-Türet al.,2016年; Liu和Lane,2016年; Goo等,2018年)。先前的工作表明,注意力机制(Bahdanau等,2014年)有助于RNN处理长距离依赖关系。因此,提出了基于注意力的联合学习方法,并在联合意图分类和槽填充方面取得了最先进的性能(Liu和Lane,2016年; Goo等,2018年)。

NLU和其他自然语言处理(NLP)任务中缺乏人工标注数据导致了泛化能力的不足。为了解决数据稀缺的挑战,提出了各种技术用于训练通用语言表示模型,使用大量未标记的文本,例如ELMo(Peters等,2018)和生成式预训练Transformer(GPT)(Radford等,2018)。预训练模型可以在NLP任务上进行微调,并且相对于在特定任务的标注数据上训练,已经取得了显著的改进。最近,提出了一种预训练技术,即双向编码器表示的转换器(BERT)(Devlin等,2018),并且已经为各种NLP任务(包括问答(SQuAD v1.1)、自然语言推理等)创建了最先进的模型。

然而,关于探索BERT用于NLU方面的努力并不多。本工作的技术贡献有两个方面:
1)我们探索了BERT预训练模型以解决NLU的泛化能力不足问题;

2)我们提出了基于BERT的联合意图分类和槽填充模型,并且证明了与基于注意力的RNN模型和槽门控模型相比,所提出的模型在几个公共基准数据集上的意图分类准确性、槽填充F1分数以及句级语义框架准确性上均取得了显著的改进。

2 Related work

深度学习模型在自然语言理解领域得到了广泛的探索。根据意图分类和槽填充是否分别建模,我们将NLU模型分为独立建模方法和联合建模方法两类。

意图分类的方法包括CNN(Kim,2014; Zhang等,2015)、LSTM(Ravuri和Stolcke,2015)、基于注意力的CNN(Zhao和Wu,2016)、分层注意力网络(Yang等,2016)、对抗多任务学习(Liu等,2017)等。槽填充的方法包括CNN(Vu,2016)、深度LSTM(Yao等,2014)、RNNEM(Peng等,2015)、编码器-标签器深度LSTM(Kurata等,2016)以及联合指针和注意力(Zhao和Feng,2018),等等。

联合建模方法包括CNNCRF(Xu和Sarikaya,2013)、RecNN(Guo等,2014)、联合RNN-LSTM(Hakkani-Tur等,2016)、基于注意力的BiRNN(Liu和Lane,2016)和基于槽门的注意力模型(Goo等,2018)。

3 Proposed Approach

在这里插入图片描述

图1:所提出模型的高级视图。输入查询是“play the song little robin redbreast”。

3.1 BERT

输入表示是WordPiece嵌入(Wu等人,2016)、位置嵌入和段嵌入的串联。特别地,对于单句分类和标记任务,段嵌入没有区别。一个特殊的分类嵌入([CLS])被插入为第一个标记,一个特殊的标记([SEP])被添加为最后一个标记。给定一个输入标记序列 x = ( x 1 , … , x T ) x=(x_1,\ldots,x_T) x=(x1,,xT),BERT的输出是 H = ( h 1 , … , h T ) \mathbf{H}=(\boldsymbol{h}_1,\ldots,\boldsymbol{h}_T) H=(h1,,hT)

3.2 Joint Intent Classification and Slot Filling

BERT 可以很容易地扩展为一个联合意图分类和槽填充模型。根据第一个特殊标记([CLS])的隐藏状态,记为 h 1 h_1 h1,可以预测意图为:

在这里插入图片描述
对于槽填充,我们将其他标记的最终隐藏状态 h 2 , … , h T \boldsymbol{h}_2,\ldots,\boldsymbol{h}_T h2,,hT 输入到一个 softmax 层中,以对槽填充标签进行分类。为了使这个过程与 WordPiece 分词兼容,我们将每个标记化的输入词输入到一个 WordPiece 分词器中,并使用对应于第一个子标记的隐藏状态作为 softmax 分类器的输入。

在这里插入图片描述
其中, h n  是与单词  x n  的第一个子标记对应的隐藏状态。 \begin{aligned}&\mathrm{其中,}\boldsymbol{h}_n\text{ 是与单词 }x_n\text{ 的第一个子标记对应的隐藏状态。}\end{aligned} 其中,hn 是与单词 xn 的第一个子标记对应的隐藏状态。

同时建模意图分类和槽填充,其目标被形式化为:
在这里插入图片描述
学习目标是最大化条件概率 p ( y i , y s ∣ x ) p(y^i,y^s|x) p(yi,ysx)。通过最小化交叉熵损失 l o s s loss loss来端到端地微调模型。

3.3 Conditional Random Field

槽标签的预测依赖于周围单词的预测。已经证明结构化预测模型可以提高槽填充性能,例如条件随机场(CRF)。Zhou和Xu(2015)通过为BiLSTM编码器添加CRF层来改进语义角色标注。在这里,我们调查了在联合BERT模型之上添加CRF来建模槽标签依赖性的效果。

4 Experiments and Analysis

我们在两个公开基准数据集ATIS和Snips上评估了提出的模型。

4.1 Data

ATIS数据集(Tür等,2010年)在NLU研究中被广泛使用,其中包括人们进行航班预订的音频录音。我们对这两个数据集使用了与Goo等人(2018年)相同的数据划分。训练、开发和测试集分别包含4,478、500和893个话语。训练集共有120个槽标签和21个意图类型。我们还使用了Snips数据集(Coucke等人,2018年),该数据集收集自Snips个人语音助手。训练、开发和测试集分别包含13,084、700和700个话语。训练集共有72个槽标签和7个意图类型。

4.2 Training Details

我们使用英文的uncased BERT-Base模型,它具有12层、768个隐藏状态和12个注意头。BERT是在BooksCorpus(800M字)和英文维基百科(2,500M字)上进行预训练的。对于微调,所有超参数都在开发集上进行调优。最大长度为50。批量大小为128。使用Adam进行优化,初始学习率为5e-5。丢失概率为0.1。最大迭代次数从[1, 5, 10, 20, 30, 40]中选择。

4.3 Results

表2显示了在Snips和ATIS数据集上的模型性能,包括slot填充F1分数、意图分类准确率和句子级语义框架准确率。

在这里插入图片描述

表2:Snips和ATIS数据集上的NLU性能。指标包括意图分类准确率、槽填充F1值和句子级语义框架准确率(%)。第一组模型的结果引自Goo等人(2018年)的研究。

第一组模型是基线模型,由最先进的联合意图分类和槽填充模型组成:使用BiLSTM的基于序列的联合模型(Hakkani-T¨ur等,2016)、基于注意力的模型(Liu and Lane,2016)和槽门控模型(Goo等,2018)。

第二组模型包括提出的联合BERT模型。从表2中可以看出,联合BERT模型在两个数据集上明显优于基线模型。在Snips数据集上,联合BERT的意图分类准确率达到了98.6%(从97.0%)、槽填充F1值达到了97.0%(从88.8%),句级语义框架准确率达到了92.8%(从75.5%)。在ATIS数据集上,联合BERT的意图分类准确率达到了97.5%(从94.1%)、槽填充F1值达到了96.1%(从95.2%),句级语义框架准确率达到了88.2%(从82.6%)。联合BERT+CRF将softmax分类器替换为CRF,其性能与BERT相当,可能是由于Transformer中的自注意机制已足够地对标签结构进行建模。

与ATIS相比,Snips包含多个领域并且具有更大的词汇量。对于更复杂的Snips数据集,联合BERT在句级语义框架准确率方面取得了巨大的提升,从75.5%提高到了92.8%(相对增加了22.9%)。这表明了联合BERT模型具有强大的泛化能力,考虑到它是在来自不同领域和类型(书籍和维基百科)的大规模文本上进行预训练的。在ATIS上,联合BERT在句级语义框架准确率方面也取得了显著的提升,从82.6%提高到了88.2%(相对增加了6.8%)。

4.4 Ablation Analysis and Case Study

我们在Snips数据集上进行了消融分析,如表3所示。如果没有联合学习,意图分类的准确率会降低到98.0%(从98.6%),而槽填充的F1值会降低到95.8%(从97.0%)。我们还比较了使用不同微调时期的联合BERT模型。仅经过1个时期的微调的联合BERT模型已经优于表2中第一组模型。

在这里插入图片描述

表3:Snips数据集的消融分析。

我们进一步从Snips中选择了一个案例,如表4所示,展示了联合BERT如何通过利用BERT的语言表示能力来提高泛化能力,从而优于槽门模型(Goo等人,2018)。在这种情况下,“mother joan of the angels”被槽门模型错误地预测为一个对象名称,并且意图也是错误的。然而,联合BERT正确地预测了槽标签和意图,因为“mother joan of the angels”是维基百科中的一个电影条目。BERT模型部分在维基百科上进行了预训练,并可能学习到了这个罕见短语的信息。

在这里插入图片描述

表4:Snips数据集中的一个案例。

5 Conclusion

我们提出了一种基于BERT的联合意图分类和槽填充模型,旨在解决传统NLU模型泛化能力差的问题。实验结果表明,我们提出的联合BERT模型优于单独建模意图分类和槽填充的BERT模型,显示了利用两个任务之间关系的有效性。我们提出的联合BERT模型在ATIS和Snips数据集上的意图分类准确率、槽填充F1和句子级语义框架准确率上显著优于先前的最先进模型。未来的工作包括在其他大规模和更复杂的NLU数据集上评估所提出的方法,并探索将外部知识与BERT结合的有效性。

阅读总结

简单来说就是使用BERT将意图分类和槽填充任务一起训练了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PB案例学习笔记】-03用户名密码校验

写在前面 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git 需要源代码的小伙伴们可以自行…

微软宣布GPT-4o模型,可在 Azure OpenAI上使用

5月14日,微软在官网宣布,OpenAI最新发布的多模态模型GPT-4o,可以在 Azure OpenAI 云服务中使用。 据悉,GPT-4o支持跨文本、视频、音频多模态推理,例如,通过GPT-4o打造一个AI助手,用于辅导孩子解…

AIGC时代已至,你准备好抓住机遇了吗?

一、行业前景 AIGC,即人工智能生成内容,是近年来人工智能领域中发展迅猛的一个分支。随着大数据、云计算、机器学习等技术的不断进步,AIGC已经取得了显著的成果,并且在广告、游戏、自媒体、教育、电商等多个领域实现了广泛应用。…

界面组件DevExpress WPF v23.2 - 全新升级的数据编辑器、流程图组件

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress WPF控件日…

Ubuntu16 扩展磁盘空间

一、扩展容量 关闭虚拟机->硬盘->扩展->输入要扩展的空间大小 二、重新磁盘分区 打开虚拟机,在终端安装gparted: sudo apt-get install gparted 打开gparted: sudo gparted 磁盘分区如下图所示 选择/dev/sda5分区,选择…

平均工资数据分析之回归

链接: R语言实战——中国职工平均工资的变化分析——相关与回归分析 1、模型诊断和评估的方法 1. 残差分析 1、残差图 (Residual Plot):用于检查残差是否存在非随机模式。理想情况下,残差应随机分布在零附近。 2、Q-Q 图 (Quantile-Quantile Plot)&am…

MATLAB基础—变量及其操作

众所周知,计算机所处理的数据都是存放在内存单元中的,而每个内存单元都有一个唯一的地址,程序就是通过这个内存单元的地址来访问内存单元的。 在高级语言中,只需要给每个内存单元取一个名字,然后通过这个名字就能够访问…

大模型学习笔记九:模型微调

文章目录 一、什么时候需要Fine-Tuning二、用Hugging Face根据电影评论输出来对电影进行情感分类1)安装依赖2)操作流程3)名字解释4)代码导入库和加载模型、加载数据库、加载tokenlizer5)其他相关公共变量赋值(随机种子、标签集评价、标签转token_Id)6)处理数据集:转成…

数据挖掘与机器学习——概念篇

目录 一、数据增长情况与计量单位 二、数据挖掘的概念 三、数据挖掘的应用案例 1. 互联网行业 2. 医学方面 3. 网络安全方面 4. 交通方面 5. 通信方面 6. 个人生活 四、数据挖掘的方法 1.对比分析 2. 同比分析 3. 环比分析 4. 80/20分析 5. 回归分析 6. 聚…

PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来

日前,第十二期 CCF 秀湖会议在苏州 CCF 业务总部 & 学术交流中心成功举办。本次会议以“开源教育:使命、挑战与发展”为主题,汇聚了来自学术界、工业界的二十余位专家,共同探讨开源教育的现状与未来。 PingCAP 联合创始人兼 C…

C++ | Leetcode C++题解之第91题解码方法

题目&#xff1a; 题解&#xff1a; class Solution { public:int numDecodings(string s) {int n s.size();// a f[i-2], b f[i-1], c f[i]int a 0, b 1, c;for (int i 1; i < n; i) {c 0;if (s[i - 1] ! 0) {c b;}if (i > 1 && s[i - 2] ! 0 &&a…

风电功率预测 | 基于GRU门控循环单元的风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测 | 基于GRU门控循环单元的风电功率预测(附matlab完整源码)完整代码风电功率预测 | 基于GRU门控循环单元的风电功率预测(附matlab完整源码) 完整代码 clc; clear close allX = xlsread(风电场预测.xlsx)

启明云端ESP32-S3模组WT32-S3选型,Flash最大可选16MB,PSRAM最大可选8MB

使用ESP32-S3单芯片&#xff0c;可以完成语音连接屏控三合一功能。接下来给大家推荐一款ESP32-S3模组WT32-S3&#xff0c;Flash 最大可选 16MB,PSRAM 最大可选 8MB。核心芯片是ESP32-S3。 2.4GHz Wi-Fi(802.11b/g/n)Bluetooth 5(LE)模组&#xff0c;内置ESP32-S3系列芯片&#…

如何在Sui智能合约中验证是否为多签地址

通过多签合约实现多个用户可访问的安全账户。多签&#xff08;multi-sig&#xff09;钱包和账户通过允许多个用户在预定义条件下访问共享资产&#xff0c;或让单个用户实施额外的安全措施&#xff0c;从而增强密钥管理。例如&#xff0c;多签钱包可以用于管理去中心化自治组织&…

Leetcode---1.两数之和 (详解加哈希表解释和使用)

文章目录 题目 [两数之和](https://leetcode.cn/problems/two-sum/)方法一&#xff1a;暴力枚举代码方法二&#xff1a;哈希表代码 哈希表哈希表的基本概念哈希函数&#xff08;Hash Function&#xff09;&#xff1a;冲突&#xff08;Collision&#xff09;&#xff1a;链地址…

mysql 查询---多表设计

部分数据 1distinct去重 select distinct job from tb_emp;select * from tb_emp where id in (1,2,3); select * from tb_emp where id between 1 and 5; select * from tb_emp where name like __; #下划线匹配单个字符, %匹配任意多个字符select min(entrydate) from tb_e…

JUnit5参数化用例(三)

JUnit5枚举参数的参数化&#xff1a; 使用枚举类作为测试数据枚举参数参数化注解EnumSource必须与ParameterizedTest结合使用 枚举参数化注解 -简单使用&#xff1a; 需要添加EnumSource注解测试方法传入枚举类作为参数 在执行前&#xff0c;我们需了解enum枚举的使用方式&…

LLama3大模型本地部署 仅需6步完成对话模型本地安装部署。附送可视化ui安装、自定义模型目录,修改模型保存地址,第三方微调模型、中文模型下载地址

本篇分为三部分 一&#xff1a;6步完成llama3大模型本地部署 二&#xff1a;8步完成llama3可视化对话界面安装 三&#xff1a;重设模型文件路径 四&#xff1a;微调模型、中文模型下载资源分享 一、LLama3 大模型本地部署安装 首先去mata官网下载ollama客户端 Ollama 选择合适…

线程池 ThreadPool

一般情况下我们都使用Thread类创建线程&#xff0c;因为通过Thread对象可以对线程进行灵活 的控制。但过多创建线程和销毁线程&#xff0c;会消耗掉大量的内存和CPU资源&#xff0c; 假如某段时间内突然爆发了100个短小的线程&#xff0c;创建和销毁这些线程就会消耗很多时间&a…

如何使用一段传输线表示电感和电容

文中部分图片来自于《complete Wireless design》 如何使用一段传输线来表示电感和电容&#xff0c;本文将就此内容展开&#xff1a;