NLP带来的“科幻感”超乎你的想象 - ACL2020论文解读
来源 | 京东智联云开发者
责编 | Carol
近些年,人工智能无疑是信息技术领域最热门的技术之一。人工智能战胜世界围棋冠军、人工智能战胜游戏高手、人工智能医生看病会诊……不断进步的科技正推动着人工智能从一个无法实现的幻想,不断突破人类的想象,完成一个又一个å挑战。
AI写科幻剧本?科幻小说都不敢写
2018年,在全球科幻电影节( Sci-Fi London Film Festival)上的一项名为“48小时内电影创作挑战”(SFL 48 Hour Film Challenge)的活动中,来自纽约的导演Oscar Sharp和他在纽约大学AI研究院的同事Ross Goodwin利用人工智能(这套人工智能称自己为Benjamin)创作出了一个剧本,并在48小时内将这个剧本拍摄出来了。
虽然电影只有短短 9 分钟,但这也是世界上第一部由AI创作并拍摄出来的电影,这在以前是科幻小说都不敢写的故事。在此之后,人工智能在电影业中不断得到更多落地应用。现在,使用机器编写剧本的想法正在受到如Netflix、Hulu、好莱坞等世界级影视科技公司的青睐。
人工智能剧本创作的关键技术
——自然语言生成
而在使用人工智能进行影视剧本创作中,NLP 领域的自然语言生成技术是其中的关键技术之一。
但自然语言生成技术的应用场景和研究意义远不止于影视剧本创作。在电商场景下,可用于营销内容生成以及面向复杂问题回答与人机交互的自动文本生成;融媒体场景下,结合文本与语音合成技术可应用于新闻自动播报、直播文字、多语言/跨语言自动文摘。
相关内容可点击查看:
京东商城背后的AI技术能力揭秘 - 基于关键词自动生成摘要
➡️京东智能内容创作算法的演进与实践:基于关键词自动生成摘要
NLP 最高级别学术认可
——ACL 论文收录
近日,ACL 2020 公布了今年大会的论文录用结果。ACL 会议是NLP领域级别最高的国际学术会议,致力于推动自然语言处理相关研究的发展和国际学术交流。
根据官方公布的数据,本届大会共收到 3429 篇投稿论文,投稿数量创下了所有 ACL 旗下会议新高。ACL 除了在国际 AI 学界具有顶级影响力外,其审稿规范和审稿质量,也是当今 AI 领域国际顶级会议中公认的翘楚,论文被录取的难度十分高。以 2019 ACL 为例,论文录取率仅为 22.7% 。因此,研究论文能够被 ACL 录用,不仅意味着研究成果得到了国际学术界的认可,也证明了研究本身在实验严谨性、思路创新性等方面的实力。
京东 AI 研究院专注于持续性的算法创新,80% 的研究都由京东实际的业务场景需求为驱动,聚焦 NLP语音、计算机视觉、机器学习(包括深度学习和强化学习)等领域。在 ACL 2020 中,京东 AI 研究院提交的多篇论文经过重重审核,最终被大会收录。
今天,我们就将为大家解读其中的一篇:Self-Attention Guided Copy Mechanism for Abstractive Summarization
论文对现有自动文摘的研究方法进行了优化,使通过该新模型生成的摘要内容更加
论文对现有自动文摘的研究方法进行了优化,使通过该新模型生成的摘要内容更加精确。
精确。
论文解读
1、摘要
自动文本摘要(简称“自动文摘”)是自然语言处理领域中的一个传统任务,其目的是为输入文本生成一段简化文本。常用的自动文摘方法包括抽取式自动文摘(Extractive Summarization)和生成式自动文摘(Abstractive Summarization)。抽取式自动文摘方法抽取输入文本中的原始句子组成摘要;生成式自动文摘方法利用自然语言生成技术生成摘要。
自动文摘模型的关键是准确识别出输入文本中的重要信息,并输出涵盖这些信息的流畅文本。抽取式自动文摘方法可以显式的对输入文本的每个句子的重要性进行建模,但是输出的摘要是通过拼接句子构成的,句间的流畅性无法得到保证。生成式自动文摘方法通常可以输出较为流畅的摘要,但是有时无法完全准确捕捉到输入文本中的重要的信息。
本文所介绍的是自动文摘模型提出了一种自注意力(Self-Attention)指导的复制机制,该方法融合了抽取式自动文摘方法和生成式自动文摘方法,在多个文本摘要数据集上取得了比对比模型更好的性能。
我们首先介绍一下一些相关背景知识,包括自注意力机制,复制机制和抽取式自动文摘方法TextRank算法。
2、算法及模型
《Attention is all you need》提出了基于自注意力机制的Transformer框架,在机器翻译任务上超过了当时其他的模型。简单来说,自注意力机制将文本中的词两两计算相似度,然后对这些相似度进行归一化得到权重矩阵,最后将这些权重和相应的词进行加权求和得到下层的隐层表达。
复制机制是自动文摘模型中的一个常用机制。传统的文本生成在计算生成每个词的概率时,所有的词被限制在一个固定大小的词表中,即生成的词必须来自于这个固定大小的词表。复制机制除了会在这个固定大小的词表中生成某个词,还会选择性的在输入文本中选择一个词,这个词不受词表限制。复制机制实际上和人类在做摘要时的逻辑相吻合,即输入文本中的某些词,尤其是那些关键词,组成了这个文本的主干。我们只需要将这些关键词从输入中“复制”到输出中,然后再做一个适当的加工,使输出的摘要更加自然。复制机制的动机就是自动识别出这些关键词,然后将其“复制”到输出摘要中。TextRank算法一种基于图模型的经典抽取式自动文摘方法,其基本思想来源于谷歌的 PageRank算法。TextRank算法通常会把输入文本分割成若干基本单元并建立图模型, 利用基本单元间关系组成的邻接矩阵进行随机游走,获得各基本单元的入度中心度得分,基于该得分可以对文本基本单元进行排序。
回到主线,本文提出的模型是基于自注意力机制的Transformer模型,并融入了复制机制,即每个词的输出概率为生成概率和复制概率的加权相加:
其中 为生成模式的权重, 为生成概率,为复制概率。本文采用了编码器-解码器之间的注意力权重 作为复制概率:
其中 是解码器时刻的隐层状态, 是编码器第个输入对应的隐层状态, 为隐层状态维度。
上文提到,自动文摘模型希望通过复制机制将输入文本中的重要词复制到输出中,但由于使用注意力权重作为复制概率,并不能显式地识别出哪些词是重要的词。我们需要找到一个合适的方式显式地为输入文本中的词的重要性进行打分,进而指导模型的复制机制,改善复制的效果。TextRank算法利用邻接矩阵计算输入文本中每个词的重要性得分。
我们注意到,Transformer模型的自注意力机制提供了输入文本中的词两两之间的权重,该权重矩阵可以作为TextRank算法的邻接矩阵。基于这个邻接矩阵,通过随机游走,我们可以得到输入文本中的词的入度中心度得分,以此作为词的重要性得分 ,进而指导复制概率,公式如下:
此外,我们还尝试了利用出度中心度得分指导复制概率的方法。
进一步地,我们还将 加入到损失函数中,使重要的词得到模型足够的“重视”,即:
原始的损失函数为
我们改进的损失函数为
实验结果
我们提出的模型在文本摘要数据集CNN/DailyMail和Gigaword上取得了比对比模型更好的性能。
CNN/DailyMail数据集实验结果对比
Gigaword数据集实验结果对比
推荐阅读
360金融首席科学家张家兴:别指望AI Lab做成中台
用 Python 实现手机自动答题,这下百万答题游戏谁也玩不过我!
黑客用上机器学习你慌不慌?这 7 种窃取数据的新手段快来认识一下
关于 Docker ,你必须了解的核心都在这里了!
5分钟!就能学会以太坊 JSON API 基础知识
你点的每个“在看”,我都认真当成了AI
相关文章:

Vsftp 安装配置(转)
转:http://www.cnblogs.com/qingfeng2010/archive/2010/12/26/1917121.html 1.查看是否安装vsftprpm –qa|grep vsftpd 如果出现 vsftpd-2.0.5-16.el5_5.1 说明已经安装 vsftp 安装vsftp yum -y installvsftpd 2.测试 是否安装成功 (ip 改成自己啊,…
事务隔离机制原理分析以及是否可以防止订单超卖
事务的隔离机制是指: Read Uncommitted(读取未提交内容) Read Committed(读取提交内容) Repeatable Read(可重读) Serializable(可串行化) 具体的解释最经典的MySQL书《…

PHP中file_exists与is_file,is_dir的区别介绍
PHP中file_exists与is_file,is_dir的区别介绍作者: 字体:[增加 减小] 类型:转载 时间:2012-09-12 我要评论很显然file_exists是受了asp的影响,因为asp不但有fileExists还有folderExists,driverExists,那么P…
推荐算法工程师的成长之道
作者 | gongyouliu来源 | 大数据与人工智能(ID: ai-big-data)本文,作者会基于自己的实践经验讲述推荐算法工程师的成长之道,这里的“道”有发展路径和道(道理、方法论、经验、智慧)两层意思。所以本文除了讲解推荐算法工程师的成长…
JVM内存溢出的几种情形
1.堆溢出 原因:大量对象占据了堆空间,而这些对象都有强引用导致无法回收,当对象大小之和>Xmx参数指定的堆大小时导致溢出! List<byte[]> list new ArrayList<>();for (int i 0; i < 10240; i) {list.add(new…

Android Market 链接的生成与分享
通过Java包名直接定位到你的App http://market.android.com/details?id<java包名> 或者 market://details?id<java包名> 范例:market://details?idcom.skyd.luckywheel 这将直接在菜市场中显示你的App详细介绍页。 通过Java包名搜索App http://marke…
Centos6/7下静默安装oracle10g
Centos6/7下静默安装Oracle10g 远程安装oracle10g,通过网上资料,不断摸索成功安装。先在本地虚拟机Centos7上做实验,快照恢复快照恢复,安装了几十次成功之后,再在服务器Centos6上安装,(6和7还是有区别的,比…
String和常量池
jdk1.6之前常量池属于永久代,jdk1.7以后移到堆中。 String s1 "abc";// 放在常量池中String s2 "abc";// 从常量池中查找String s3 new String("abc");//new放在堆中String s4 new String("abc");String s5 s1.inter…

CQRS体系结构模式实践案例:Tiny Library:领域仓储与事件存储
领域仓储(Domain Repository)与事件存储(Event Store)是CQRS体系结构应用系统中C部分(Command部分)的重要组件。虽然都是存储机制,但两者有着本质的区别:领域仓储是属于领域层的&…
中国开启开源新纪元
距离“中国 Linux 第一人”宫敏博士用手提肩背的方式,将 20 盒装有 80G 容量的自由软件磁带背回中国转瞬已过 20 载,在宫敏博士的推动下,中国组建起国内第一个自由软件库,由此开源在第一代开发者心中的火种迅速传播。20 多年间&am…

kernel logo到开机动画之间闪现黑屏(android 5.X)
在BootAnimation開始画图之前,会先做一次clear screen的动作,避免出现前面的图干扰到BootAnimation的显示。 通过check main_log先确认播放开机动画是哪个function。在相应function删除clear screen的动作的相应代码。 /frameworks/base/cmds/bootanimat…

JScript Array对象的几个原型方法
代码 Array.prototype.inArray function(value) { for(vari 0; i <this.length; i) { if(this[i] value) { returntrue; } } returnfalse;};Array.prototype.max function() { for(vari 1, max this[0]; i <this.length; i) { …
太生猛!AI应届生年薪涨到80万!网友:后悔生的太早
据中国青年报报道:新冠肺炎疫情期间,非接触类交互、安全卫生等需求提升,以数字货币、数据应用、人工智能为代表的数字经济显著发展,全球经济数字化转型踩下“油门”。中国人工智能人才很可能缺口超过500万人。其实,早在…
Tomcat定时任务
原文: The load-on-startup element indicates that this servlet should be loaded (instantiated and have its init() called) on the startup of the web application. The optional contents of these element …

Nutanix CE on Lenovo W520 初探
話說 Nutanix 出了 CE 版本,這當然要來試試看 Nutanix 威力拿了部機器lenovo W520 CPU: i7-2820QM 4 coreRam: 32GBHDD:500G安裝選單選擇鍵盤配置,按下 ProceedNutanix 開始載入程式硬件最低需求不滿足Laptop 32G 內存Lenovo W520Nutanix 官方 CE 最低硬…

《爱情公寓2》将播 恶搞宣传片大喊“有种别看”
昨晚,一支重口味的宣传片消然出现在各大网站,一夜之间在狂转发。上线不到一小时,单一网站浏览量就超十万,视频主标写着:神兽组合从天而降,口味超重,少儿不宜,人兽悲剧,蛋…
“应付”大学作业,我花3小时写了一个“文本转手写”神器
作者 | Saurabh Daware译者 | 弯月,责编 | 郭芮来源 | CSDN(ID:CSDNnews)最近,有一个名叫Saurabh Daware的印度大学生只花了3个小时就编写了一款自动化工具,能够将文本转换成手写文字,并用这个工…

Laravel应用
CLI 参考:http://laravel-china.org/docs/5.1/artisancli处理业务,把业务封装成一个命令,用php artisan来调用自定义的命令放在App/Console/Commands下创建方式php artisan make:console 命令名 —command调用时名字php artisan make:console…

匿名内部类和传接口
匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 参考:http://www.cnblogs.com/nerxious/archive/2013/01/…
为什么这门技术如此重要?错过这次黄金期,就晚了!
老李一直怀疑自己是不是年纪大了,脑子跟不上了。作为十几年经验的资深 Java 工程师,维护这公司产品的核心代码的他,现在迭代产品的时候,经常出 Bug 。有时修复一个 Bug 时间,比开发一个需求的时间要长很多,…

字符编码简介 ANSI Unicode Unicode big endian UTF-8
1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和 1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte࿰…

ReactiveCocoa代码实践之-更多思考
三.ReactiveCocoa代码实践之-更多思考 1. RACObserve()宏形参写法的区别 之前写代码考虑过 RACObserve(self.timeLabel , text) 和 RACObserve(self , timeLabel.text) 的区别。 因为这两种方法都是观察self.timeLabel.text的属性,并且都能实现功能。估计是作者原本…

Java常用命令及Java Dump
线程Dump,包含所有线程的运行状态。纯文本格式。 堆Dump,包含线程Dump,幵包含所有堆对象的状态。二进制格式。 Java Dump方法 1.使用Java虚拟机制作Dump 指示虚拟机在发生内存不足错误时,自动生成堆Dump -XX:HeapDumpOnOutOfMemoryError 2.使用图形化工具制作Dump 使用JDK…

使用Windows远程登录Ubuntu
一、SSH登录 1、Ubuntu默认没有安装SSH ,可以在新得利软件安装程序里,搜索SSH,标记并安装; 或者使用命令: sudo apt-get install openssh-server sudo /etc/init.d/ssh restart ssh localhost…
紧急更新下降难度,《王者荣耀》绝悟 AI 难倒一片玩家
作者 | 神经星星来源 | HyperAI超神经(ID: HyperAI)在 5 月 1 日~ 5 月 4 日期间,玩家通过《王者荣耀》最新版本客户端进入游戏,即可与绝悟 AI 对战。一时间哀鸿遍野,普通玩家、游戏主播、职业选手,纷纷表示…

SQL:安装多个实例,修改实例端口号,和IP加端口号连接实例
原文:SQL:安装多个实例,修改实例端口号,和IP加端口号连接实例sql server 安装第一个实例,默认实例的端口是1433, 一个库中如果有多个实例,从第二个实例开始的端口是动态端口,需要的话,自己手工指…
用“逐步排除”的方法定位Java服务线上“系统性”故障
说明:原文地址已经不可访问,其他地方有转载,不过很多丢失图片,所以,找到一处有图的重新配好图。 用“逐步排除”的方法定位Java服务线上“系统性”故障 Posted on 2014/08/25李斯宁(高级测试开发工程师&…
清华硕士爆料:这些才是机器学习必备的数学基础
现如今,计算机科学、人工智能、数据科学已成为技术发展的主要推动力。无论是要翻阅这些领域的文章,还是要参与相关任务,你马上就会遇到一些拦路虎:想过滤垃圾邮件,不具备概率论中的贝叶斯思维恐怕不行;想试…

LINUX环境下资源下载中文目录及中文文件名称问题
为什么80%的码农都做不了架构师?>>> http://www.yeeach.com/2009/04/09/linux%E7%8E%AF%E5%A2%83%E4%B8%8B%E8%B5%84%E6%BA%90%E4%B8%8B%E8%BD%BD%E4%B8%AD%E6%96%87%E7%9B%AE%E5%BD%95%E5%8F%8A%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6%E5%90%8D%E7%A7%B…

dojo从asp.net中获取json数据
搞来有搞去终于有了个结果,主要是一开始犯了一些低级错误。 对于json不太了解的童鞋,可以看看这个:http://www.dreamdu.com/blog/2008/10/19/json_in_javascript/ 这个例子中主要是从数据库中读取数据,转换成JSON格式,…