在自然語言處理(Natural Language Processing, NLP)中,經(jīng)常會涉及到如何度量兩個文本的相似度問題。在諸如對話系統(tǒng)(Dialog system)和信息檢索(Information retrieval)等的問題中,如何度量句子或者短語之間的相似度尤為重要。為方便對知識的梳理,寫下這篇博客對部分傳統(tǒng)方法、詞向量、深度學習方法進行總結(jié),遺漏之處還請大家補充。 度量文本相似度包括如下三種方法:一是基于關(guān)鍵詞匹配的傳統(tǒng)方法,如N-gram相似度;二是將文本映射到向量空間,再利用余弦相似度等方法;三是深度學習的方法,如基于用戶點擊數(shù)據(jù)的深度學習語義匹配模型DSSM,基于卷積神經(jīng)網(wǎng)絡(luò)的ConvNet,以及目前state-of-art的Siamese LSTM等方法。 隨著深度學習的發(fā)展,文本相似度的各種方法已經(jīng)逐漸不再是基于關(guān)鍵詞匹配的傳統(tǒng)方法,而轉(zhuǎn)向深度學習,目前結(jié)合向量表示的深度學習使用較多。 1 基于關(guān)鍵詞匹配1.1 N-gram 相似度 基于N-Gram模型定義的句子(字符串)相似度是一種模糊匹配方式,通過兩個長得很像的句子間的“差異”來衡量相似度。 N-Gram相似度的計算是指按長度N切分原句得到詞段,也就是原句中所有長度為N的子字符串。對于兩個句子S和T,則可以從共有子串的數(shù)量上去定義兩個句子的相似度。
其中,和分別表示字符串S和T中N-Gram的集合,N一般取2或3。字符串距離越近,它們就越相似,當兩個字符串完全相等時,距離為0。1.2 Jaccard 相似度 Jaccard相似度的計算相對簡單,原理也容易理解。就是計算兩個句子之間詞集合的交集和并集的比值。該值越大,表示兩個句子越相似,在涉及大規(guī)模并行運算的時候,該方法在效率上有一定的優(yōu)勢,公式如下:
其中2 基于向量空間 關(guān)于如何表達詞意目前有三種方法,第一種的代表就是WordNet,它提供了一種詞的分類資源但是缺少了詞之間的細微區(qū)別,同時它也很難計算詞之間的相似度;第二種就是Discrete representation,如One-hot representation,它的向量維度和詞典的長度相同,因此向量維度可能十分高,同時由于向量之間本身正交,無法計算詞之間的相似度;第三種就是Distributed representation,基本想法就是將每個詞映射為一個固定長度的短向量(相對于one-hot representation而言),所有這些詞構(gòu)成一個詞向量空間,每一個向量視為空間中的一個點,在這個空間引入“距離”,就可以根據(jù)詞之間的距離來判斷它們之間的相似性,代表方法如word2vec, LDA等。 2.1 Word2vec 早在2003年Bengio等人在《A neural probabilistic language model》中提出的神經(jīng)網(wǎng)絡(luò)語言模型(NNLM)就用到了重要的工具-詞向量,只是在這個模型中,目標是生成語言模型,詞向量只是一個副產(chǎn)品。 Mikolov et al. (2013)提出的word2vec核心思想是認為詞的意思可以從它頻繁出現(xiàn)的上下文信息中體現(xiàn)(A word’s meaning is given by the words that frequently appear close-by)。 Word2Vec又可分為兩種結(jié)構(gòu),一種是CBOW,利用窗口內(nèi)的上下文預(yù)測中心詞;另一種是Skip-gram,利用中心詞預(yù)測窗口內(nèi)的上下文。 以Skip-gram為例,其結(jié)構(gòu)如下: 目標函數(shù)(Object function) 下面是Skip-gram的整體框架圖,其中W為V*N維矩陣,W’為N*V維矩陣,這兩個矩陣都有V個向量,表示詞表中的每個詞都有2個向量,一個是作為中心詞的向量,一個是作為上下文時的向量,這兩個向量都是模型中的參數(shù),最終的詞向量可以將這兩個向量拼接或者直接相加。 當然這里對Word2Vec的介紹十分粗略,限于篇幅有限,很多細節(jié)和trick等無法展現(xiàn),以后單獨寫一篇介紹word2vec的博客。 2.2 TF-IDF TF-IDF的核心思想是:在一篇文章中,某個詞語的重要性與該詞語在這篇文章中出現(xiàn)的次數(shù)成正相關(guān),同時與整個語料庫中出現(xiàn)該詞語的文章數(shù)成負相關(guān). TF(term frequency):詞頻,某一個給定的詞語在該文件中出現(xiàn)的頻率,表示一個詞語與該文章的相關(guān)性。這個數(shù)字是對詞數(shù)(term count)的歸一化,以防止它偏向長的文件。 IDF(inverse document frequency):逆向文件詞頻,表示一個詞語出現(xiàn)的普遍程度。某一特定詞語的idf,可以由總文件數(shù)目除以包含該詞語之文件的數(shù)目,再將得到的商取以10為底的對數(shù)得到。 一篇文章中某個詞語的重要程度,可以標記為詞頻和逆向文件詞頻的乘積,
通過計算出文檔中每個詞的TF-IDF值,然后結(jié)合相似度計算方法(一般采用余弦相似度)就可以計算兩個文檔的相似度。采用TF-IDF的前提是“文章的詞語重要性與詞語在文章中出現(xiàn)的位置不相關(guān)”。2.3 LSA//TODO 2.4 相似度計算 相似度就是比較兩個事物的相似性。一般通過計算事物的特征之間的距離,如果距離小,那么相似度大;如果距離大,那么相似度小。 問題定義:有兩個對象X、Y,都包括N維特征,,計算X和Y的相似性。常用的方法如下: 2.4.1 歐式距離 歐氏距離是最常用的距離計算公式,衡量的是多維空間中各個點之間的絕對距離,當數(shù)據(jù)很稠密并且連續(xù)時,這是一種很好的計算方式。 因為計算是基于各維度特征的絕對數(shù)值,所以歐氏度量需要保證各維度指標在相同的刻度級別,如在KNN中需要對特征進行歸一化。
2.4.2 曼哈頓距離 曼哈頓距離也稱為城市街區(qū)距離(City Block distance)。
2.4.3 余弦相似度 余弦相似度用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。相比距離度量,余弦相似度更加注重兩個向量在方向上的差異,而非距離或長度上。
2.4.4 其他 其他的相似度計算方法包括皮爾森相關(guān)系數(shù)、一般化的閔可夫斯基距離(當p=1時為曼哈頓距離,當p=2時為歐式距離)、漢明距離等。 3 基于深度學習3.1 深度學習 隨著深度學習在圖像和語音識別中取得不錯的進展,近些年深度學習也開始應(yīng)用于自然語言處理的不同應(yīng)用中。 語義相似性匹配問題已經(jīng)逐漸從人工設(shè)計特征轉(zhuǎn)向分布式表達和神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)相結(jié)合的方式。(Recent work has moved away from hand crafted features and towards modeling with distributed representations and neural network architectures) 3.2 DSSM DSSM是一種深度學習語義匹配模型,在檢索場景下,利用用戶的點擊數(shù)據(jù)來訓練語義層次的匹配(The proposed deep structured semantic models are discriminatively trained by maximizing the conditional likelihood of the clicked documents given a query using the clickthrough data)。 DSSM利用點擊率來代替相關(guān)性,點擊數(shù)據(jù)中包含大量的用戶問句和對應(yīng)的點擊文檔,這些點擊數(shù)據(jù)將用戶的問題和匹配的文檔連接起來。 下圖就是利用DNN的DSSM結(jié)構(gòu)。DNN的輸入是用戶問句和對應(yīng)文檔的高維未歸一化向量(如圖中的500K維),DNN的輸出是一個低維的語義特征空間向量(如圖中的128維)。
上圖中的Multilayer non-linear projection采用了非線性的多層神經(jīng)網(wǎng)絡(luò),利用作為激活函數(shù),同時問句和文檔的神經(jīng)網(wǎng)絡(luò)共享參數(shù),并在DNN的輸出層利用cosine similarity計算問句和文檔之間的語義相關(guān)性。
其中和表示DNN輸出層問句和文檔的低維語義向量,然后通過softmax得到條件概率分布。 Word hashing 原始的問句或者文檔是一個高維的向量,如向量的維度可能是詞表的大小,當輸入這些高維度的向量時神經(jīng)網(wǎng)絡(luò)可能無法訓練。為了使得神經(jīng)網(wǎng)絡(luò)更好的訓練,論文提出了減少DNN輸入層向量維度的Word hashing方法,也即上圖中的word hashing層。 word hashing是一種基于字符的n-gram方法。如對good一詞,首先添加開始和結(jié)尾的標記得到#good#,然后將該詞分解為字符n-grams(如采用trigram: #go,goo,oog,od#),最后這個詞就會被這些n-grams向量表示。 一種可能存在的問題是認為不同詞的詞向量沖突(collision)。但是經(jīng)過作者的統(tǒng)計,如在500k維的one-hot編碼基礎(chǔ)上,采用字符級trigram時,向量維度可以降到30k維,且沖突率僅為0.0044%。 DSSM的訓練中,神經(jīng)網(wǎng)絡(luò)層的參數(shù)和都是通過最大化點擊數(shù)據(jù)的條件概率得到,公式如下:
其中,是softmax函數(shù)的平滑因子,是訓練中的一個經(jīng)驗值。在實際訓練中,對于每一個問句共有5個文檔對應(yīng),其中一個是點擊文檔,其余4個是隨機選擇的非點擊文檔。 文檔的相關(guān)性采用人工標注,共分為5個分數(shù)(0-4),其中4分表示最相關(guān),0分表示最不相關(guān)。 DSSM的優(yōu)點在于1.直接利用了用戶的點擊數(shù)據(jù);2. 得到的結(jié)果可以直接排序;但是缺點在于沒有利用上下文信息。 DSSM的擴展還包括CDSSM、DSSM-LSTM等,其中CDSSM在一定程度上彌補了上下文缺失的問題,結(jié)構(gòu)上將DNN替換成CNN。 DSSM-LSTM中使用LSTM記錄上下文。3.3 ConvNet ConvNet通過精心設(shè)計卷積神經(jīng)網(wǎng)絡(luò),結(jié)合不同規(guī)格的卷積神經(jīng)網(wǎng)絡(luò)的差異性度量句子的相似度。(Proposing an elaborate convolutional network variant which infers sentences similarity by integrating various difference across many convolutions at various scale) 在論文《Multi-Perspective Sentence Similarity Modeling with Convolutional Neural Networks》中,采用“Siamese”(孿生)CNN結(jié)構(gòu),分別對兩個句子建模,然后利用一個句子相似度測量層計算句子相似度,最后通過一個全連接層輸出softmax相似度得分。整體的網(wǎng)絡(luò)結(jié)構(gòu)如下所示: 可以看到,一個句子首先被轉(zhuǎn)化為嵌入矩陣(embedding matrix),然后輸入卷積-池化層(論文提出使用2種卷積方式和3種池化操作,也即論文題目“多視角”的由來)得到處理后的句子向量,為更好計算句子之間的相似度,分別對向量不同的輸出結(jié)果計算其相似性,最終將相似度向量輸入全連接層得到相似性分數(shù),與標簽值相比較。 1.卷積層 論文提出兩種卷積方式,一種是holistic filter,如上圖左上角,其尺寸為, embed_size, 1, num_filter_A],其中表示滑動窗口的寬度,取值為1,2或者無窮大(句子長度),這種卷積核考慮了窗口內(nèi)詞向量的所有維度,輸出尺寸為[sentence_len-+1,1,num_filter_A],相當于n-gram特征的提取。 第二種是pre-dimension filter,如上圖左下角,它是在embed_size的每一個維度上分別進行卷積,注意這里不是采用[,1]對整個句子進行卷積,而是使用embed_size個小卷積核分別對每一行進行卷積,也就是說如第一行的小紅框(卷積核),只對該行卷積得到右邊的一列,第二行的小紅框得到右邊的第二列,以此類推。采用該種卷積核,作者給出的解釋是有助于充分的提取特征信息,盡管作者也直說這種方式很難給出符合人直觀上的解釋。 2. 池化層 卷積層之后得到的上圖中間部分,然后通過不同的池化層,這里作者采用了三種池化層方式:max-pooling,min-pooling和mean-pooling。對卷積得到的結(jié)果直接在列的維度上取最大、最小和平均值,將卷積層的輸出減少了一個維度。對于,池化層采用三種池化操作,對于采用max,min兩種池化操作。 定義和如下: { }, { }, 3.不同的卷積窗口 對于,對應(yīng)于n-gram特征提取,的取值為1,2,無窮大(相當于句子長度,直接得到全局特征),對于,的取值為1,2。 4.相似度計算 相似度計算時,采用了兩種計算函數(shù),分別由余弦距離,L1距離和L2距離組成: 論文提到,每個句子都會經(jīng)過多個卷積-池化層(有9個,有4個),如果在計算相似度時,不考慮它們之間的對應(yīng)關(guān)系直接在最后生成的向量上計算相似度則會丟失很多有用的信息。為了使得向量局部間比較和計算有效,需要考慮幾個方面: (1)是否來自同一個building block;(2)是否來自相同卷積窗口大小下的卷積結(jié)果;(3)是否來自同一個pooling層;(4)是否來自相同的feature map。 最終比較句子中的相應(yīng)部分時,需要至少滿足以上兩個條件,為了識別句子中哪些部分需要參與相似度度計算,文中提供了兩種算法。 如下,算法1和算法2為句子表征向量的兩種計算方法,其中算法1用在上,算法2則用在和上,兩種算法都是針對相同類型的pooling和block的輸出做局部比較。 文中針對上述算法提出一個簡單的例子解釋: 從圖中可以看出,算法1對于綠色的框,其實就是每一個句子對應(yīng)每一種池化方式而言,經(jīng)過卷積層之后得到一個num_filters * 3(3指窗口的大小),也即上圖中綠色的框?qū)挾葢?yīng)該是3,縱向為num_filters。偽代碼6-9就是遍歷輸出的每一行,計算句子相似性(即max到 max),然后對每種池化方式做相同處理。因此綠色框也不止是代表第一行,下面每一行都有。 紅色框代表算法2的2-9行。同樣沒有畫全,應(yīng)該對同一池化的每個句子的和比較。 5.全連接層 基于句子的相似度計算之后,得到相應(yīng)的相似度向量;然后這組向量之后連接一個全連接層,最后softmax對應(yīng)輸出,如果是計算相似度度量值,可以用softmax輸出類別概率。 模型參數(shù): 1. 和取無窮大; 2. Word embedding,采用300維的Glove word embedding,同時在MSRP任務(wù)中也結(jié)合了POS embedding 和Paragram Vectors; 3.在MSRP時采用5-折交叉驗證的方式,對模型參數(shù)進行微調(diào),微調(diào)好的模型參數(shù)將會用在另外兩個數(shù)據(jù)集上; 4.使用tanh激活函數(shù),優(yōu)化算法采用隨機梯度下降; 5.學習率為0.01,正則化參數(shù)為0.0001 總體來看,這個模型的復雜度還是很高的,而且很多地方作者在論文中也表示都是經(jīng)驗得來的,卷積核在垂直方向的計算也沒有特別直觀的解釋,為何只采用max-pooling和min-pooling,而不采用mean-pooling等問題。 3.4 Skip-thoughts Vectors Skip-thoughts的核心思想:將Word2vec中的skip-gram方法從詞的層面擴展到句子的層面,利用seq2seq模型預(yù)測輸入語句的上下句。(Extending the skip-gram approach of word2vec from the word to sentence.This model feeds each sentences into an RNN encoder-decoder(with GRU activations)which attempts to reconstructs the immediately preceding the following sentences) 論文提到,在之前的各類監(jiān)督方法中,模型通過確定的標簽作為優(yōu)化目標更新參數(shù)雖然能取得不錯的效果,但是只能適用于不同的任務(wù)。 模型的結(jié)構(gòu)如下: 模型在一個連續(xù)的文本語料(小說)上進行訓練,通過Encoder端將詞轉(zhuǎn)化為句子向量,然后在Decoder端結(jié)合Encoder端的句子向量生成上下文語句。 Decoder端和Encoder端都采用了GRU,因為GRU不僅在序列模型任務(wù)上和LSTM表現(xiàn)一樣好,而且在概念理解和計算上都要比LSTM簡單。 Decoder端是一個基于Encoder端輸出的神經(jīng)網(wǎng)絡(luò)語言模型(NNLM),其中一個Decoder用來生成下一個句子,另一個Decoder用于生成上一個句子。 對于一個句子組,優(yōu)化的目標函數(shù)是上下句的對數(shù)似然之和,整個訓練集上的目標函數(shù)就是對所有的句子組加和。 對于這樣一個模型,最大的問題在于如何把有限的詞擴展到任意的詞或句。論文中采用的方法是學習一種映射,將一個模型中的詞表示映射到另外一個模型中。具體的操作是把CBOW中預(yù)訓練得到的詞向量映射到Encoder端的詞空間。最終將詞匯量擴展到1百萬詞。 訓練好的Skip-thoughs模型,會把Encoder端作為特征提取器,對所有的句子提取Skip-thoughs向量,得到的這些向量表示可以用在不同的任務(wù)中,如語義相似度計算。 3.5 Tree-LSTM Tree -LSTM的核心思想:將對語序敏感的標準LSTM序列推廣為樹狀結(jié)構(gòu)的網(wǎng)絡(luò)拓撲圖。(Generalizing the order-sensitive chain-structure of standard LSTMs to tree-structure network topologies) 標準的LSTM僅僅考慮了句子的序列信息,但是在自然語言中句法結(jié)構(gòu)能夠自然的將詞結(jié)合成短語或句子,因此作者在論文中提出了兩種利用句法結(jié)構(gòu)信息的LSTM擴展結(jié)構(gòu):The Child-Sum Tree-LSTM和N-arr Tree-LSTM。 和標準的LSTM結(jié)構(gòu)一樣,每個Tree-LSTM(記為)單元也包括輸入門和輸出門,記憶單元和隱藏狀態(tài)。不同點是,Tree-LSTM的各個門向量(gate vector)和記憶單元(memory cell)的更新依賴于其子單元的可能狀態(tài),此外,Tree-LSTM的每個子單元都有一個遺忘門,這使得Tree-LSTM能選擇性的合并子單元的信息。 正如標準的LSTM,每個Tree-LSTM單元都有一個輸入向量,每個是句子中詞的向量表示。 Child-Sum Tree-LSTMs 對于一棵結(jié)構(gòu)樹,假設(shè)代表節(jié)點的子節(jié)點集合。 在上述公式中,我們可以將參數(shù)矩陣理解為Tree-LSTM單元和輸入及子節(jié)點的隱藏層狀態(tài)的向量相關(guān)性。如在依存句法分析樹中,當輸入的詞在語義上相對重要時,模型可以學習到參數(shù)矩陣W^{(i)}使得輸入門的值接近1(即“打開”);當輸入的是相對不重要的詞時,輸入門的值接近0(即“關(guān)閉”)。 當Child-Sum Tree-LSTM應(yīng)用到依存句法分析時,稱為Dependency Tree-LSTM。 N-arr Tree-LSTMs 在N-arr Tree-LSTMs樹結(jié)構(gòu)中,子節(jié)點的個數(shù)最多可以是N個,并且子節(jié)點是有序的。 對于每個結(jié)點,記其第個子節(jié)點的隱藏狀態(tài)和記憶單元分別為和,則N-arr Tree-LSTMs結(jié)構(gòu)如下: 在N-ary Tree LSTM結(jié)構(gòu)中,每個子節(jié)點都有獨立的參數(shù)矩陣,這使得N-ary Tree LSTM比Child-Sum Tree-LSTM能更好的從其子節(jié)點學習到一些細節(jié)。 Constituency Tree-LSTM可以看做是N-ary Tree-LSTM在N為2的特例。 論文中提到基于Tree-LSTM結(jié)構(gòu)的兩種模型,一種是Tree-LSTM Classification,另一種是Semantic Relatedness of Sentence Pairs。 (1)Tree-LSTM Classification 對樹中結(jié)點分類時,結(jié)合該結(jié)點的子樹使用softamx分類器進行預(yù)測,分類器采用結(jié)點的隱狀態(tài)作為輸入: 損失函數(shù)采用負的對數(shù)似然損失函數(shù),并且利用L2正則化。其中是訓練集的樣本數(shù)量,上標表示第k個標簽結(jié)點,是L2正則化參數(shù)。 (2)Semantic Relatedness of Sentence Pairs 在語義相似度計算中,首先把經(jīng)過Tree-LSTM模型后的句子對表示為和,接著結(jié)合句子對的距離和角度,利用神經(jīng)網(wǎng)絡(luò)來預(yù)測相似度得分。 其中,和絕對值函數(shù)都是基于單個值運算,其中,距離度量方法和都是基于實際經(jīng)驗,兩者結(jié)合時會比單個度量方式更好。 在進行預(yù)測時,為了歸一化輸出值,定義如下分布p,滿足: 其中,。損失函數(shù)采用帶正則化項的KL散度,優(yōu)化目標是讓標簽值和預(yù)測值更接近,表示訓練句子對的數(shù)量,上標表示第k個句子對。 對于Dependency Tree-LSTM模型,最大的問題在于訓練數(shù)據(jù)的收集十分困難并且句法分析結(jié)果也不是在所有語言中都有。 3.6 Siamese LSTM/Manhattan LSTM/MaLSTM Siamese LSTM之前簡要介紹一下Siamese Network。Siamese Network用來度量數(shù)據(jù)之間的相似性,兩組數(shù)據(jù)(文本,圖像等)同時輸入到一個神經(jīng)網(wǎng)絡(luò)中,并經(jīng)由這個神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)化為N*1維的向量,此后會通過一個數(shù)值函數(shù)(如余弦相似度)計算這兩個向量的距離,通過得到的距離來度量原始輸入數(shù)據(jù)的相似性。 在標準的Siamese Network中,兩側(cè)的神經(jīng)網(wǎng)絡(luò)需要使用相同的網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù);同時在進行梯度更新前,需要先對兩側(cè)的梯度平均;兩個輸出向量需要滿足相似或者不相似的關(guān)系。 Siamese LSTM The model is applied to access for semantic similarity between sentences,a siamese adaptation of the LSTM network for labeled data comparised of pairs of variable-length sequences. Siamese LSTM結(jié)構(gòu)大體與Siamese Network相似,其網(wǎng)絡(luò)結(jié)構(gòu)如下所示: 模型的輸入:首先對句子分詞,然后將詞轉(zhuǎn)化為預(yù)先訓練好的Word2vec向量,并按序列輸入網(wǎng)絡(luò)。(按論文的意思,模型的Word2vec是利用外部數(shù)據(jù)語料訓練的,并且詞向量維度為300維) 模型的輸出:輸入句子對的相似度分數(shù)。由于模型采用打分函數(shù)且x是輸出向量差的1向量范數(shù),因此輸出的得分區(qū)間為[0,1]。所以在具體的實現(xiàn)時候,對模型的輸出進行轉(zhuǎn)換,將得分區(qū)間轉(zhuǎn)化為[1,5]之間。(論文采用SICK數(shù)據(jù)集,句子對的相似度得分在[1,5]之間,由10個不同的人標注) 上述模型中,和分別是兩個LSTM模型的最后隱藏層狀態(tài),得到的向量作為特征空間中句子的embedding,隨后在特征空間中計算向量相似度,以此來推斷句子對的語義相似度。根據(jù)作者的意思,這兩個LSTM可以是共享參數(shù)的,也可以是不共享參數(shù)的。 模型的損失函數(shù)采用MSE(均方損失函數(shù)),優(yōu)化算法采用Adelta,為防止訓練中梯度爆炸,采用gradient clipping。 關(guān)于該模型有兩點值得注意: 1.LSTM,在Siamese Network中采用孿生LSTM,是因為LSTM能夠解決RNN的長期依賴問題,通過使用記憶單元(memory cell),LSTM能夠儲存更長輸入序列的信息。當然對于特別長的句子而言,標準的LSTM能力也是有限的,對于長度超過30的長句子,通過模型得到的最終隱藏層狀態(tài),占據(jù)比重較大的還是后面的詞,前面的詞基本消失,因此需要Attention。 2. Manhattan Similarity。在度量相似性的時候,采用了曼哈頓距離而不是歐式距離,根據(jù)論文和博客 的觀點,一方面用Word2vec訓練出來的詞,存在大量歐式距離相等的情況,如果用L2范數(shù)去衡量,存在語義丟失的情況,而cosine similarity適合度量向量維度特別大的情況,因此采用Manhattan距離最合適;另一方面,采用L2范數(shù)會存在梯度消失的問題,在訓練的早期,L2范數(shù)會錯誤的認為兩個語義不相關(guān)的句子相似因為采用歐式距離時的梯度消失問題(This is because during early stages of training,a L2-based model is unable to correct errors where it erroneously believes semantically different sentence to be nearly identical due to vanishing gradients of the Euclidean distance)。 3.7 Others//TODO 4 參考文獻NLP點滴——文本相似度 常用的相似度計算方法原理及實現(xiàn) 基于Simase_LSTM的計算中文句子相似度經(jīng)驗總結(jié)與分享 原創(chuàng):Siamese LSTM解決句子相似度以及擴展(理論篇) 論文《Leaning Deep Structured Semantic Models for Web Search using Clickthrough Data》 論文《Siamese Recurrent Architecture for learning Sentence Similarity》 CNN在句子相似性建模的應(yīng)用–模型介紹篇 論文《Multi-Perspective Sentence Similarity Modeling with Convolutional Neural Networks》 卷積神經(jīng)網(wǎng)絡(luò)(CNN)在句子建模上的應(yīng)用 《Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks》閱讀筆記 論文《Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks》 基于TreeLSTM的情感分析 論文《Skip-Thought Vectors》 cips2016+學習筆記︱簡述常見的語言表示模型(詞嵌入、句表示、篇章表示)
|