2017年发表的论文 提出利用n-grams来学习句子表示模型Sent2Vec,是word2vec模型中CBOW形式的扩展:不仅仅使用窗口中的词(uni-gram)来预测目标词,而是使用窗口中所有的n-grams来预测目标词(uni-gram)。为了得到句子向量,将句子看成一个完整的窗口,模型的输入为句子中的n-grams,目标是预测句子中的missing word(目标词),而句子向量是所有n-grams向量表示的平均。本文的模型与论文Enriching word vectors with subword information(FastText)很类似,主要区别有两点,其一是本文的模型输入是词级别的n-grams序列而FastText是字符级别的n-grams序列,其二是本文最终的表示是对输入的n-grams embedding进行平均而FastText是相加。代码开源在https://github.com/epfml/sent2vec
3.7 Quick-Thought vectors2018年发表的论文提出了一种简单且有效的框架用于学习句子表示。和常规的编码解码类模型(如和)不同的是,本文采用一种分类器的方式学习句子表示。具体地,模型的输入为一个句子\(s\)以及一个候选句子集合\(S_{cand}\),其中\(S_{cand}\)包含一个句子\(s_{ctxt}\)是\(s\)的上下文句子(也就是\(s\)的前一个句子或后一个句子)以及其他不是\(s\)上下文的句子。模型通过对\(s\)以及\(S_{cand}\)中的每个句子进行编码,然后输入到一个分类器中,让分类器选出\(S_{cand}\)中的哪个句子是\(s_{ctxt}\)。实验设置候选句子集合大小为3,即\(S_{cand}\)包含1个上下文句子和两个无关句子。模型结构如下:
模型有如下两个细节需要注意:
模型使用的分类器(得分函数)\(c\)非常简单,是两个向量内积,即\(c(u, v)=u^Tv\),计算\(s\)的embedding与所有\(S_{cand}\)中的句子向量内积得分后,输入到softmax层进行分类。使用简单分类器是为了引导模型着重训练句子编码器,因为我们的目的是为了得到好的句子向量表示而不是好的分类器。
虽然某些监督任务模型如文本蕴含模型是参数共享的,\(s\)的编码器参数和候选句子编码器参数是不同的(不共享),因为句子表示学习往往是在大规模语料上进行训练,不必担心参数学习不充分的问题。测试时,给定待编码句子\(s\),通过该模型得到的句子表示是两种编码器的连结 \([ f ( s ) ;g ( s ) ]\)。
论文将上述模型命名为quick thoughts(QT),意味着该模型能够迅速有效地学习句子表示向量。模型使用GRU作为Encoder,为了和Skip-Tought模型进行比较,模型包含三种变体,使用单向GRU称为uni-QT,双向GRU称为bi-QT,将uni-QT和bi-QT生成的sentence embedding进行concat称为combine-QT。此外,论文将同时使用预训练词向量和随机初始化词向量的模型称为MultiChannel-QT(MC-QT),这种设置是参照。
论文通过多个句子分类任务证明QT模型了的优越性:
相较于其他无监督句子表示学习方法,QT在训练时间较少的情况下(相较于Skip-Thought、SDAE),能够达到非常不错的效果,在大多数数据集上的效果都是最好的。
与监督句子表示学习方法(如InferSent等)对比,QT(MC-QT)同样能够在大多数数据集上取得最优效果。
与专门用于句子分类任务模型(如CNN)对比,QT使用ensemble,考虑模型类型(单向/双向),词向量(随机/预训练)以及数据集(BookCorpus/UMBC )三个方面进行训练不同的模型进行集成,也取得了有竞争力的效果。
论文还通过image-sentence ranking和nearest neighbors两个实验来为QT有效性提供依据。代码开源在https://github.com/lajanugen/S2V
4. 总结词向量的平均或加权平均是一个简单有效的baseline,基于SIF词向量加权平均的在一些任务上甚至比复杂模型的效果好。
Paragraph Vector模型足够简单,并且能够编码文档级文本,但是对于sentence embedding,其效果相较于其他方法不具竞争力。
Skip-Thought,FastSent和Quick-Thought都是基于句子连贯性设计任务:
基于encoder-decoder的Skip-Thought模型最复杂,在监督类型评测上比FastSent模型效果好,但在非监督类型评测上,FastSent要好于Skip-Thought。
Quick-Thought作为一个最新的模型,其复杂度介于FastSent和Skip-Thought之间,但在大多数任务上的效果比其他两个模型都好。
相较于Skip-Thought,FastSent和Quick-Thought,SDAE模型与利用n-grams的Sent2Vec模型的优点是只需要输入单个句子。此外,Sent2Vec模型效果比SDAE模型好一些。