1. 介紹
為了有效處理文字,必須將其以數字形式表示,這樣電腦才能分析文件的內容。創建適當的文字表示對於從機器學習算法中獲得良好結果至關重要。傳統的文字表示方法將文件視為高維空間中的點,每個軸對應於詞彙中的一個單詞。在這個模型中,文件被表示為向量,係數表示文本中每個單詞的頻率(例如,使用TF-IDF在向量空間模型 (VSM) 中)。
但這種方法的局限在於無法捕捉單詞的語義。在VSM中使用基於單詞的表示時,我們無法區分同義詞(意思相似但形式不同的單詞)和同形異義詞(形式相同但意思不同的單詞)。例如,“車”和“汽車”在單詞空間中可能被視為完全不同的實體,儘管它們具有相同的意思。這種信息可以通過外部數據庫提供給自然語言處理系統。一個很好的例子是WordNet字典,它以語義網絡的形式組織,包含描述具有相同意思的單詞組的關係。其他方法可能包括與人類的互動,這樣可以豐富向量表示的語義特徵。儘管如此,在自然語言處理的背景下,詞嵌入相較於使用語義網絡具有很大的潛力。一個優勢是它們能夠對向量執行傳統的代數運算,例如加法或乘法。
為了解決語義單詞表示的問題,提出了一種稱為詞嵌入的VSM擴展。在這個模型中,每個單詞被表示為多維空間中的一個向量,向量之間的相似性反映了單詞之間的語義相似性。像Word2Vec、GloVe、FastText等模型以無監督的方式學習單詞表示。訓練基於單詞在文本語料庫中出現的上下文,這樣可以捕捉到它們之間的一些基本關係。在我們的研究中,我們將這些嵌入稱為原始嵌入(OE),並在實驗中使用GloVe向量。
使用基於向量的表示,幾何運算成為可能,從而實現基本的語義推理。一個經典的例子是Tomas Mikolov提出的運算:王-男人 + 女人 = 皇后,這展示了向量如何捕捉單詞之間的層次關係。這些運算增強了語言依賴性的建模,使得更高級的任務如機器翻譯、語義搜索和情感分析成為可能。
我們的研究旨在探索創建語義詞嵌入的方法,即承載準確意義並強烈參考WordNet的嵌入。我們提出了基於半監督技術構建改進詞嵌入的方法。在我們的實驗中,我們將這些嵌入稱為神經嵌入(NE)。在應用對齊後,我們稱它們為微調嵌入(FE)。我們的方法擴展了之前提出的方法,修改詞向量,使得對它們的幾何運算對應於基本的語義關係。我們稱這種方法為幾何嵌入(GE)。
我們的方法生成的詞嵌入已經在文本分類、聚類和嵌入表示空間中的類別分佈分析方面進行了評估。
本文的其餘部分組織如下:第二部分描述了創建詞嵌入的各種方法,包括監督和無監督。第三部分介紹我們的方法,包括數據集、預處理方法和創建語義詞嵌入所使用的技術,以及評估方法。第四部分呈現實驗結果。第五部分簡要討論整體發現,隨後第六部分概述潛在應用和未來研究方向。
2. 相關工作
詞嵌入,也稱為分佈式詞表示,通常使用無監督方法創建。它們的受歡迎程度源於訓練過程的簡單性,因為只需要大量的文本語料庫。嵌入向量首先從稀疏表示構建,然後映射到較低維度的空間,生成對應於特定單詞的向量。為了提供我們研究的背景,我們簡要描述了構建詞嵌入的最流行方法。
在Bengio等人對神經語言模型的開創性工作之後,詞嵌入的研究因計算能力的限制和算法無法有效訓練大型詞彙而停滯不前。然而,在2008年,Collobert和Weston展示了在足夠大的數據集上訓練的詞嵌入能夠捕捉語法和語義特徵,從而提高後續任務的性能。在2011年,他們介紹了基於概率模型的SENNA嵌入,這允許創建詞向量。每次訓練迭代中,通過組合所有n-gram的嵌入來使用n-gram。然後,模型通過用詞彙中的隨機單詞替換中間單詞來修改n-gram。它被訓練以識別完整的n-gram比修改過的(破損的)n-gram更有意義,使用了一個鉸鏈損失函數。不久之後,Turian等人複製了這種方法,但不是替換中間單詞,而是替換最後一個單詞,取得了稍微更好的結果。
這些嵌入已在多個自然語言處理任務中進行測試,包括命名實體識別(NER)、詞性標註(POS)、分塊(CHK)、句法解析(PSG)和語義角色標註(SRL)。這種方法在許多任務中顯示出改進,並且計算效率高,只使用200 MB的RAM。
Word2Vec是一組由Mikolov等人提出的模型,專注於單詞相似性。意思相似的單詞應該有相似的向量,而不同向量的單詞則沒有相似的意思。考慮到兩個句子“他們喜歡看電視”和“他們享受看電視”,我們可以得出結論,單詞“喜歡”和“享受”非常相似,儘管不完全相同。像one-hot編碼這樣的原始方法無法捕捉它們之間的相似性,並將它們視為不同的實體,因此“喜歡,電視”之間的距離將與“喜歡,享受”之間的距離相同。在Word2Vec的情況下,“喜歡,電視”之間的距離將大於“喜歡,享受”之間的距離。Word2Vec允許對向量執行基本的代數運算,例如加法和減法。
GloVe算法整合了單詞共現統計,以確定語料庫中單詞之間的語義關聯,這在某種程度上與Word2Vec相反,後者僅依賴於單詞中的局部特徵。GloVe實施了全局矩陣分解技術,使用矩陣編碼單詞出現的存在或缺失。Word2Vec通常被稱為神經詞嵌入,因此它是一個前饋神經網絡模型,而GloVe通常被稱為基於計數的模型,也稱為對數雙線性模型。通過分析單詞在語料庫中的共現頻率,GloVe捕捉了單詞之間的關係。共現的可能性可以編碼語義意義,這有助於提高在單詞類比問題等任務中的性能。
FastText是另一種由Joulin等人開發的方法,並進一步改進,通過引入連續跳字模型的擴展。在這種方法中,詞嵌入的概念與Word2Vec或GloVe不同,單詞是由向量表示的。相反,單詞表示基於字符n-gram的袋子,每個向量對應於單個字符n-gram。通過對應n-gram的向量進行求和,我們獲得完整的詞嵌入。
顧名思義,這種方法速度很快。此外,由於單詞表示為n-gram的總和,因此可以表示先前未添加到字典中的單詞,這提高了結果的準確性。這種方法的作者還提出了一個緊湊版本的FastText,由於量化,保持了模型準確性和內存消耗之間的適當平衡。
Peters等人引入了ELMo嵌入方法,該方法使用雙向語言模型(biLM)基於句子的完整上下文推導單詞表示。與傳統的詞嵌入不同,後者將每個標記映射到單個密集向量,ELMo通過語言模型的三層計算表示。第一層是卷積神經網絡(CNN),它根據單詞的字符生成非上下文化的單詞表示。接下來是兩層雙向長短期記憶(LSTM),它們納入整個句子的上下文。
從設計上講,ELMo是一種無監督的方法,儘管可以通過將預訓練的向量傳遞到像分類器這樣的模型中在監督設置中應用。當學習單詞的意思時,ELMo使用雙向RNN,這納入了前後的上下文。語言模型學會根據歷史預測下一個標記的可能性,輸入是一系列n個標記。
雙向編碼器表示的變壓器,通常稱為BERT,是一種基於變壓器的架構。變壓器相對較新,於2017年首次引入。這種架構不依賴於遞歸,與之前的最先進系統(如LSTM或ELMo)不同,顯著加快了訓練時間。這是因為句子是並行處理的,而不是逐字處理。自注意力這一關鍵單元也被引入以測量句子中單詞之間的相似性。與遞歸不同,創建了位置嵌入以存儲有關單詞/標記在句子中位置的信息。
BERT旨在消除解碼器的需求。它引入了掩蔽語言建模的概念,其中15%的輸入單詞隨機被掩蔽,並使用位置嵌入進行預測。由於預測掩蔽的標記僅需要句子中的周圍標記,因此不需要解碼器。這種架構設立了一個新標準,在問題回答等任務中達到了最先進的結果。然而,模型的複雜性導致收斂速度較慢。
Beringer等人提出了一種基於上下文中單義詞意義的表示方法。在這種方法中,單詞向量表示根據多義性進行調整:同義詞的向量在表示空間中被拉近,而同形異義詞的向量則被分開。這種監督的迭代優化過程導致創建的向量提供比傳統方法(如Word2Vec或GloVe)更準確的表示。
預訓練模型可以用於廣泛的應用。例如,Google的Word2Vec開發者在Google新聞的非結構化數據上訓練了他們的模型,而斯坦福團隊則使用維基百科、Twitter和網頁爬蟲的數據來訓練GloVe。與這些預訓練解決方案競爭是具有挑戰性的;相反,利用它們通常更有效。例如,Al-Khatib和El-Beltagy將預訓練向量的微調應用於情感分析和情緒檢測任務。
為了進一步利用預訓練嵌入的力量,Dingwall和Potts開發了Mittens工具,用於微調GloVe嵌入。其主要目標是使用標記或未標記的專業數據來豐富詞向量的領域特定知識。Mittens通過對新學習的嵌入和預訓練的嵌入之間的平方歐幾里得距離添加懲罰,將原始GloVe目標轉換為回饋模型。值得注意的是,Mittens將預訓練嵌入適應於領域特定的上下文,而不是明確地納入語義來構建語義詞嵌入。
3. 材料與方法
在這一部分中,我們描述了我們構建包含基本語義信息的詞嵌入的方法。我們首先詳細介紹了在實驗中使用的專用數據集。接下來,我們解釋我們的方法,該方法修改了用預訓練嵌入初始化的神經網絡的隱藏層。然後,我們描述基於向量位移的微調過程。最後一小節概述了評估所提方法所使用的方法論。
3.1. 數據集
在我們的實驗中,我們構建了一個自定義數據集,包含四個類別:動物、餐點、交通工具和科技。每個類別包含六到七個關鍵詞,共25個單詞。
我們還從各種在線來源(包括大多數英語詞典)收集了每個關鍵詞250個句子(共6250個)。這些句子中最多只包含一次指定的關鍵詞。
定義每個類別的單詞是選擇的,這樣類別之間的邊界就模糊。例如,交通工具和科技類別,或餐點和動物類別,在某種程度上是重疊的。此外,還選擇了一些可能屬於多個類別的關鍵詞,但故意將其分組到一個類別中。例如,單詞“魚”可以指食物和動物。這是故意進行的,以使文本分類變得更加困難,並突顯我們的詞嵌入旨在解決的貢獻。
為了準備和轉換原始數據為有用的格式,預處理對於開發或修改詞嵌入至關重要。為此,我們採取了以下步驟:
1.
將所有字母改為小寫;
2.
移除所有非字母字符(標點符號、符號和數字);
3.
移除不必要的空白字符:重複的空格、制表符或句子開頭的空格;
4.
使用Gensim庫中的函數移除選定的停用詞:冠詞、代詞和其他不會對嵌入創建有益的單詞;
5.
進行分詞,即將句子分割成單詞(標記);
6.
進行詞形還原,將單詞的變化形式轉換為共同形式,使其可以被視為同一單詞。例如,單詞“貓”將轉換為“貓”,而“去”將轉換為“去”。
3.2. 語義詞嵌入創建方法
在這一部分中,我們詳細描述了改進詞嵌入的方法。這個過程包括三個步驟:訓練神經網絡以獲得嵌入層、調整嵌入以及移動嵌入以納入特定的幾何特性。
3.2.1. 嵌入層訓練
為了在神經網絡中構建詞嵌入,我們使用一個隱藏層,初始權重設置為預訓練嵌入。在我們的測試中,層數較少的架構表現最佳,這可能是因為初始層中的梯度較小。隨著層數的增加,初始層在反向傳播過程中更新的效果較差,導致嵌入層變化過慢,無法產生強語義相關的詞嵌入。因此,我們在最終實驗中使用了較小的網絡。
使用神經網絡層創建語義嵌入的算法如下:
1.
加載預訓練的嵌入。
2.
預處理輸入數據。
3.
分離一部分訓練數據以創建驗證集。在我們的方法中,驗證集為訓練數據的20%。
接下來,將初始詞向量與預訓練的嵌入數據結合。為此,創建了一個嵌入矩陣,其中索引為i的行對應於向量化器中索引為i的單詞的預訓練嵌入。
4.
將嵌入矩陣加載到神經網絡的嵌入層中,並將其初始化為預訓練詞嵌入的權重。
5.
創建基於神經網絡的嵌入層。
在我們的實驗中,我們測試了幾種架構。表現最佳的是一個CNN,配置如下。
6.
使用準備好的數據訓練模型。
7.
將數據映射到隱藏層權重中創建的詞嵌入中。

8.
將新創建的嵌入保存為pickle格式。
在測試了幾種網絡架構後,我們發現層數較少的模型表現最佳。這可能是因為初始層中的梯度較小。隨著層數的增加,初始層在反向傳播過程中更新的效果較差,導致嵌入層變化過慢,無法產生強語義的詞嵌入。因此,最終實驗中使用了較小的網絡,配置如下。

3.2.2. 預訓練詞嵌入的微調
這一步使用以自我監督方式創建的詞嵌入,通過微調預訓練的嵌入來進行。
訓練嵌入的整個過程包含以下步驟:
1.
加載預訓練的嵌入。該算法使用GloVe嵌入作為輸入,因此需要將嵌入轉換為字典。
2.
3.
使用GloVe機制準備單詞的共現矩陣。
4.
使用Mittens提供的函數訓練模型以微調GloVe嵌入。
5.
將新創建的嵌入保存為pickle格式。
3.2.3. 嵌入位移
這一步的目標是調整表示空間中的詞向量,使預訓練嵌入的幾何運算納入WordNet網絡的語義。為此,我們使用了Beringer等人的實現,該實現在GitHub上可用。然而,為了將代碼適應於計劃的實驗,進行了以下修改:
修改預訓練嵌入:由於Beringer等人最初使用來自SpaCy庫的嵌入作為基礎,儘管他們也使用了GloVe方法進行訓練,但他們使用的數據不同。因此,需要修改加載向量的方式。雖然SpaCy提供了專用函數來執行此任務,但必須用替代方案替換。
手動將訓練集拆分為兩個較小的集合,一個用於訓練(60%),一個用於驗證(40%),以便進行適當的超參數選擇。
調整其他特徵:Beringer等人通過將單詞的嵌入和該單詞的意義的嵌入結合起來創建嵌入,例如,單詞“樹”和它的意義“森林”,或“樹(結構)”。他們稱之為關鍵詞嵌入。在本論文進行的實驗中,單詞的嵌入和類別的嵌入結合在一起,例如“貓”和“動物”,或“飛機(科技)”。以這種方式創建的嵌入稱為關鍵詞-類別嵌入。關鍵詞嵌入用於描述包含在類別中的任何單詞,例如“貓”、“狗”等。類別嵌入描述特定類別單詞的嵌入,即“動物”、“餐點”、“科技”或“交通工具”。
添加超參數選擇優化:
最後,為了清楚起見,算法設計如下:
1.
上傳或重新創建未優化的關鍵詞-類別嵌入。對於數據集中每個關鍵詞及其相應的類別,我們創建了一個嵌入,如公式(1)所示,包括樣本對象和類別項:
2.
加載和預處理用於訓練模型的文本。
3.
對於每個時期:
3.1.
對於訓練集中的每個句子:
3.1.1.
計算上下文嵌入。上下文本身是圍繞關鍵詞的單詞集,以及關鍵詞本身。我們通過平均組成該上下文的所有單詞的嵌入來創建上下文嵌入。
3.1.2.
測量計算出的上下文嵌入與所有類別嵌入之間的餘弦距離。這樣,我們選擇最近的類別嵌入,並檢查它是正確匹配還是錯誤匹配。
3.1.3.
更新關鍵詞-類別嵌入。如果選擇的類別嵌入被證明是正確的,算法將關鍵詞-類別嵌入移向上下文嵌入。如果不是,算法將關鍵詞-類別嵌入遠離上下文嵌入。α和β系數決定我們操作向量的程度。
4.
將新修改的關鍵詞-類別嵌入保存為pickle格式。pickle模塊是一種序列化和反序列化對象的方法,由Python編程語言開發。
在驗證集上的top-k準確性被用作評估嵌入質量的指標,以選擇適當的超參數和選擇最佳嵌入。這是一個指標,用於確定正確類別是否在前k個類別中,其中輸入數據是來自驗證集的上下文嵌入。由於類別數量較少(總共4個),因此決定使用top-1準確性來評估嵌入質量。最終,隨機搜索產生了最佳超參數。
3.3. 語義詞嵌入評估
我們使用兩個應用程序對我們構建詞嵌入的方法進行了評估。我們測試了它們如何影響分類質量,並測量了它們的分佈並使用PCA投影繪製它們。我們還評估了引入嵌入如何影響數據的無監督處理。
3.3.1. 文本分類
對新創建的語義詞嵌入的第一個測試是基於從句子中預測類別。這可以通過多種方式進行,例如,使用嵌入作為深度神經網絡中的一層。然而,最初,最好先測試嵌入本身的能力,而不進一步訓練新的架構。因此,我們使用了一種基於測量嵌入之間距離的方法。在這種情況下,我們的方法包括以下步驟:
1.
對於訓練集中的每個句子:
1.1.
預處理句子。
1.2.
將句子中的單詞轉換為詞嵌入。
1.3.
計算句子中所有嵌入的平均嵌入。
1.4.
計算平均句子嵌入與所有類別嵌入之間的餘弦距離,根據公式(2):
其中𝑒̲e¯是平均句子嵌入,而c是類別嵌入。
1.5.
通過選擇距離句子嵌入最近的類別嵌入來選擇分配的類別。
2.
計算準確率,根據公式(3):
此外,在現代研究中,通常使用加權嵌入來提高預測質量。潛在語義分析使用考慮到術語出現頻率的術語-文檔矩陣。這是通過使用TF-IDF加權方案來實現的,該方案用於通過術語在文檔中的出現頻率來測量術語的重要性。
為了充分發揮詞嵌入在分類中的潛力,將它們與與DNN不同的單獨分類模型結合是有益的。我們選擇了KNN和隨機森林,這些都是非神經分類器,以避免將任何偏見引入結果。應注意的是,對於嵌入的評估,可以使用任何其他分類器。
3.3.2. 可分性和空間分佈
為了測量語義詞嵌入的質量,我們通過進行兩個測試檢查了它們的空間分佈。第一個是實證測試,旨在降低嵌入的維度,並使用主成分分析(PCA)方法在二維空間中可視化它們,該方法將多變量數據轉換為較少的代表性變量,同時儘可能保留準確性。換句話說,目標是在表示的簡單性和準確性之間達成權衡。
在考慮語義詞嵌入的質量時,我們計算了相關指標,這些指標證明了類別的可分性,以及向量在空間中的正確分佈。為此,我們使用了所有關鍵詞到其相應類別詞的平均距離。檢查這些距離的目的是測試給定類別中關鍵詞的平均嵌入是否產生接近類別向量的向量,根據公式(4),樣本對象來自相同的語義類別。