1. 介紹
為了有效處理文本,我們需要將其轉換為數字形式,這樣電腦才能分析文件的內容。創建文本的適當表示對於從機器學習算法中獲得良好結果是非常重要的。傳統的文本表示方法將文件視為高維空間中的點,每個軸對應於詞彙中的一個單詞。在這個模型中,文件被表示為向量,係數表示文本中每個單詞的頻率(例如,使用TF-IDF在向量空間模型 (VSM) 中)。
但這種方法的局限在於無法捕捉單詞的語義。在使用基於單詞的表示時,我們無法區分同義詞(意義相似但形式不同的單詞)和同形異義詞(形式相同但意義不同的單詞)。例如,“汽車”和“轎車”在詞彙空間中可能被視為完全不同的實體,儘管它們的意思相同。這種信息可以通過外部數據庫提供給自然語言處理 (NLP) 系統。一個很好的例子是WordNet字典,它以語義網絡的形式組織,包含描述具有相同意義的單詞組的關係。其他方法可能包括與人類的互動,這樣可以豐富向量表示的語義特徵。儘管如此,在NLP的背景下,詞嵌入相比於使用語義網絡具有很大的潛力。一個優勢是它們能夠對向量執行經典的代數運算,例如加法或乘法。
為了解決語義單詞表示的問題,VSM的擴展使用了一種稱為詞嵌入的方法。在這個模型中,每個單詞被表示為多維空間中的一個向量,向量之間的相似性反映了單詞之間的語義相似性。像Word2Vec、GloVe、FastText等模型以無監督的方式學習單詞表示。訓練基於單詞出現在文本語料庫中的上下文,這使得它們之間的一些基本關係得以捕捉。在我們的研究中,我們將這些嵌入稱為原始嵌入 (OE),在實驗中使用了GloVe向量。
使用基於向量的表示,幾何運算變得可能,從而實現基本的語義推斷。一個經典的例子是Tomas Mikolov提出的運算 king-man + woman = queen,這展示了向量如何捕捉單詞之間的層次關係。這些運算增強了語言依賴性的建模,使得更高級的任務如機器翻譯、語義搜索和情感分析成為可能。
我們的研究旨在探索創建語義單詞嵌入的方法,即具有精確意義並強烈參考WordNet的嵌入。我們提出了基於半監督技術的改進詞嵌入的構建方法。在我們的實驗中,我們將這些嵌入稱為神經嵌入 (NE)。在應用對齊後,我們稱之為微調嵌入 (FE)。我們的方法擴展了之前提出的方法,修改詞向量,使得對它們的幾何運算對應於基本的語義關係。我們稱這種方法為幾何嵌入 (GE)。
我們的方法生成的詞嵌入已經在文本分類、聚類和嵌入表示空間中類別分佈分析的有用性方面進行了評估。
本文的其餘部分組織如下:第2節描述了創建詞嵌入的各種方法,包括監督和無監督的。第3節介紹我們的方法,包括數據集、預處理方法和用於創建語義詞嵌入的技術,以及評估方法。第4節展示實驗結果。第5節簡要討論整體發現,隨後第6節概述潛在應用和未來研究方向。
2. 相關工作
詞嵌入,也稱為分佈式詞表示,通常使用無監督的方法創建。它們的流行源於訓練過程的簡單性,只需要大量的文本語料庫。嵌入向量首先從稀疏表示構建,然後映射到較低維度的空間,生成對應於特定單詞的向量。為了提供我們研究的背景,我們簡要描述了構建詞嵌入的最流行的方法。
在Bengio等人對神經語言模型的開創性工作之後,詞嵌入的研究因計算能力的限制和算法不足以訓練大型詞彙而停滯不前。然而,在2008年,Collobert和Weston顯示,基於足夠大數據集訓練的詞嵌入捕捉了語法和語義特性,改善了後續任務的性能。在2011年,他們介紹了基於概率模型的SENNA嵌入,允許創建詞向量。每次訓練迭代中,通過將所有n個單詞的嵌入組合使用n-gram。然後,模型通過用詞彙中的隨機單詞替換中間單詞來修改n-gram。它被訓練以識別完整的n-gram比修改過的(破損的)更有意義,使用了鉸鏈損失函數。不久之後,Turian等人復制了這種方法,但不是替換中間單詞,而是替換最後一個單詞,取得了稍微更好的結果。
這些嵌入已在多個NLP任務中進行測試,包括命名實體識別 (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) 所示,包括樣本對象和類別項: