自然语言是人类智慧的结晶,自然语言处理是人工智能中最为困难的问题之一,而对自然语言处理的研究也是充满魅力和挑战的。
在智媒体应用领域,使用到了大量的自然语言处理技术,包含文本数据抽取标签、分词、自动摘要、知识图谱的构建等等,封面智媒云结合智能推荐、文本审核、新闻知识图谱等场景一直在探索NLP算法优化方案。
今天邀请到数据研究部的NLP算法工程师Banner,跟大家介绍了 NLP与深度学习结合的两个范式,以及实体关系抽取的传统做法及传统做法的问题。基于机器阅读理解的信息抽取方法在结果上优于传统做法。
▌ NLP简介
1. 自然语言处理(NLP)是什么?
NLP (Natural Language Processing) 是人工智能(AI)的一个子领域,自然语言处理是研究能实现人与计算机之间,用自然语言进行有效通信的各
种理论和方法。
2. 为什么自然语言处理很难?
自然语言处理的难点在于歧义性。如下面的例子:
同样的表达方式,有不同的含义:
“喜欢一个人”:like someone 或者 like to be alone。
虽然表达方式不同,但表达的含义相同:
“苹果多少钱一斤”、“苹果一斤多少钱”、“一斤苹果多少钱”
3. 常见的 NLP 任务
常见的 NLP 任务可以分为简单、中等、困难,分别包含的具体任务如下:
简单任务:分词、词性标注、垃圾邮件分类、句法依存分析
中等任务:词义消歧、情感分类、命名实体识别、信息检索
困难任务:关系&事件抽取、翻译、自动摘要、问答、对话
4. 深度学习与 NLP 结合的范式:
范式 1:
第一种深度学习与 NLP 的结合的范式(Bert 出现之前),一般包含以下几
步:
-> Embed:该阶段把离散 id 变成稠密向量,可能对以下几个维度特征进行
embedding,包括 word(单词)、char(字符)、pos tag(词性)、position(位 置)。
-> Encode :该 阶 段 使 得 稠 密 向 量 获 得 上 下 文 信 息 , 一 般 方 案 包 括 CNN/RNN/Transformer。
-> Attend:该阶段可以使更远的信息可以互相注意,一般分为加性(sum)、
乘性(product)的注意力机制。
-> Predict :NLP 任 务 一 般 是 预 测 离 散 的 变 量 , Classification 分 类 、
Seq Labeling 序列标注、翻译/摘要可以 model 成 seq2seq 的任务。
范式 2:
最近有些 Pre-train 的模型出现,打破的了之前的方案,把 embed 到 Attend,
基本上都用的类似的方法,通过 Pre-train 得到一个带着上下文信息的向量。
算法包括 elmo、gpt、bert、gpt2、xlnet、ernie、roberta 等,在大数据量
上进行预训练
。
第二种深度学习与 NLP 的结合的范式,一般包含以下几步:
-> Pre-train:刚开始是用大规模的语料进行预训练。
-> Fine_tune:针对特定任务进行微调。
-> Predict:进行 Predict。
▌ 信息抽取
信息抽取是将非结构化的文本信息转换为结构化的信息,如上图所示,左边
为非结构化文本,通过信息抽取得到右边结构化的信息。
大量的信息抽取任务是实体和关系的抽取,举个例子,乔布斯是苹果公司的
CEO。其中"乔布斯"和"苹果公司"是实体,分别是人名、公司名;两个实体之
间是雇佣关系。
实体关系抽取的传统做法:
Pipeline 的方法:
先进行命名实体识别,再进行关系识别。
joint 方法:
通过共享参数的模型,把实体识别和关系识别联系到一起。
命名实体识别(NER):
NER 也可以分为 4 步:
-> Embed:把 Michael Jeffrey Jordan was born in Brooklyn,变成一个
稠密向量。
-> Encode:在 NER 中主要是 RNN 相关的;
-> Attend:把注意力集中在“一个人在布鲁克林出生”
-> Predict:主要用 CRF 做序列标注。
也可以用 BERT,把 Embed 到 Attend 之间都用过 BERT 来初始化,然后进
行 fine_tune,然后在最上层加一个 Predict 的神经网络。
关系抽取(RE):
RE 一般被 model 成 Classification 任务,同样分为以下 4 步:
-> Embed:还是将字或者词变成一个稠密的向量,这里还会多一个 position,
一般认为待变成稠密向量的词与实体之间的位置是一个相对位置。
-> Encode:对于关系识别来说,即包含 CNN 相关的,也包含 RNN 相关的,
把上下文的信息考虑进来。
如上图是一个 PCNN,通过两个实体把句子分为
三部分,每部分分别做 CNN 的 max pooling(由于这三部分的用处不同,
直接做 max pooling 可能会有一些信息的损失),再经过 Softmax classifier
进行分类。
-> Attend:Attention 可以 Attend 到两个实体是由于哪个词分辨出是雇佣
的关系,比如“CEO”就可以认为“苹果公司”和“乔布斯”之间是雇佣关
系,有比较大的一个权重。
-> Predict:对定长的向量进行 Predict 分类。
刚刚说的都是 Pipeline 的方法,Joint 方法也是类似的,主要是把两部分的一
些模型的
参数在底层被共享起来。
▌ 机器阅读理解
1. 机器阅读理解
机器阅读理解是给定上下文 c,和问题 q,得到答案 a,a 是原文中的一个或
多个 span -> 。
如图所示,通过提问“赵文什么时候就职于越秀会计事务所?”,我们可以
发现,是在 1998 年到 2000 年时就职于越秀会计事务所。这样就得到赵文、
越秀会计事务所、时间等多个实体间关系。
2. 机器阅读理解做法
MRC 的做法也是分为 4 步:
先 Embed,把字和词变成稠密向量,通过 Contextual 进行 Encode,这里通
过的是 LSTM 或者 GRU 之类的方案,通过上下文一起考虑进来,然后进行
Attend,question 和文章互相注意,最后是 Predict,进行分类和序列标注。
Bert 出现之后,可以通过 Bert 方案,把前 3 步换成 Bert,最后预测一个 start
和一个 end,或者通过序列标注的方案来做。
Bert 时,会在 Question 的 Tok 前加一个 CLS,后面加一个 SEP, 然后把 Paragraph 的 Tok 放在后面。
然后预测 Paragraph 中哪位置的 Tok 是 start,哪个位置的 Tok 是 end,来预测阅读理解问题。
3. 使用 MRC 做实体关系抽取
在 ACL2019 的论文中,我们提出了使用一种 MRC 的新的范式来做实体和关
系抽取。
三元组:(头实体,关系,尾实体)例如(乔布斯,受雇于,苹果公司)
对于“乔布斯是苹果公司的 CEO”可以提两个问题:
① 首先提的是头问题,Q:人名是什么?A:乔布斯
首先得到 head Entity 头实体,对于头实体 提问完之后,可以得到头实体的答案,把头实体的答案填入问题模板中,再 获得后面的实体。
4. 多轮问答进行实体-关系抽取
这样通过阅读理解的方案就得到了这样一张表,也就是完成了从非结构化文
本到结构化文本的转换,我们发现在 ACE2004 和 2005 数据集上,Multi-turn 的方式相比于传统的方式分别有 1 个点和 0.6 个点的提升。
▌ 总结
本次分享主要梳理了NLP的主要主要概念,以及其中两类重要的信息抽取任务。
自然语言处理,重点介绍了 NLP 与深度学习结合的两个范式。信息抽取,重点介绍了实体关系抽取的传统做法及传统做法的问题,传统做法很难处理层级关系及准确率问题。 机器阅读理解,基于机器阅读理解的信息抽取方法在结果上优于传统做法。
自然语言处理在人工智能领域也是很重要的问题,封面智媒云在实践智能应用的基础上也在持续不断的优化NLP算法,让智能产品更适合媒体行业应用场景。
扫码关注
RECOMMEND推荐阅读封面科技 | 如何通过测试工作提升产品质量与交付周期封面数据 | 智能助理如何理解用户意图技术创新赋能媒体融合 中国新闻技术工作者联合会2020年学术年会在成都举行智媒云4.0总体架构发布 智媒体新物种“破圈”进化封面数据 | 知识图谱的入门与应用