自然语言处理之经典神经网络的应用
在上一部分,自然语言处理的经典任务中,我根据ACL 2020 Call for paper总结了10余个热点任务。其中大部分任务可以归类为分类问题、标注问题,以及回答、翻译与理解问题这三个大类(个人意见)。例如,分类问题可以包括情感分析、意图分析、relation classification等,这一类问题的特点是,对于输入的文本,输出类别;标注问题范围更广,常见的如POS标注、命名实体识别、细粒度观点挖掘等等都属于标注问题,这一类问题的特点是,对于输入的文本,输出标注序列(如BIO标注序列)。回答、翻译与理解问题包含问答、翻译和理解等问题,这一类问题的特点是对于输入的文本,输入新的文本序列,甚至对于输入的图片,语音,影像,输出文字描述。
自然语言处理光任务就能分十几个,但总体而言大部分深度模型都是基于RNN或CNN的,其中不同于图像处理,RNN使用更多一些(个人意见)。本文主要应用经典RNN或CNN解决上述三大类问题,并简要介绍最新研究前言中的改进方案。
分类问题
自然语言处理中分类问题可以包括情感分析、意图分析、relation classification等,这一类问题的特点是,对于输入的文本,输出文本类别;
如上图通过RNN解决文本分类问题,对于输入序列
w
1
,
w
2
,
.
.
.
,
w
t
{w_1,w_2,...,w_t}
w1,w2,...,wt,将每一个词转换为对应的词向量后输入RNN,经t轮计算后输出结果向量o,最后通过softmax得到这一句话对应类别的概率分布。使用RNN的好处是,其隐层状态h代表一种“记忆”,可以从一定程度上储存整个句子的信息。在此基础上,很快人们发现使用LSTM比原始RNN效果要好。RNN和LSTM的原理和具体实现见本人其他博文介绍:【RNN与LSTM
】。在RNN和LSTM基础上,研究者发明双向LSTM,注意力机制,Seq2Seq模型,以及transformer,这些内容见本人其他博文介绍:【注意力机制】,【transformer】。
CNN在自然语言处理部分不如RNN使用广,但是(至少)在关系抽取(尤其是关系分类,relation classification)中使用效果较好,这可能是因为关系抽取和分类更需要关注句子的局部特征。EMNLP2015论文Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks是关系抽取领域的标杆级论文,该论文使用基于CNN的模型对句子所包含的关系进行分类如下图所示。
标注问题
自然语言处理任务中常见的如POS标注、命名实体识别、细粒度观点挖掘等等都属于标注问题,这一类问题的特点是,对于输入的文本,输出标注序列(如BIO标注序列)。标注问题一般使用基于RNN的深度学习模型解决。经典的RNN解决标注问题的模型如下:
与分类问题不同,RNN对于每一个时间点的输入,计算隐层状态h之后都通过输出层进行输入,输出的结果o经过softmax转化之后可以得到这个词标签的概率分布。
回答、翻译与理解问题
回答、翻译与理解问题本质上都是将一个序列转化为另一个序列。例如,对于QA系统,我们输入的是问题序列,输出回答序列。对于翻译问题,输出的是语言1的句子,输出为语言2的句子。对于阅读理解,我们输入文本库,和一系列相关问题,输出的是一系列的回答句子。一些跨方向的研究课题也可以被包括在这一类,例如描述图片、描述电影。
我们可以很轻松地给出一个使用原始RNN对这一类问题的解决方案,如下图所示:
同标注问题,RNN对每一个时间点都进行了输出,不过此处的输出为向量(比如对于翻译问题,输出的就是目标语言的单词)。在RNN基础上研究者发明双向LSTM,注意力机制,Seq2Seq模型,以及transformer,这些内容见本人其他博文介绍:【注意力机制】,【transformer】。