1、无监督,不使用额外标注数据
average word vectors
:简单对句子中的所有词向量取平均,是一种简单有效的方法
- 缺点:没有考虑到单词的顺序,对15个字以内的短句子比较有效,丢掉了词与词间的相关意思,无法更精细的表达句子与句子之间的关系。
tfidf-weighting word vectors
:对句子中的所有词向量根据TF-IDF
权重加权求和,是常用的一种计算sentence embedding
的方法,在某些问题上表现很好,相比于简单的对所有词向量求平均,考虑到了TFIDF
权重,因此句子中更重要的词占得比重就更大。
- 缺点:没有考虑单词的顺序
bag of words
:词袋,这种方法对于短文本效果很差,对于长文本效果一般,通常在科研中用来做baseline
- 缺点: 1. 没有考虑到单词的顺序;2. 忽略了单词的语义信息
-
LDA
- 以
smooth inverse frequency
1 简称SIF
为权重,对所有词的word vector加权平均,最后从中减掉principal component
,得到sentence embedding
[1] Sanjeev Arora, et al. 2017. A Simple but Tough-to-Beat Baseline for Sentence Embeddings -
Word Mover's Distance
2简称WMD
,基于词移距离度量句子之间的相似度。
[2] Matt J. Kusner, et al. 2015. From Word Embeddings To Document Distances -
LSI或LSA
:LSI是处理相似度的,基于SVD
分解,用于特征降维,LSI
求解出来的相似度跟topic相关性很强,而句子结构等信息较少。顺便说下,句子中词的顺序是不会影响LSI相似度结果的。
2、有监督,需要额外标注数据
- 分类任务,例如训练一个
CNN
的文本分类器,取最后一个hidden layer
的输出作为sentence embedding
,其实就是取分类器的前几层作为预训练的encoder
。 -
sentence pair
的等价性/等义性判定,这种方法的好处是不仅可以得到sentence embedding
,还可以直接学习到距离度量函数里的参数。
3、DSSM-LSTM
用DSSM-LSTM
计算任意一对短文本的语义相似性,能够捕捉上下文信息。
4、doc2vec(paragraph2vec, sentence embeddings)
一种非监督式算法,可以获得sentence/paragraphs/documents
的向量表达,是word2vec
的拓展。学出来的向量可以通过计算距离来找sentences/paragraphs/documents
之间的相似性,可以用于文本聚类,对于有标签的数据,还可以用监督学习的方法进行文本分类,例如经典的情感分析问题。
训练过程中新增了paragraph id
,即训练语料中每个句子都有一个唯一的id
。paragraph id 和普通的word一样,先是映射成一个向量,即paragraph vector
。paragraph vector与word vector的维数虽一样,但是来自于两个不同的向量空间。在之后的计算里,paragraph vector与word vector累加或者连接起来,作为输出层softmax的输入。在一个句子或者文档的训练过程中,paragraph id保持不变,共享同一个paragraph vector,相当于每次在预测单词的概率时,都利用了整个句子的语义。
DM(Distributed Memory,分布式内存)
:DM试图在给定前面部分的词和paragraph向量来预测后面单独的单词,即使文本中的语境在变化,但paragraph向量不会变换,并且能保存词序信息。