前言:本文是对CMU CS 11-747(Neural Networks for NLP)课程中Using/Evaluating Sentence Representations章节内容的一个梳理。本文第一部分将对前几次课程中提到的文本表示方法进行一个概括。第二部分介绍五种文本表示的应用,分别是句子分类、释义识别、语义相似度、文本蕴涵和信息检索。本文将分别介绍这五种应用的任务及评价指标、常见数据集及其产生的方法、以及使用的模型。第三部分将做一个简要总结并分享一些相关问答。
本文作者:李思晴,2014级本科生,目前研究方向为深度学习、推荐系统,来自中国人民大学大数据管理与分析方法研究北京市重点实验室。
一、文本表示方法的简要概括
本文大致介绍两类文本表示方法。一类是将一个句子表示为一个向量,例如向量空间模型(VSM),也称词袋模型(BOW)。定义一个与字典长度相同的向量,向量中每个位置对应字典中相应位置的单词,句子中出现的单词,就在向量的对应位置填入相应权值,这样就可以用一个向量来表示一个句子。另一类是将一个句子表示为多个向量的序列,例如利用word embedding,将句子中每个单词都转化为一个向量,这样,一个具有n个单词的句子就可以表示为n个向量的序列。
二、文本表示的应用与评价方法
1、句子分类(Sentence Classification)
1.1 任务:根据主题或者情感语义等特性对句子进行分类。
1.2 模型:CNN在NLP中的一大应用就是句子分类。
传统的句子分类是使用SVM和Naive Bayes,它们选择的文本表示方法大多是词袋模型,会忽略词序信息。CNN用的是word-embedding来表示句子,可以保留词的序列特征。模型如下图所示:
首先将句子中的单词向量化作为输入,然后用CNN抽取句子的特征,可以得到对应的一个分数,再通过softmax函数将分数映射成概率。本专栏上一篇文章《从CNN视角看在自然语言处理上的应用》中有对CNN更详细的介绍,在此就不过多赘述了。
1.3 数据集:Stanford Sentiment Treebank (Socher et al. 2013)
下图为一个例子:
此数据集特殊的地方在于,句子中的每个单词都标有一个情感值,介于1到25之间,1表示最负面,25表示最正面。可以用此数据集来进行句子的情感分类。
2、释义识别(Paraphrase Identification)
2.1 任务:识别两个句子意思是否相同。
2.2 数据集:Microsoft Research Paraphrase Corpus (Dolan and Brockett 2005)
生成步骤:
(1)爬取大量新闻语料
(2)用启发式方法或分类器自动判别语句是否意思相同
(3)由评价者来判定两个句子是否真的相似
由于该数据集需要人工评测,所以数据量比较小但十分高质量。
2.3 模型:将两个句子的向量表示输入分类器,输出意思是否相同。
这里介绍一个可以用来做释义识别的句子表示模型:Skip-thought Vectors(Kiros et al. 2015) NIPS
这个模型训练时的输入是文档中的第i个句子,输出是第i-1个句子和第i+1个句子,例如下图:
这三句话的顺序是,I got back home. I could see the cat on the steps. This was strange.从训练的文本中取出类似这样的连续的三个句子,将中间的句子作为输入,前一个和后一个句子作为正确的输出来训练模型。模型使用的是encoder-decoder框架,并且用了RNN中的GRU来作为encoder和decoder。
Encoder的输入是第i个句子中单词的向量序列 ,GRU的重置门、遗忘门、候选隐藏层和隐藏层的公式如下:
最后时刻输出的隐藏层 将作为encoder的输出,也是第i个句子的单一向量表示,同时将其作为decoder的输入,decoder的重置门、遗忘门、候选隐藏层和隐藏层的公式如下:
与encoder的公式类似,不同的是多了 ,
和
,分别用来分离出
中重置门、遗忘门、候选隐藏层的部分。每一时刻t的隐藏层
将作为decoder的输出。第i+1个句子的概率模型由以下公式给出:
其中 是单词矩阵V中
所对应的行,由这条公式即可生成第i+1个句子。生成第i-1个句子的方法同理。
目标函数是第i+1个句子和第i-1个句子概率模型的对数似然的和:
3、语义相似度(Semantic Similarity)
3.1 任务:衡量两个句子的语义相似/相关程度。
3.2 数据集:SICK Dataset (Marelli et al. 2014)
生成句子的过程:
(1)收集短的视频描述句子
(2)将句子进行主动态与被动态的转化、同义词替换等变化方式,生成新的句子
(3)将句子加入否定词或者进行反义词替换,生成反义句子
(4)打乱单词顺序生成新句子
最后人工测量这些句子的语义相关性,并用1-5进行打分。
3.3 评价过程:将两个句子输入模型计算相关度,并测量其与人工评测分数的相关性(例如Pearson相关系数)。
3.4 模型:ManhattanLSTM Model (Mueller and Thyagarajan 2016)
该模型将两个句子a和b的单词向量序列分别输入两个LSTM模型,输出分别是他们最后时刻的隐藏状态 和
,n和m分别是两个句子的长度,作差后取e^-L1作为相似度指标,如下图所示:
由于向量的L1范数是大于等于零的,所以该模型的相似度指标范围是0到1
4、文本蕴涵(Textual Entailment)
4.1 任务:文本蕴涵指的是两个文本之间有指向关系,关系分为以下三种:
Entailment:文本A为真,能推出文本B也为真
Contradiction:文本A为真,能推出文本B为假
Neutral:文本A为真不能推出文本B的真假
4.2 数据集:Stanford Natural Language Inference Dataset (Bowman et al. 2015)
生成数据步骤:
(1)取Flickr的标题作为初始数据
(2)对每个标题都分别创建它的entailed, neutral, contradicted标题
(3)人工对两两标题进行关系的评判
5、信息检索(Retrieval)
5.1 任务:给定一个输入句子,从大量数据中找出与之匹配的信息。
主要思想是,先将目标数据库中的文本编码成向量,然后将query也编码成向量,寻找数据库中与query距离最近的向量。
信息检索经常遇到的一个问题是数据库中数据量太大,导致训练太慢,所以可以只选取数据库中很小的一部分作为负样来进行负采样。
损失函数:
其中 是正例的输入,
是正例的输出,S是负例样本。
是负例所得的分数,
是正例所得的分数,意思是若正例的分数比负例大于1则损失函数为0,否则会产生损失。
5.2 评价指标:
常用的评价指标有召回率和精确率。
召回率(Recall):
精确率(Precision):
由此衍生的评价指标还有:
recall@X:检索的前X个结果中是否有正确答案
MAP(mean average precision):所有queries的平均精确率
三、总结与Q&A
本文首先简要介绍了文本表示的两类方法,一类是将一个句子表示为一个向量,另一类是将一个句子表示为多个向量的序列。然后介绍了五个文本表示的应用,分别是句子分类、释义识别、语义相似度、文本蕴涵和信息检索。
下面与大家分享几个相关问答。
1、与传统句子分类方法相比,CNN的优势是什么?
答:传统的句子分类是使用SVM和Naive Bayes,它们选择的文本表示方法大多是词袋模型,会忽略词序信息。CNN用的是word-embedding来表示句子,可以保留词的序列特征。
2、本文介绍的用于Paraphrase Identification的模型skip-thought vectors的框架是什么?
答:框架是encoder-decoder模型,其中encoder和decoder都用RNN中的GRU来实现。
3、skip-thought vectors中encoder和decoder的输入输出分别是什么?
答:encoder的输入是第i个句子中单词的向量序列 ,输出是最后时刻的隐藏状态
。decoder的输入是encoder的输出
,输出是每一时刻t的隐藏状态
,用来生成句子的概率模型。
4、Manhattan LSTM Model的相似函数是什么?
答:e^-L1,即
5、本文介绍的检索评价指标有哪些?
答:召回率(Recall):
精确率(Precision):
recall@X和MAP(mean average precision)
四、参考文献
papers.nips.cc/paper/5950-… (Skip-thought Vectors)
nlp.stanford.edu/sentiment/t… (Sentiment Treebank)
www.aaai.org/ocs/index.p… (Manhattan LSTM)
nlp.stanford.edu/pubs/snli_p… (Stanford Natural Language Inference Corpus)
本文转载自: 掘金