AIPM要知道的NLP知識(1):詞的表達

LCC
5 評論 4332 瀏覽 19 收藏 9 分鐘

編輯導語:NLP為Neuro-Linguistic Programming的縮寫,是研究思維、語言和行為中的規律;這是一種對優秀(excellence)進行編碼和復制的方式,它能使你不斷達到你和你的公司想要的結果;本文是作者關于NLP知識中詞的表達的分享,我們一起來看一下。

個人認為pm懂一點技術好處是大大的有。

總結這個系列,把NLP相關的常見模型進行了梳理,分為詞的表達、RNN、seq2seq、transformer和bert五個部分。

基本的想法是重點理解模型是什么(what)、為什么要用這種模型(why)以及哪些場景中可以用這種模型(where),至于如何實現模型(how)可以留給RD小哥哥們。

一、詞的表達

要知道計算機是看不懂人類語言的,要想讓機器理解語言、實現自然語言處理,第一步就是把自然語言轉化成計算機語言——數字。

由于詞是人類語言表達時的一種基本單位(當然更細的單位是字或者字母),NLP處理的時候很自然的想要用一組特定的數字代表一個特定的詞,這就是詞的表達,把這些表示詞的數字連起來就可以表達一句話、一篇文章了。

這一part里有很多常見的名詞,distributed representation、word embedding、word2vec等等,它們的關系大概是這樣的:

1. one-hot representation v.s. distributed representation

表達方式,我覺得就是自然語言到機器語言怎么轉化的一套規則;比如“我”這個詞轉化到機器語言應該用“1”還是“100”表示呢?而且機器語言中代表“我”的這個數還不能和代表其他詞的數重復吧,必須是一個唯一的id。

順著id這個思路,假設我們的詞典收錄了10個詞,那么我們就給詞典里的每一個詞分配一個唯一的id;詞表示的時候用一個和字典一樣長的向量表示,這個向量里只有id這一位為1,其他位都為0;比如說abandon這個詞的id是1,那么就表示成abandon=[1 0 0 0 0 0 0 0 0 0],這就是one-hot representation。

這種表示好理解,但是也有問題:

問題一:向量會隨著字典變大而變大。

很明顯如果我的詞典有100000個詞的話,每一個詞都要用長度100000的向量表示;如果一句話有20個詞,那么就是一個100000*20的矩陣了,按這種操作基本就走遠了。

另外一個問題是這種表示不能體現語義的相關性。

比如香蕉和蘋果在人看來是非常類似的,但是用one-hot表示香蕉可能是[1,0,0,0,0],蘋果可能是[0,0,1,0,0],之間沒有任何相關性;這樣的話如果我們用“我吃了香蕉”訓練模型,結果模型可能并不能理解“我吃了蘋果”,泛化能力就很差。

于是機智的大佬們提出了一個假說,就是distributed hypothesis:詞的語義由其上下文決定。

基于這種假說生成的表示就叫做distributed representation,用在詞表示時也就是word embedding,中文名有詞向量、詞嵌入;所以distributed representation≈word embedding,因為現階段主流的nlp處理大都是基于詞的,當然也有對字、句子、甚至文章進行embedding的,所以不能說完全完全相等。

至于具體如何基于這種假說實現詞表示,根據模型不同可以分成基于矩陣(GloVe)、基于聚類、基于神經網絡(NNLM、Word2Vec等)的方法。

2. word embedding

個人理解,從字面意思上看word embedding就是把一個one-hot這樣的稀疏矩陣映射成一個更稠密的矩陣;比如上邊栗子中abandon用one-hot(詞典大小為10)表示為[1 0 0 0 0 0 0 0 0 0];但word embedding可能用維度為2的向量[0.4 0.5]就可以表示;解決了前邊說的one-hot的維度過大問題,還增大了信息熵,所以word embedding表示信息的效率要高于one-hot。

但詞向量這個名字沒有體現出它表示語義的本質,所以第一次看到很容易會不知所云;為了說明word embedding可以體現語義,這時候就可以搬出著名的queen、king、woman、man的栗子了。

(圖來自Andrew Ng deeplearning.ai)

上圖是通過訓練得出的詞向量,man=[-1 0.01 0.03 0.09],woman=[1 0.02 0.02 0.01],king=[-0.95 0.93 0.70 0.02],queen=[0.97 0.95 0.69 0.01]。

矩陣相減man-woman=[-2 -0.01 0.01 0.08],king-queen=[-1.92 -0.02 0.01 0.01],兩個差值非常相近,或者說兩個向量的夾角很小,可以理解為man和woman之間的關系與king和queen之間非常相近;而apple-orange=[-0.01 -0.01 0.05 -0.02]就和man-woman、king-queen相差很大。

很有意思的是最初word embedding其實是為了訓練NNLM(Neural Network Language Model)得到的副產品。

訓練語言模型會得到一個lookup table,這個lookup table有點像地下工作者用的密碼本;通過這個密碼本可以將one-hot向量轉換成更低維度的word embedding向量,可見詞向量實現的關鍵就是得到密碼本lookup table。

后來更高效的得到word embedding的模型之一就是word2Vec,word2Vec又有兩種模型,分別是CBOW和skip-gram;兩者都可以得到lookup table,具體模型和實現不在這里展開。

word embedding可以作為判斷語義相似度的一種手段,但更多的是作為其他nlp任務的第一步。

實際中如果不是特殊領域(軍事、法律等)的詞典,word embedding可以用別人訓練好的,提高效率;所以word embedding也可以看做神經網絡預處理的一種。

另外說一下,word embedding有個最大的問題是不能處理多義詞。

舉個栗子“蘋果員工愛吃蘋果”,第一個蘋果是指蘋果公司,第二個是指水果;但對于word embedding來說二者只能對應一個向量(比如[0.1 -0.3]),在處理后續任務時只要是蘋果就對應成[0.1 -0.3],所以通過詞向量并不能區分出蘋果的不同詞義。

總結一下,詞的表達我覺得要知道:

  • 為什么需要詞表達。
  • 幾個常見名詞(one-hot representation、distributed representation、word embedding、word2Vec)之間的關系。
  • word embedding比one-hot強在哪里。
  • word embedding有什么缺點。

 

本文由 @LCC 原創發布于人人都是產品經理,未經許可,禁止轉載。

題圖來自Unsplash,基于CC0協議。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 特地注冊賬號來好評!這個解釋對入門來說太友好了,順便問下有什么入門書籍可以推薦的嗎

    來自上海 回復
    1. 感謝~可以看看吳恩達的在線課程講RNN那一節

      來自北京 回復
  2. 多話不說,感謝~~

    來自上海 回復
  3. 技術的活pm干的那么起勁干嘛

    來自廣東 回復
  4. 那個。。。NLP=natural language processing。。。

    來自北京 回復