詞嵌套(詞向量)簡史

轉載自:http://datartisan.com/article/detail/50.html

當前自然語言處理最大的趨勢是對詞嵌套的使用,詞嵌套是指由語義相關性所度量的相似性向量。這些向量不僅可以表示計算詞語之間的相關性,同時它還是其他自然語言處理項目的基礎,比如文本分類、文檔聚類、詞性標註、命名實體識別、情感分析,等等。從 ACL 和 EMNLP 等大型 NLP 會議的會議記錄中我們可以看出詞向量是 NLP 發展的大方向。這是有史以來第一次以語義爲主題的 EMNLP(Empirical Methods in NLP) 會議。事實上,由於大量的文章中使用了詞向量方法,一些人甚至建議將這個會議重新命名爲 “Embedding Methods in NLP”。

這是一個積極的趨勢(如果你喜歡語義學和詞向量的話),目前在 NLP 領域中有許多正在取得進展的項目。然而,最近許多關於詞向量的出版物卻出人意料地無視了前人在計算機科學、認知科學和計算機語言學中的工作成果。這種不是建立在現有知識體系上的方法將會拖延學科的發展。

本篇博客的要點在於提供詞向量的簡史,同時對該方法的當前發展做一個總結。需要注意的是:這決不是意味着提供所有相關研究主題的完整列表;相反,它的目的是成 爲有興趣繼續探索該領域的人的研究參考和起點。

首先是專業術語的標記。由於當前流行的方法主要來源於深度學習社區,詞嵌套已經成爲當前的主導詞語。在計算語言學中,我們經常使用分佈語言模型這個稱謂。實際使用過程中還存在許多可供選擇的術語,比如非常通用的分佈式表述、更具體的語意向量空間和詞向量空間。爲了統一起見,我將在本篇博文中使用詞嵌套這個稱謂。

詞嵌套的主要思想是:上下文信息可以單獨構成一個可行的語義向量,這與傳統的語義學和喬姆斯基理論形成鮮明的對比。這個想法具有結構主義語言學和普通語言哲學上的理論根源,特別是哈里斯、約翰·費斯和維特根斯坦所有在 19 世紀 50 年代出版的作品。最早利用特徵向量來量化語義相似性的方法使用了手工計算的特徵變量。查爾斯·奧斯古德在 19 世紀 60 年代編制的語義差量度表是一個很好的例子,進入 80 年代後,相似性向量開始被用於連接論和人工智能的早期作品上。

1990 年左右,利用自動生成上下文特徵的方法在許多不同研究領域中得到了發展。最具影響力的模型之一是潛語義分析/索引模型(LSA/LSI),該模型是主題模型的前身,它建立在信息檢索的環境中。差不多在同一時間,人們在人工神經網絡的研究中開發了許多不同的模型。這些模型中最出名的當屬自組織圖(SOM)和簡單遞歸網絡模型(SRN),其中後者自然語言模型的前身。在計算語言學領域,辛裏奇·舒爾澤所開發的基於共生詞的模型被用在 HAL 模型(認知科學中我們稱之爲語義存儲模型)中。

後來的發展基本上就是改進這些早期模型。主題模型是潛語義分析模型的細化,其中包含了概率潛語義分析模型和隱主題模型。神經語言模型和 SRN 模型擁有相同的應用程序,同時它還包含了卷積網絡模型(CNN)和自動編碼模型的架構。分佈式語義模型則是基於 HAL 模型和隨機索引模型。

這些不同模型的主要區別是它們所使用的上下文信息類型。LSA 和主題模型主要處理文檔數據,而神經語言模型和分佈式語義模型則處理詞數據。這些不同上下文信息可以獲取不同類型的語義相似度;基於文檔數據的模型獲得語義關聯信息(比如,小船-水),而基於詞數據的模型則獲得語義相似性信息(比如,小船-輪船)。這個非常基本的差異經常被誤解。

說到常見的誤解,這裏還需要揭穿兩個錯誤的觀念:

  1. 不需要利用深層神經網絡模型來構建詞向量。實際上,當前兩個最成功的模型—— word2vec 庫中的 Skipgram 模型和 CBoW 模型——和原始的 SRN 模型同是淺神經網絡模型。
  2. 神經網絡預測模型和基於計數的分佈式語義模型之間沒有本質的區別。相反,它們通過不同的計算方式來獲得相同類型的語義模型。最近的一些論文從理論上和實證上證明了這些不同模型之間的相似之處。

https://levyomer.files.wordpress.com/2014/09/neural-word-embeddings-as-implicit-matrix-factorization.pdf

http://www.emnlp2015.org/proceedings/EMNLP/pdf/EMNLP024.pdf

以上就是詞向量的簡史介紹和兩條關於錯誤觀念的澄清信息。詞向量的當前發展狀況是什麼樣的呢?一個無聊的答案是,這取決於你想解決的任務和你想花多大的努力來優化模型。更愉快的回答是,無論你選擇哪個流行的模型你都會獲得你想要的結果,因爲它們之間或多或少都是相同的。由於語義模型可以獲得良好的結果並且在處理各種任務時非常穩健,所以使用語義模型(不管是使用分佈式語義模型還是神經網絡模型)是一個不錯的選擇。

對於那些對詞嵌套感興趣的朋友,我推薦以下這些資源:

獨立的實現工具:word2vec、GloVe

構架:S-Space(JAVA)、SemanticVectors(JAVA)、Gensim(Python)、PyDSM(Python)、DISSECT(Python)

 

 

 

 

原文鏈接:

http://gavagai.se/blog/2015/09/30/a-brief-history-of-word-embeddings/

原文作者:Gavagai

翻譯:Fibears

發佈了28 篇原創文章 · 獲贊 75 · 訪問量 257萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章