文本表示的应用与评价

前言:本文是对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个句子中单词的向量序列 w_{i}^{1},...,w_{i}^{N} ,GRU的重置门、遗忘门、候选隐藏层和隐藏层的公式如下:


最后时刻输出的隐藏层 h_{i} 将作为encoder的输出,也是第i个句子的单一向量表示,同时将其作为decoder的输入,decoder的重置门、遗忘门、候选隐藏层和隐藏层的公式如下:


与encoder的公式类似,不同的是多了 C_{r}C_{z}C ,分别用来分离出 h_{i} 中重置门、遗忘门、候选隐藏层的部分。每一时刻t的隐藏层 h_{i+1}^{t} 将作为decoder的输出。第i+1个句子的概率模型由以下公式给出:


其中 v_{w_{i+1}^{t}} 是单词矩阵V中 w_{i+1}^{t} 所对应的行,由这条公式即可生成第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模型,输出分别是他们最后时刻的隐藏状态 h_{n}^{a}h_{m}^{b} ,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距离最近的向量。


信息检索经常遇到的一个问题是数据库中数据量太大,导致训练太慢,所以可以只选取数据库中很小的一部分作为负样来进行负采样。

损失函数:


其中 x^{*} 是正例的输入, y^{*} 是正例的输出,S是负例样本。 s(x,y^{*}) 是负例所得的分数, s(x^{*},y^{*}) 是正例所得的分数,意思是若正例的分数比负例大于1则损失函数为0,否则会产生损失。

5.2 评价指标:

常用的评价指标有召回率和精确率。


召回率(Recall): R=\frac{TP}{TP+FN}

精确率(Precision): R=\frac{TP}{TP+FP}

由此衍生的评价指标还有:

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个句子中单词的向量序列 w_{i}^{1},...,w_{i}^{N} ,输出是最后时刻的隐藏状态 h_{i} 。decoder的输入是encoder的输出 h_{i} ,输出是每一时刻t的隐藏状态 h_{i+1}^{t} ,用来生成句子的概率模型。

4、Manhattan LSTM Model的相似函数是什么?

答:e^-L1,即


5、本文介绍的检索评价指标有哪些?

答:召回率(Recall): R=\frac{TP}{TP+FN}

精确率(Precision): R=\frac{TP}{TP+FP}

recall@X和MAP(mean average precision)

四、参考文献

Neural Networks for NLP

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)

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%