注:本文已首发到机器之心上。

作者:Zeng Xiangji; 编辑:Hao Wang

引言:2019年5月ACM图灵大会上,朱松纯教授(加州大学洛杉矶分校)与沈向洋博士(微软全球执行副总裁)在谈到“人工智能时代的道路选择”这个话题时,沈向洋博士认为人工智能发展在工业界将会迎来黄金十年,而朱松纯教授也表示人工智能的发展趋势将会走向大一统,从小任务走向大任务,从AI六大学科走向统一。

自然语言处理领域的BERT模型恰好印证了这一规律,BERT尝试着用一个统一的模型处理自然语言处理领域的经典任务,如阅读理解、常识推理和机器翻译等任务。事实证明,自从谷歌于去年十月发布BERT之后,BERT便开始了漫长的霸榜之路,在机器阅读理解顶级水平测试SQuAD1.1中BERT表现出了惊人的成绩,全部两个衡量指标上全面超越人类,并且还在11种不同NLP测试中创出最佳成绩,包括将GLUE基准推至80.4%(绝对改进7.6%),MultiNLI准确度达到86.7% (绝对改进率5.6%)等。虽然近段时间不断有后起之秀在各种指标上超过了这一经典,但这只是架构上的小修小改。毫无疑问,BERT开启了自然语言处理领域一个崭新的时代。

最近发布的 XLNet 在多个方面超越了BERT,但是BERT语言模型与现有领域,如法律文书、科研论文,的交叉应用实例,对于XLNet的应用仍有非常大的意义。

1. 介绍

近十年,深度学习的复兴给自然语言处理领域带来了翻天覆地的变化,特别是2013年简化版词嵌入word2vec的提出为深度学习在自然语言处理领域的应用打下了铺垫。由于神经网络是基于张量空间的数值计算,因此神经网络不能良好的表示自然语言文本。自然语言文本与神经网络之间需要一个桥梁来完成这一转换,而词嵌入就是这个桥梁,词嵌入可以将自然语言文本转化成语义空间上低维的稠密数值向量。但是经过词向量转换后的句子表示在整个语义层面上仍然有着较大地缺陷,因为词嵌入无法有效地解决一词多义的问题。

语言预训练模型从另一个思路尝试着解决上下文环境语义表示的问题。互联网上拥有海量的文本数据,然而这些文本大多都是没有标注的数据,AllenNLP ELMo模型的提出解决了从这些海量的无标记文本数据中获取上下文语义表示的问题。但是受限于LSTM的能力,ELMo模型只是一个使用了三层BiLSTM的网络模型,按照传统观点,深度学习模型要想捕捉更精确的语义表示就需要将模型网络层数做得更深。

OpenAI GPT模型解决了这个问题,GPT采用Transformer的编码层作为网络的基本单元,Transformer舍弃了RNN的循环式网络结构,完全基于注意力机制来对一段文本进行建模,从而可以将网络模型做得更深。除此之外,Transformer还解决了RNN不能并行计算的缺点,这对减少模型训练的时间以及加大训练数据集带来了可能性。

BERT则在此基础上更进一步,相比于GPT对句子从左到右的单向扫描,BERT模型的每个词语可以感知两侧的语境,从而可以捕捉更多的信息。BERT采用了两个超大的数据集:BooksCorpus(800M words)和English Wikipedia(2500M words)进行预训练。因此,可以说BERT拥有了某种程度上的语言语义理解能力。BERT可以作为其它任务网络模型的上游骨架,它可以很好的抽取任务数据的语义表示向量,我们只需要在上面进行微调即可获得很好的效果,这衍生出了许多神奇的下游应用。

2. 应用

2.1. 红楼梦知识提取

知识图谱是人工智能研究中的核心问题,它是人类对世界的近似表示与理解,能够赋予机器精准查询、理解与逻辑推理等能力。知识图谱相关的技术主要分为三个部分:知识提取、知识表示和知识应用。知识提取主要负责从各种结构化和非结构化的信息中抽取实体和关系即构建知识图谱,知识表示则是研究如何更好地表示知识,知识应用则是利用已经构建好的知识图谱为各种下游任务赋能,赋予机器理解世界的能力。

知识图谱也能够辅助我们快速了解小说的人物关系,对于没有仔细读过红楼梦或者是读得似懂非懂的同学们来说,我们可以利用BERT搭建起知识提取的机器学习模型提取红楼梦中的人物即实体,并分析人物与人物之间的关系,这对我们快速了解小说人物结构非常有帮助。有一位作者利用BERT对红楼梦进行了一个简单的人物知识图谱建模,接下来我们将会详细说明作者是如何从红楼梦中抽取人物和关系。

1)数据准备:作者首先利用正则表达式从红楼梦提取对话,如果假设说出这段话的人的名字出现在这段话的前面,那么可以用这段话前面的一段话作为包含说话人(speaker)的上下文(context)。如果说话人不存在这段上下文中,标签为空字符串。目前效果较好的实体抽取模型多为监督学习的模型,所以基于BERT的实体抽取模型也采用有监督的方法训练模型。因此,作者对之前抽取的对话进行实体标注。除此之外,由于实体之间的关系抽取技术还不太成熟,因此作者做了一个很简单的假设,把相邻的人看作是在对话,这在一定程度上是可以成立的。标注数据的部分结果如下:

{'uid': 1552, 'context': '黛玉又道:', 'speaker': '黛玉', 'istart': 0, 'iend': 2}

{'uid': 1553, 'context': '因念云:', 'speaker': None, 'istart': -1, 'iend': 0}

{'uid': 1554, 'context': '宝钗道:', 'speaker': '宝钗', 'istart': 0, 'iend': 2}

{'uid': 1555, 'context': '五祖便将衣钵传他.今儿这偈语,亦同此意了.只是方才这句机锋,尚未完全了结,这便丢开手不成?"黛玉笑道:', 'speaker': '黛玉', 'istart': 46, 'iend': 48}

{'uid': 1556, 'context': '宝玉自己以为觉悟,不想忽被黛玉一问,便不能答,宝钗又比出"语录"来,此皆素不见他们能者.自己想了一想:', 'speaker': '宝玉', 'istart': 0, 'iend': 2}

{'uid': 1557, 'context': '想毕,便笑道:', 'speaker': None, 'istart': -1, 'iend': 0}

{'uid': 1558, 'context': '说着,四人仍复如旧.忽然人报,娘娘差人送出一个灯谜儿,命你们大家去猜,猜着了每人也作一个进去.四人听说忙出去,至贾母上房.只见一个小太监,拿了一盏四角平头白纱灯,专为灯谜而制,上面已有一个,众人都争看乱猜.小太监又下谕道:', 'speaker': '小太监', 'istart': 103, 'iend': 106}

{'uid': 1559, 'context': '太监去了,至晚出来传谕:', 'speaker': '太监', 'istart': 0, 'iend': 2}

虽然作者花了两个小时标注了1500条左右的数据,然而这对于模型的训练仍然显得有些不足,所以作者又利用数据增强技术扩增到两百万条数据。

2)模型:作者构建实体抽取模型的思路是把实体抽取任务看成QA问题,即问题是对话语句而答案是抽取的实体,因此作者基于BERT并仿照阅读理解任务SQuAD上的模型做了实体抽取模型。

3)预测结果:由于BERT模型的强大,通过简单的问答训练,作者发现实体抽取的效果非常好,只有少部分出现问题,以下是部分预测结果:

4)人物关系:至于人物实体关系的抽取,作者则根据之前的假设,利用规则对人物关系进行了分析。其中,宝玉与袭人之间对话最多(178+175),宝玉与黛玉之间对话次之(177+174),宝玉与宝钗之间对话(65+61),仅从对话次数来看,袭人与黛玉在宝玉心目中的占地差不多,宝钗(65+61)占地只相当于黛玉的三分之一,略高于晴雯(46+41)。

2.2. 情报检测

随着互联网用户的不断增加,互联网上的信息已经达到了不可能靠人力就能处理的地步,这其中情报信息的检测也变得十分重要。灾难信息是属于情报信息的一种,它是在灾害和其他紧急情况的准备,缓解,响应和恢复阶段使用信息和技术的研究,比如爆炸检测、情感分析和危害评估等。

诸如Facebook、Twitter等社交网站上的灾难信息如果得不到有效的检测,那么这将是一个极大的安全隐患。传统的灾难信息检测是基于关键词过滤的方法,但是这种方法具有很大的问题,一是灾难信息的组织形式在不断发生变化,二是仅靠社交公司有限的人力根本不可能有效地维护关键词语料库。

Guoqin Ma提取了基于BERT的机器学习模型对灾难信息进行处理,他将推特上的灾难信息处理看作是文本分类问题。因此,在作者所用到的数据集中,作者将推特信息和灾难类型分别分为如下几类:

作者以一个单层双向LSTM作为基准,然后再在BERT之上衍生了四个模型变种default BERT,BERT+NL,BERT+LSTM,BERT+CNN。

其中default BERT只在BERT的输出层加上单层全连接网络以及softmax,而BERT+NL则是多层全连接网络以及softmax,BERT+LSTM顾名思义就是BERT输出层输入到一个LSTM网络,最终LSTM的输出再通过softmax输出,而BERT+CNN也是相同的原理,只不过LSTM换成了CNN。

最终的实验结果如下图所示,我们可以看到基于BERT的模型在所有指标上均超过了只基于LSTM的基准模型。

2.3. 文章写作

在自然语言处理的任务中,文本生成可采用经典的sequence2sequence模型来完成,即Encoder和Decoder模型结构,其中Encoder和Decoder一般都采用RNN来实现。而要想使用BERT来进行文本生成这个任务通常来说会是一个比较难的问题,原因在于BERT在预训练的时候采用的是MASK的方法,这是一种自编码(AE)的方法,训练的时候会利用上下文语境一起训练,并尝试着复现原输入。相比于BERT,一般的LSTM采用的是上文预测下文的方法,这是一种自回归(AR)的方法,天然适合文本生成,因为文本生成就是从左到右一个单词一个单词生成的。

那么BERT是否就不能应用于文本生成呢?Alex Wang在他的论文“BERT has a Mouth, and It Must Speak: BERT as a Markov Random Field Language Model”中解释了这一问题,论文标题很直接地回答了这个问题,BERT有张会说话的嘴。

这篇文章的作者先结合伪对数似然证明了BERT是一个马尔科夫随机场语言模型(MRF-LM),而马尔可夫随机场是一个可以由无向图表示的联合概率分布,即下一个时间点的状态只与当前的状态有关,属于生成式模型。同时也因为在某种程度上BERT学习到了句子的分布,所以这也就是说我们可以利用BERT来进行文本生成,比如新闻写作、小说写作等任务。

我们可以看到生成的效果如下(左边是BERT生成的效果,右边是GPT生成的效果):

2.4. 法律文书 BERT

在自然语言处理领域,训练数据的文本质量至关重要,高质量的文本数据能够让模型学得更快学得更好。而法律行业则是少有的拥有高质量文本数据的行业,这是因为法律文书、合同等文本的质量高低与相关人员的切身利益密切相关,所以相关方都会反复审查文书内容确保文本质量。

清华大学人工智能研究院和幂律智能在最近这段时间发布了几个中文领域的预训练BERT模型,其中有民事文书BERT和刑事文书BERT是法律领域专用的预训练语言模型。

民事文书BERT基于2654篇民事文书进行训练,经过测试,它在相关法律任务上能够更快地学习到东西,并明显优于Google官方的中文BERT。而刑事BERT则是基于663万篇刑事文书进行训练,在相关任务上的表现也比原版中文BERT要好。以下是测试结果:

该项目的预训练法律BERT模型与著名的开源项目 https://github.com/huggingface/pytorch-pretrained-BERT完全兼容,只是模型参数发生了改变。此外由于pytorch-pretrained-BERT有着完善的文档,所以对于想要尝试该模型并熟悉pytorch的同学来说,这个模型可以很快的上手。

2.5. 科学论文 BERT

近日,美国能源部劳伦斯伯克利国家实验室最近发表在《自然》杂志上的一篇论文引起了人们的广泛关注。研究人员表示它们的无监督预训练词嵌入在自动阅读 300 万篇材料学领域的论文之后发现了全新的科学知识。他们将这些论文的摘要用word2vec算法进行词嵌入训练,通过解释分析词与词之间的关系,可以提前数年给出新热电材料的预测,在目前未知的材料中找出有应用潜力的候选材料。

在论文文本预训练领域,也有这么一个基于BERT模型进行训练的。SciBERT是AllenNLP提出的一个基于科学论文文本预训练的BERT,根据SciBERT介绍,它具有以下特性:

1)完全基于semanticscholar.org的论文全文进行训练,而不仅仅是摘要,整个论文数量达到了1.14M,而文本符号也达到了3.1B的级别; 2)SciBERT有自己的词库scivocab,该词库完全匹配训练语料库; 3)在目前所有科学领域的自然语言处理任务中均达到了最先进的级别,我们可以看下图;

3. 结语

由于BERT通过威力巨大的特征抽取器Transformer在海量的文本上学习到了大量的语言特征先验知识,所以这对于大多数自然语言处理的任务都有非常好的效果。如果BERT比作一个人,那么它的阅读量则达到了我们一生所不能达到的量,从一定程度上可以说BERT是一位博学家。BERT为我们开启了一个崭新的自然语言处理时代,相信站在这个巨人的肩膀上,未来一定会爆发更多有趣的工作!

bert cnn知识抽取模型_BERT的神奇应用相关推荐

  1. 信息抽取(二)花了一个星期走了无数条弯路终于用TF复现了苏神的《Bert三元关系抽取模型》,我到底悟到了什么?

    信息抽取(二)花了一个星期走了无数条弯路终于用TF复现了苏神的<Bert三元关系抽取>模型,我到底悟到了什么? 前言 数据格式与任务目标 模型整体思路 复现代码 数据处理 数据读取 训练数 ...

  2. 【信息抽取】如何使用BERT进行关系抽取

    事物.概念之间的关系是人类知识中非常重要的一个部分,但是他们通常隐藏在海量的非结构文本中.为了从文本中抽取这些关系事实,从早期的模式匹配到近年的神经网络,大量的研究在多年前就已经展开. 然而,随着互联 ...

  3. 基于Bert的实体关系抽取模型

    关注微信公众号:NLP分享汇.[喜欢的扫波关注,每天都在更新自己之前的积累] 文章链接:https://mp.weixin.qq.com/s/OebxnvwjQiVbBZZFL2Un3A 前言 信息抽 ...

  4. NLP精选10个实现项目推荐-涉及预训练Bert、知识图谱、智能问答、机器翻译、对话等...

    自然语言处理技术近几年发展非常快,像BERT.GPT-3.图神经网络.知识图谱等技术被大量应用于项目实践中. 今年大厂的NLP面试中对项目方面的考察深度也随之提升了很多,经常会被面试官揪着细节一步一步 ...

  5. 基于DGCNN和概率图的轻量级信息抽取模型

    作者丨苏剑林 单位丨追一科技 研究方向丨NLP,神经网络 个人主页丨kexue.fm 前几个月,百度举办了"2019语言与智能技术竞赛" [1],其中有三个赛道,而我对其中的&qu ...

  6. paddle 图标注_基于DGCNN和概率图的轻量级信息抽取模型

    作者丨苏剑林 单位丨追一科技 研究方向丨NLP,神经网络 个人主页丨kexue.fm 前几个月,百度举办了"2019语言与智能技术竞赛" [1],其中有三个赛道,而我对其中的&qu ...

  7. 关系抽取模型介绍和实践

    关系抽取预知识和发展介绍 事实知识: 三元组表示实体间关系 关系抽取: 文本中蕴藏含着大量事实知识 一个完整关系抽取系统通常包含以下模块: NER Entity Linking(避免重复添加到知识图谱 ...

  8. 文本信息常用的事件抽取模型

    3.3.4 常用的事件抽取模型 DMCNN DMCNN是一种基于动态池化(dynamic pooling)的卷积神经网络模型的事件抽取方法,来自中国科学院自动化研究所的论文<Event Extr ...

  9. 知识图谱--知识抽取

    知识抽取 – 潘登同学的KG笔记 文章目录 知识抽取 -- 潘登同学的KG笔记 前言 知识抽取 实体识别与分类 实体识别解码策略 指针网络 关系抽取 基于模板的方法 基于机器学习的模型 深度学习模型 ...

最新文章

  1. linux防火墙常用控制协议,linux防火墙配置及管理.doc
  2. hive -e和hive -f的区别(转)
  3. java电影票选座_jQuery实现电影票选座效果手机端代码
  4. 简单工厂模式:Simple Factory Pattern(转自阿良.NET)
  5. 冈萨雷斯图像处理Matlab函数汇总
  6. 华为NP课程笔记5-中间系统到中间系统实验
  7. 【企业架构框架】2022 年 TOGAF 的新发展
  8. NET、wap网络的区别
  9. 基于C++实现考试报名系统
  10. 巨坑:transport.TransportException:Cannot execute request on any known server
  11. 【Prometheus】prometheus告警配置
  12. Hunger Snake 2
  13. 【冬察冬见】FFmpeg系列学习笔记
  14. 中山大学软件工程c语言,2017年中山大学085212软件工程考研参考书目推荐
  15. 杭州ALIENWARE外星人电脑(大悦城旗舰店),玩起来就是不一样
  16. Java多线程同步和异步详解
  17. ABC166E This Message Will Self-Destruct in 5s 题解
  18. android 不能在子线程中更新ui的讨论和分析
  19. java设计模式_UML类图(上)
  20. AvaSpec-ULS2048光谱仪测定地物高光谱曲线的方法

热门文章

  1. mmpose遇坑计--使用mmpose在mpii数据集上复现HRnet时PCKh@0.1较低解决方法
  2. 信号的频谱分析实验matlab,实验2matlab基础及信号频谱分析.doc
  3. 将eps文件控制在300K左右
  4. Web of Science 检索使用教程
  5. mc服务器常用指令_MC服务器新手指令大全
  6. 为什么连续偶函数的原函数之一是奇函数,连续的奇函数的原函数都是偶函数并证明
  7. 天创速盈:简单步骤,教你开设网店
  8. 物联网- Android-校园门闸控制系统
  9. mysql查询人口最多的城市_mysql-查询计数地区和区域的雇员数
  10. 覆盖率COV的命令设置及收集