方法1:無監督,不使用額外的標注數據
-
average word vectors:簡單的對句子中的所有詞向量取平均,是一種簡單有效的方法,
缺點:沒有考慮到單詞的順序,只對15個字以內的短句子比較有效,丟掉了詞與詞間的相關意思,無法更精細的表達句子與句子之間的關系。
-
tfidf-weighting word vectors:指對句子中的所有詞向量根據tfidf權重加權求和,是常用的一種計算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的文本分類器[3],取最后一個hidden layer的輸出作為sentence embedding,其實就是取分類器的前幾層作為預訓練的encoder
[3] Yoon Kim. 2014. Convolutional Neural Networks for Sentence Classification
-
sentence pair的等價性/等義性判定[4],這種方法的好處是不僅可以得到sentence embedding,還可以直接學習到距離度量函數里的參數
[4] Jonas Mueller, et al. 2016. Siamese Recurrent Architectures for Learning Sentence Similarity
方法3:DSSM-LSTM,2016年提出
用DSSM-LSTM計算任意一對短文本的語義相似性,能夠捕捉上下文信息。
方法4:doc2vec(paragraph2vec, sentence embeddings),2014年提出
一種非監督式算法,可以獲得 sentences/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向量不會變換,並且能保存詞序信息。
分布式詞袋(DBOW):利用paragraph來預測段落中一組隨機的詞.
sentence2vec相對於word2vec的skip-gram模型,區別點為:在sentence2vec里,輸入都是paragraph vector,輸出是該paragraph中隨機抽樣的詞。
參考文獻:
【1】doc2vec原理及實踐
【2】句子和文檔的分布式表示