【NLP】详聊NLP中的阅读理解(MRC)

机器阅读理解,笔者认为他是NLP中最有意思的任务了。机器阅读一份文档之后,可以“理解”其中的内容,并可以回答关于这份文档的问题。听上去,有一种很强的“人工智能”的Feel。

这篇文章介绍机器阅读理解(Machine Reading 

Comprehension),包括MRC的概况、做法以及主要模型。

作者&编辑 | 小Dream哥

目标

目前来讲,还没有一种NLP技术,能够端到端的实现对文本的理解。通常是转化位不同的NLP任务,来实现对文本不同层面的“理解”,例如如下的任务:

  1. 词性识别 

  2. 命名实体识别

  3. 句法依存

  4. 句法依存

MRC也是一种理解文本的任务,它的大体模式是:机器阅读文档,并回答相关的问题

这跟我们做英语的阅读理解题目是非常的相似,阅读一篇英文章之后,基于此,做后面的几道选择题或者填空题。

MRC发展概况

在MRC的早期主要是一些基于规则和机器学习方法的MRC系统:

  1. 1997,QUALM system

  2. 1999. Reading Comprehension dataset by Hirschman et al

  3. 1999 Deep Read System (rule-based BOW model)

  4. 2000 QUARC system (rule-based)

  5. 2013-2015 MCTest(and 4 on1)  and ProcessBank(Y/N)  dataset

  6. 2014 Statistical Model

  7. Machine learning Models(map the question to formal queries)

上述基于规则的系统,通常能够获得30-40%的准确率,机器学习模型取得了一些进展,但也有一些问题,例如:

  1. 严重依赖一些基于语法和语言学的工具

  2. 数据集太小

  3. 基于现有的语言学工具,很难特征构建有效的特征

随着深度学习时代的到来,这种情况得到了很大的改上,出现了如下的模型是数据集:

  1. 2015. The Attentive Reader(Hermann et al). Achieved 63% accuracy

  2. 2015 CNN and Daily Mail

  3. 2016 Children Book Test

  4. 2016 The Stanford Question Answer Dataset (SQUAD 1)

  5. 2017 Match-LSTM,BiDAF,TrivalQA,R-net,RACE

  6. 2018. QANet, NarrativeQA ,BiDAF+self-attention+ELMO,SQuAD 2.0, The Standford Attentive Reader,BERT, HotPotQA

我们现在来正式的定义一下基于神经网络的MRC:

给定一个训练数据集{P,Q,A},目标是学习一个函数f:

                        f(p,q)-> a

其中,P是文档集,Q是问题集,A是答案集。

根据Answer的类型,我们可以把目前的MRC系统分为以下4类:

  1. 完形填空类型(cloze)

  2. 多项选择(Multiple Choice)

  3. Span Prdiction

  4. Free-From answer

The Standford Attentive Reader

如下图所示,展示了Stanford Attentive Reader模型结构图

这里的SAR主要用来解决的是span prediction的MRC问题。设给定一篇文章p,长度位l1;同时给定一个问题q,长度位l2;目的是预测一个span(start,end),start和end是P上词位置,并且这个span是这个问题的答案。

模型将这个任务转化为序列上的二分类问题,即对于文章中的每个词,都预测这个词分别是start和end的得分,最后用这个分数来预测span。

1)question部分的编码

主要是对question进行编码,先经过embedding层,而后用BiLSTM进行序列建模,最终每个词的表征为:

然后,接一个带权重的softmax,得到一个编码向量q,如下的公式所示:

2)Passage编码部分

Passage的编码也是先经过embedding,再通过BiLSTM进行序列建模,最终每个词的表征为:

需要注意的是,输入BiLSTM的emdedding向量是由4部分concate而成的:

  1. Glove生成的embedding

  2. embedding对齐特征,通过与q的embedding做attention而得到

  3. 词性特征

  4. 实体类型特征

3)prediction部分

简单来说就n个二分类,根据q和p分别预测每个词是start及end的概率:

4)损失函数

训练过程中采用的损失函数如下:

这个模型还可以转化为上述的cloze,multiple-choice等类型的MRC任务,做一些简单的调整即可。

我们前面还介绍过,如何基于BERT来做MRC的任务,感兴趣的读者可以看看:

【NLP】如何利用BERT来做基于阅读理解的信息抽取

总结

基于MRC可以完成知识抽取、QA等重要的NLP任务,读者务必熟悉。

读者们可以留言,或者加入我们的NLP群进行讨论。感兴趣的同学可以微信搜索jen104,备注"加入有三AI NLP群"

下期预告:暂无

知识星球推荐

扫描上面的二维码,就可以加入我们的星球,助你成长为一名合格的自然语言处理算法工程师。

知识星球主要有以下内容:

(1) 聊天机器人;

(2) 知识图谱;

(3) NLP预训练模型。

转载文章请后台联系

侵权必究

往期精选

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
NLP(自然语言处理)是一门研究如何使计算机能够理解和处理人类语言的领域。Python是一种广泛用于编程的编程语言。结合Python和NLP可以进行各种自然语言处理任务,如文本分类、命名实体识别、情感分析等。在Python,有许多流行的库和工具可供使用,以便进行NLP任务。以下是一些常用的Python库和工具: 1. NLTK(自然语言工具包):它是Python最常用的NLP库之一,提供了许多用于文本预处理、词性标注、词袋模型、语法分析等任务的功能。 2. spaCy :这是另一个流行的Python库,它提供了高效的自然语言处理功能,包括分词、词性标注、命名实体识别和依赖解析等任务。 3. TextBlob :这是一个易于使用的Python库,它提供了一系列简单的API,用于处理常见的NLP任务,如情感分析、词性标注和文本分类。 4. Gensim :它是一个用于主题建模和文本相似度计算的Python库,可以用于处理大规模的文本数据。 5. Scikit-learn :这是一个通用的机器学习库,其包含了许多用于文本分类、情感分析和文本聚类等任务的算法。 这些库和工具为Python开发者提供了丰富的功能和资源,便于进行各种NLP任务的开发和实验。你可以根据具体的需求选择适合的库和工具,并结合相关的算法和技术来处理自然语言数据。希望这些信息能够帮助到你。 NLTK官方网站:https://www.nltk.org/ spaCy官方网站:https://spacy.io/ TextBlob官方网站:https://textblob.readthedocs.io/ Gensim官方网站:https://radimrehurek.com/gensim/ Scikit-learn官方网站:https://scikit-learn.org/stable/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值