图谱实战 | 阿里周晓欢:如何将实体抽取从生成问题变成匹配问题?

转载公众号 | DataFunSummit


7402db3ee3443ab500ad86b8e65533af.png

分享嘉宾:周晓欢 阿里巴巴 算法专家

编辑整理:刘香妍 中南财经政法大学

出品平台:DataFunSummit

导读:实体抽取或者说命名实体识别 ( NER ) 在信息抽取中扮演着重要角色,常见的实体抽取多是对文本进行子信息元素的抽取,但对语音的实体抽取当前应用也比较广泛。

今天很高兴邀请到来自阿里巴巴天猫精灵事业部人工智能部的周晓欢,来和大家分享天猫精灵在娱乐播放助手中关于实体抽取的一些创新与实践。本次分享的主题为天猫精灵在实体抽取中的创新与实践,主要内容包括:① 天猫精灵业务背景介绍;② 端到端的语义理解模型;③ 基于内容库的端到端的实体抽取模型Speech2Slot;④ 无监督语音语义预训练。

01

天猫精灵业务背景

首先和大家分享下天猫精灵内容点播的业务背景。

1. 业务背景介绍

48445d4128bbe468e1b89e79bd3e2084.png

天猫精灵它作为一个智能音箱,内容点播是它最重要的功能之一。当一个用户他有具体的点播意图的时候,比如说他说:天猫精灵,我想听刘德华的忘情水。这个时候就会进入内容点播场景。

2. 传统语音点播链路与问题

df8f45e1c954d4cdff9c1f4d69d992e2.png

天猫精灵的内容点播场景跟传统的搜索不一样的地方就在于:用户是通过语音交互,并且是以自然语言请求的方式来进行点播的。面对这种语音的并且是自然语言请求的自然语言的方式的这种请求,传统的做法为pipeline式:

  • 一段用户语音首先进入到语音识别ASR模块,识别出相应的文本信息;

  • 将文本信息送到自然语言处理NLU模块当中进行实体抽取;

  • 将识别到的实体(例如歌手名)送入相关性搜索IR模块当中进行内容检索,具体查找出用户想要得到的内容。

但这种做法缺陷是:每一个模块对于整个系统的性能都起着关键的作用,一旦前面的某个模块出现了错误,后续的模块可能就会出现连续的错误。具体而言这种方法存在的问题如下:

① 首先是曝光偏差的问题。NLU模型在训练的过程中基于准确的文本信息去进行训练,但是在测试阶段,它却是基于ASR的输出文本来进行预测的,这就导致NLU模型在训练和测试过程中,它面临的输入分布是不一致的,这就是曝光偏差问题。曝光偏差问题会使得NLU模型在ASR结果出现错误的时候变得非常脆弱。

② 其次训练目标不一致的问题。在pipeline当中,各个模块它的训练目标没有办法和整个系统的训练目标保持一致,例如语音识别ASR模块,它的训练目标是去降低所识别文本的字错误率。但是对于整个请求的达成来说,一个请求当中不同位置的字错误率对于最终请求的达成影响是不一样的:比如说用户他说我想听刘德华的忘情水,这个时候识别错了”我想听“,和识别错”忘情水“,对最终整个请求的达成影响是不一样的,识别错了”忘情水“对最终整个请求的达成影响会更大一些。

针对这种pipeline形式存在的问题,在学术界展开了广泛的研究和讨论,他们提出了构建一个端到端的语音语义理解的模型,也就是说要直接基于原始的声音信号去做语义的理解。

02

端到端的语义理解模型

端到端的语音语义理解模型,主要应用在语义理解任务中的分类任务和生产任务上。

1. 分类任务

分类任务主要是应用在领域识别和意图识别上,直接基于语音的信号构建一个端到端的语音语义理解模型,训练目标就是意图理解或者是领域识别的训练目标。端到端的模型避免了之前那种pipeline形式的中间信息传递的损失,从而也能得到更好的一个效果。

6f28416a79a5283fb02b2cac688d6a51.png

2. 生成任务

生成任务上主要是应用在实体抽取上,端到端的实体抽取模型主要目前主要有两种结构形式。

第一种,采用的是一种流式处理的模型结构,跟端到端流式处理的ASR模型的模型结构其实是一致的,但是不同的地方在于,它在输出的文本序列中间加入了一些特殊的标志符号,去标示出它所识别的实体名称所在的位置,比如左图中加了两个“$”符号去标志出歌手“刘德华”的位置,以及加了“#”去标志出歌名“忘情水”所在的位置。

03479aa3ebcf3f00eabd250411b81241.png

另外一种模型结构是采用的这种encoder-decoder的翻译模型的模型结构,它是直接基于的原始声音信号,直接去翻译出所要抽取的实体名名称的文本序列。

这里将整个端到端的实体抽取模型抽象成这样的两个过程,分别是声学建模过程和语言建模过程。声学建模过程是指对原始的声音信息进行一个处理和建模,而语言建模过程是指对输出的文本用一个语言模型去学习它的语法规律。在天猫精灵内容点播场景里,所要识别的视频实体名称多是一些歌手名,歌名等等。同时在点播内容库里存在着海量的歌手名和歌名。这些海量的歌手名和歌名,对于语言模型来说,要去建模是非常困难的。困难之处如下:

① 内容实体名称存在一音多字的情况,比如雷雨心的《记念》和蔡健雅的《纪念》,使得模型对于一些长尾的内容实体名称的识别并不能做得特别好。

② 同时语言模型对于内容实体名称的泛化能力并不够,这是主要是因为内容实体名称通常不具备有语法的约束,甚至是反语言模型的,毫不相关的几个字拼凑在一起都可能是一个歌名,因此语言模型很难对内容实体名称去进行一个建模。

③ 此外用户还经常存在口音的问题。

因此,针对内容实体名称存在的困难,在天猫精灵的语音与一体化中,不仅仅希望引入一个端到端的语音语义理解模型来减少以前的那种pipeline方式带来的信息损失,还希望能够引入更多的信息来帮助模型去做好内容实体名称的识别。最直接的想法就是考虑的是引入内容库的信息。已知内容库里已经有一首陈奕迅的《圣诞结》,这个时候去识别“she4ng da4n jie2”这个发音就会变得简单了很多。同时,用户请求的这些歌手歌名其实都是存在于内容库里,所要识别这些实体名称其实是在一个有限的集合内,因此可以把实体抽取从生成问题变成一个匹配的问题,做选择题总是比做填空题简单。

27e4d78a294530e94011c21a0dd89d57.png

03

基于内容库的端到端的实体抽取模型Speech2Slot

4ef7cdfdc252a25ec5648d8ff4b3896d.png

1. 模型的输入和输出

输入的是用户请求的音素后验矩阵(音素它类似于拼音的序列),输出的是slot的音素序列。音素后验矩阵是ASR模型的一个中间的输出结果矩阵,可以理解为是一个时间步数乘以音素词典大小的这样一个矩阵,在每一个时间步上都有一个音素的概率分布。为什么要选取ASR的中间结果音素后验来作为输入?这主要是因为我们认为声学建模与实体抽取任务其实是两个相对独立的任务,声学建模可以认为它是一个感知层面的学习,而后续的实体抽取的任务,可以认为它是一个认知层面的一个学习,将感知学习和认知学习进行分离,对最终整个系统的效果的影响应该不会太大。另外,选择音素后验矩阵作为输入,然后slot的音素序列作为输出,通过这种选择,音素可以恰好为语音信号和文本信号提供了一个统一的编码方式,使得整个模型的训练难度大大的降低。

2. 模型结构

我们的模型希望去建模这样一个过程:首先在一段请求语音中截取实体名称所在的声音切片,然后再对这个声音切片进行一个特征的抽取和处理,最后基于抽取处理后的特征进行一个分类,看它到底是属于内容库里的哪一个实体名称。这里需要注意的一点是,实体名称在声音特征上并不具备特殊性,因此在进行一个语音实体名称的声音切片的定位时,还需要引入一些上下文的知识,比如内容库的知识等来辅助实体名称的定位。所以最终的整个的模型结构就如下图所示,主要分三部分来介绍:Speech encoder、Knowledge encoder、Bright layer。

dd5c2ce0ff44c02e0d087289abccda0f.png

① Speech encoder(图中蓝色部分)。我们对请求语音进行一个语音语义的理解,然后生成一个memory的矩阵,这里就是常规transformer结构,它可以帮助捕捉到重点的语义信息。

② Knowledge encoder(图中橘色部分)。通过预训练的方式来将内容库的知识建模在knowledge encoder当中,它的预训练方式采用的是语言模型的预训练的方式,训练语料是内容库中的所有的实体名称,通过这种方式,knowledge encoder能够提前看到内容库里都存在哪些实体名称,同时去记住这些实体名称。

③ Bright layer(图中绿色部分)。它实现的是一个实体定位和实体分类的这样一个作用。首先将的knowledge encoder每一个step的输出,来对Speech encoder的memory矩阵做attention,然后定位出内容实体的声音切片所在的位置,同时还会对抽出来的相应的这些信息做一个处理,最终输出它接下来这一帧应该输出哪一个音素。注意这里knowledge encoder的输出只去参与了attention的过程,并不参与最后音素概率的计算,这保证模型不过分依赖语音模型的结果。

9b82eb9b507e254b4439c682ff85bb00.png

3. 引入内容库信息的方法

在模型中,通过以下两点来引入内容库信息:Knowledge encoder用内容库中所有的内容名称进行预训练,并采用Cold-fusion的方式进行Finetune。另外在推理阶段,会提前的把内容库里所有的内容名称构建成一个Trie树,在Beam-search过程中,构建的Trie树用来约束模型输出必须指向内容库中的某一名称。

4. 模型效果

743ea19b69575c523ba171b37dba61e1.png

04

无监督语音语义预训练

1. 为什么要进行无监督语音语义预训练

  • 训练数据不足。

  • 语义理解能力,对于整个端到端的实体抽取模型非常重要。在天猫精灵的模型中抽取实体时:主要是encoder的语义理解能力,以及knowledge encoder对内容库的一个匹配能力,同时应用这两个能力来对实体名称进行定位的。

13e0424695414a5d5949017ecd76ce3d.png

2. 如何进行语音语义的无监督预训练

具体的就是直接基于音素的后验,利用大量的无标签的语音数据来进行对于语音语义理解的这一模块进行预训练,之后这一个模块也能够快速地应用于语音语义理解模型里(分类任务、生成任务)的finetune。那么关于训练在文本领域其实已经有的大量的应用,比如BERT,通过随机的mask一些输入的token,然后去做一个预测,通过这种方式来进行预训练。那么我们的基于音素的无监督预训练也可以采用的类似的方式,我们提出Phoneme-BERT一种基于音素的无监督预训练方式。

3. 文本预训练和音素后验预训练的区别

① 输入输出不同

文本预训练模型的输入输出都是token组成的序列,而在音素后验的模型当中,输入输出的是概率分布矩阵(音素后验矩阵)。因此,在mask操作时,Phoneme-BERT采用的方式是选取音素后验矩阵中任意的几帧,对相应帧上的整个概率分布进行mask,计算loss时将预测的概率分布和原始的被mask的概率分布进行一个交叉熵计算,通过这种方式来实现mask训练的过程。

② token含义不同

在文本预训练,序列中的每一个token都是有意义的,但是在音素后验矩阵当中却存在着大量无意义的静音帧。mask掉这些静音帧去做预测的话,给模型的学习带来很多噪声和困难。对此,我们采取的方案是通过概率分布筛选出静音帧,并在mask过程中对这些静音帧进行进行排除。

③ 单个token信息量不同

文本预训练中,每个token包含的信息量比较大,这是因为不管是中文词典或者是英文词典,规模都较大,所以每一个token包含的信息量都会比较多。而音素后验矩阵中单个向量包含的信息量会比较少,因为中文音素只有121个,然后英文音素的话只有42个。由于每一帧包含的信息量较少,这样随机mask后做训练的话,模型并不能真正得到语义能力的学习。对此,我们采用片段式的mask,通过这种方式使得在每一次mask的过程中可以去掉包含更多信息量的这些帧,然后使得整个无监督的预训练的效果会达到更好。

2da8ece6b474cbaed0c3909cc947db60.png

4. 应用流程

我们利用Phoneme-BERT对speech2slot中的speech encoder进行一个预训练,通过大规模无监督语料让speech encoder具备语音语义理解能力。预训练完成之后,我们再用少量标注数据对整个speech2slot进行端到端的finetune。Phoneme-BERT还可以应用于所有的端到端的语音语义理解模型(分类任务/生成任务)的预训练。

3d603c00a275ad3b5affb2476cecbc06.png

5b88bae27eee9431b30d43473fd1f4e1.png

5. 实验结果

可以看到实验结果,不管是哪一种预训练的方式,都相比没有预训的方式能够得到更好的一个提升。

397b96338beff3b31ffecb35f459a737.png

同时在分类模型上也分别做了实验,一个是在公开的数据集上做的一个实验:先用开公开的4000多小时的英文的语音数据,是对模型进行一个预训练,然后之后预训练好的模型,再去做一个领域分类任务,可以看到的,端到端的模型一开始在训练数据不足的情况下,相比于baseline错误率是还提高了,但是预训练之后,整个模型相比于之前的模型准确率是提升的。另外在天猫精灵的数据上也是得到了像一样的验证效果。

57217daa19e096edfad6ff867bbc2117.png

今天的分享就到这里,谢谢大家。


分享嘉宾:

83f10cab1236df49e3b4904366db6310.png


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

3038d552fdf7636157e30b3e06e0677a.png

点击阅读原文,进入 OpenKG 网站。

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

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

相关文章

剖析 Promise 之基础篇

随着浏览器端异步操作复杂程度的日益增加,以及以 Evented I/O 为核心思想的 NodeJS 的持续火爆,Promise、Async 等异步操作封装由于解决了异步编程上面临的诸多挑战,得到了越来越广泛的应用。本文旨在剖析 Promise 的内部机制,从实…

LeetCode 318. 最大单词长度乘积(位运算)

1. 题目 给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。 示例 1: 输入: ["abcw","baz&…

百度研究院商业智能实验室招聘研究实习生!

致力于连接最靠谱的算法岗与最强的求职者招聘贴投放请联系微信xixiaoyao-1岗位职责:同实验室的数据科学家和工程师一起参与研发前沿的机器学习技术,主要内容为对前沿技术进行调研,复现前沿科研成果在顶级会议和期刊上发表论文支持及落地百度飞…

论文浅尝 | KGNLI: 知识图谱增强的自然语言推理模型

笔记整理 | 韩振峰,天津大学硕士链接:https://aclanthology.org/2020.coling-main.571.pdf动机自然语言推理 (NLI) 是自然语言处理中的一项重要任务,它旨在识别两个句子之间的逻辑关系。现有的大多数方法都是基于训练语料库来获得语义知识从而…

block在美团iOS的实践

说到block,相信大部分iOS开发者都会想到retain cycle或是__block修饰的变量。 但是本文将忽略这些老生常谈的讨论,而是将重点放在美团iOS在实践中对block的应用,希望能对同行有所助益。 本文假设读者对block有一定的了解。 从闭包说起 在Lisp…

写Rap,编菜谱,你画我猜……这些 AI demo 我可以玩一天!

文 | ZenMoore编 | 小轶上次写的那篇 《Prompt 综述15篇最新论文梳理]》 有亿点点肝。这次给大家整点轻松好玩的(顺便给这篇推文打个广告,快去看!)。不知道读者朋友们有没有遇到这样的情况:有新的论文发表了&#xff0…

LeetCode 1254. 统计封闭岛屿的数目(图的BFS DFS)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 有一个二维矩阵 grid ,每个位置要么是陆地(记号为 0 )要么是水域(记号为 1 )。 我们从一块陆地出发,每次可以往上下左右 4 个方向相邻区域走,能…

技术动态 | 图对比学习的最新进展

转载公众号 | DataFunSummit 分享嘉宾:朱彦樵 中国科学院自动化研究所编辑整理:吴祺尧 加州大学圣地亚哥分校出品平台:DataFunSummit导读:本文跟大家分享下图自监督学习中最近比较热门的研究方向:图对比学习&#xff0…

如何把Android手机变成一个WIFI下载热点? — 报文转发及DNS报文拦截

随着WiFi的普及,移动运营商的热点也越来越多了,如中国移动的CMCC、中国电信的ChinaNet、中国联通的ChinaUnicom等,一般来说,连上此类的热点,打开浏览器上网时都会自动跳转到一个验证页面,最近有个项目也有类…

OpenKG 祝大家新春快乐

OpenKG 祝各位读者新春快乐,虎虎生威!OpenKGOpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。点击阅读原文,进入 OpenKG 网站。…

推荐中使用FNN/PNN/ONN/NFM优化特征交叉

文 | 水哥源 | 知乎sayingDNN时代来临的时候,LR没打过,也很难加入。FM打不过,但他可以加入FM的精髓,最上在于latent embedding,有了它才能把交互拆解到基底上;居中在于element-wise乘,能让两个特…

LeetCode 310. 最小高度树(图 聪明的BFS,从外向内包围)

文章目录1. 题目2. 解题2.1 暴力BFS2.2 聪明的BFS1. 题目 对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到…

Emma使用与分析

什么是Emma EMMA 是一个开源、面向 Java 程序测试覆盖率收集和报告工具。 它通过对编译后的 Java 字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。 EMMA 所使用的字节码插装不仅保证 EMMA 不会给源代码…

论文浅尝 | WWW2022 - “知识提示”之知识约束预训练微调

本文作者 | 陈想(浙江大学)、张宁豫(浙江大学)、谢辛(陈想)、邓淑敏(浙江大学)姚云志(浙江大学)、谭传奇(阿里巴巴),黄非&…

吐血整理:论文写作中注意这些细节,能显著提升成稿质量

文 | python编 | 小轶前言不知诸位在科研的起步阶段,是否曾有过如下的感受:总感觉自己写的论文就是和自己读过的论文长得不太一样,也不知道为啥。投稿的时候,审稿人也总是 get 不到论文的核心,只揪着论文的次要细节不放…

LeetCode 1237. 找出给定方程的正整数解

1. 题目 给出一个函数 f(x, y) 和一个目标结果 z&#xff0c;请你计算方程 f(x,y) z 所有可能的正整数 数对 x 和 y。 给定函数是严格单调的&#xff0c;也就是说&#xff1a; f(x, y) < f(x 1, y) f(x, y) < f(x, y 1)函数接口定义如下&#xff1a; interface Cu…

基于Wi-Fi的室内定位在美团总部的实践和应用(上)

室内定位技术的商业化必将带来一波创新高潮&#xff0c;尤其是在O2O领域&#xff0c;各种基于此技术的应用将出现在我们的面前。我们可以想象一些比较常见的应用场景&#xff0c;比如在大型商场里面借助室内导航快速找到目标商铺&#xff0c;商店根据用户的具体位置向用户推送更…

LeetCode 1266. 访问所有点的最小时间(数学)

1. 题目 平面上有 n 个点&#xff0c;点的位置用整数坐标表示 points[i] [xi, yi]。请你计算访问所有这些点需要的最小时间&#xff08;以秒为单位&#xff09;。 你可以按照下面的规则在平面上移动&#xff1a; 每一秒沿水平或者竖直方向移动一个单位长度&#xff0c;或者…

Coding Party 邀你出战!飞桨黑客马拉松线下场来啦

12月4-5日&#xff0c;这48H&#xff0c;与100开发者HACK Together“黑客”很酷&#xff1f;和“黑客”一起“战斗”是种什么样的体验&#xff1f;你参与这场“战斗”了吗&#xff1f;PaddlePaddle Hackathon 2021飞桨黑客马拉松&#xff0c;由百度飞桨联合深度学习技术及应用国…

技术动态 | 「知识图谱嵌入技术研究」最新2022综述

转载公众号 | 专知知识图谱(KG)是一种用图模型来描述知识和建模事物之间关联关系的技术. 知识图谱嵌入(KGE)作为一 种被广泛采用的知识表示方法,其主要思想是将知识图谱中的实体和关系嵌入到连续的向量空间中,用来简化操作, 同时保留 KG 的固有结构.它可以使得多种下游任务受益…