入門自然語言處理必看:圖解詞向量
詞嵌入(embedding)是機器學習中最驚人的創造, 如果你有輸入法打字預測的經歷,那麼你很有可能是詞嵌入(自然語言處理的核心模型)技術的受益者。
在過去的幾十年中,基於神經網路模型的詞嵌入技術發展迅猛。尤其是最近,包括使用BERT和GPT2等最先進的模型進行語義化詞嵌入。
Word2vec是一種有效建立詞嵌入的方法,於2013年提出。除了作為詞嵌入的方法之外,它的一些概念已經被證明可以有效地應用在推薦引擎和理解時序資料上。
在本文中,將討論詞嵌入的概念,以及使用word2vec生成詞嵌入的機制。從一個例子開始,熟悉使用向量來表示事物,你是否知道你的個性可以僅被五個數字的列表(向量)表示?
詞嵌入表示你的性格
如何用0到100的範圍來表示你是多麼內向/外向(其中0是最內向的,100是最外向的)? 你有沒有做過像MBTI那樣的人格測試,或者五大人格特質測試? 如果你還沒有,這些測試會問你一系列的問題,然後在很多維度給你打分,內向/外向就是其中之一。
五大人格特質測試測試結果示例。它可以真正告訴你很多關於你自己的事情,並且在學術、人格和職業成功方面都具有預測能力。
假設我的內外向得分為38/100。 可以用這種方式繪圖表示:
把範圍收縮到-1到1:
當你只知道這一條資訊的時候,你覺得你有多瞭解這個人?人性很複雜,需要新增另一測試的得分作為新維度。
可以將兩個維度表示為圖形上的一個點,或者作為從原點到該點的向量。
現在可以說這個向量代表了我的一部分人格。當你想要將另外兩個人與我進行比較時,這種表示法就有用了。假設我突然被車撞掛了,需要找一個性格相似的人替換我,那在下圖中,兩個人中哪一個更像我?
處理向量時,計算相似度得分的常用方法是使用餘弦相似度:
很明顯,1號替身在性格上與我更相似。指向相同方向的向量(長度也起作用)具有更高的餘弦相似度。
兩個維度還不足以捕獲有關不同人群的足夠資訊。心理學已經研究出了五個主要人格特徵(以及大量的子特徵),所以使用所有五個維度進行比較:
使用五個維度的問題是不能在二維平面繪製整齊小箭頭了。在機器學習中,經常需要在更高維度的空間中思考問題。 但是餘弦相似度的計算仍然有效,仍適用於任意維度:
餘弦相似度適用於任意維度的資料,現在的得分比上次的得分要更合理,因為是根據被比較事物的更高維度算出的。
在本節的最後,總結兩個中心思想:
- 可以將人和事物表示為代數向量(這樣才能使用機器進行!)。
- 可以很容易地計算出向量之間的相互關係,是否相似。
詞嵌入
透過上文的理解,繼續看看訓練好的詞向量(也被稱為詞嵌入),並接著探索它們的一些有趣屬性。
這是一個單詞”king”的詞嵌入(在維基百科上訓練的GloVe向量):
[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]
這是一個包含50個數字的列表。透過觀察數值看不出什麼,但是稍微給它視覺化,就可以和其它詞向量作比較。把上面所有這些數字放在一行:
根據它們的值對單元格進行顏色編碼(如果它們接近2則為紅色,接近0則為白色,接近-2則為藍色),得到如下圖片:
忽略數字僅檢視單元格顏色。現在將”king”與其它單詞進行比較:
上圖可以看出:”Man”和”Woman”彼此之間要更加相似,相比於單詞”king”來說。 這暗示著向量圖示很好的展現了這些單詞的資訊/含義/關聯。
這是另一個示例列表:
總結:
- 所有這些不同的單詞都有一條直的紅色列,說明它們在這個維度上是相似的(雖然不知道每個維度具體是什麼含義)
- 可以看到”woman”和”girl”在很多維度是相似的,”man”和”boy”也是一樣
- “boy”和”girl”也有彼此相似的地方,但這些地方卻與”woman”或”man”不同。這些維度是否可以總結出一個模糊的”youth”概念?
- 除了最後一個單詞,所有單詞都是代表人。 透過新增了一個”water”物件來顯示類別之間的差異。你可以看到藍色列一直向下並在 “water”的詞嵌入之前停下了。
- “king”和”queen”彼此之間相似,但它們與其它單詞都不太相似。這些不相似的維度是否可以總結出一個模糊的”royalty”概念?
類比
展現詞嵌入奇妙屬性的著名例子是類比。透過新增、減去詞嵌入得到一些有趣的結果。一個經典例子是公式:”king”-“man”+”woman”:
在python中使用Gensim庫,可以新增和減去詞向量,它會找到與結果向量最相似的單詞。該影像顯示了最相似的單詞列表,輸出其與每個單詞餘弦相似性。
同樣進行視覺化:
雖然”king-man + woman”生成的向量並不完全等同於”queen”,但是”queen”是在整個400,000個字詞嵌入中最接近它的單詞。
由此已經看過訓練好的詞嵌入向量了,下文會詳細介紹訓練過程。 在開始使用word2vec之前,需要看一下詞嵌入的上級概念:神經語言模型。
語言模型
自然語言處理最典型的應用,應該就是智慧手機輸入法中對下一單詞預測功能。
單詞預測可以透過語言模型來實現,語言模型會從單詞列表中(比如說兩個詞)去嘗試預測可能緊隨其後的單詞。
在上面這個手機截圖中,可以認為該模型接收到兩個綠色單詞(thou shalt)並推薦了一組單詞(“not” 就是其中最有可能被選用的一個):
可以把這個模型想象為如下所示的黑盒:
但事實上,該模型不會只輸出一個單詞。實際上,所有它知道的單詞(模型的詞庫,可能有幾千到幾百萬個單詞)按可能性打分,輸入法程式會選出其中分數最高的推薦給使用者。
自然語言模型的輸出就是模型所知單詞的機率評分,通常把機率按百分比表示,實際使用中,40%這樣的分數在輸出向量組是表示為0.4
自然語言模型(請參考Bengio 2003)在完成訓練後,會按下圖所示的三個步驟完成預測:
第一步與本文主題最相關,因為討論的就是Embedding。模型在經過訓練之後會生成一個對映單詞表所有單詞的詞向量矩陣。在進行預測的時候,輸入法預測演算法就是在這個對映矩陣中查詢輸入的單詞的詞向量,然後計算出預測值:
下文將重點放到模型訓練上,來學習一下模型如何構建這個對映矩陣詞向量,歡迎關注。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2655248/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自然語言處理NLP快速入門自然語言處理
- 自然語言處理(NLP)入門指南自然語言處理
- 自然語言處理:分詞方法自然語言處理分詞
- 自然語言處理怎麼最快入門?自然語言處理
- 自然語言處理之jieba分詞自然語言處理Jieba分詞
- 詞!自然語言處理之詞全解和Python實戰!自然語言處理Python
- 自然語言處理NLP(6)——詞法分析自然語言處理詞法分析
- 用深度學習來獲取文字語義:詞向量應用於自然語言處理深度學習自然語言處理
- Pyhanlp自然語言處理中的新詞識別HanLP自然語言處理
- NPL---自然語言處理單詞界定問題自然語言處理
- 自然語言處理(NLP)自然語言處理
- Hanlp自然語言處理中的詞典格式說明HanLP自然語言處理
- NLP自然語言處理中的hanlp分詞例項自然語言處理HanLP分詞
- 自然語言處理中的分詞問題總結自然語言處理分詞
- 自然語言處理(NLP)系列(一)——自然語言理解(NLU)自然語言處理
- 自然語言處理入門 - olay自然語言處理
- 自然語言處理(NLP)概述自然語言處理
- 自然語言處理NLP(四)自然語言處理
- Python自然語言處理Python自然語言處理
- 自然語言處理(NLP)路線圖 - kdnuggets自然語言處理
- Python 自然語言處理(基於jieba分詞和NLTK)Python自然語言處理Jieba分詞
- 2023nlp影片教程大全 NLP自然語言處理教程 自然語言處理NLP從入門到專案實戰自然語言處理
- 詞向量入門
- 精通Python自然語言處理 4 :詞性標註--單詞識別Python自然語言處理詞性標註
- 自然語言處理工具hanlp關鍵詞提取圖解TextRank演算法自然語言處理HanLP圖解演算法
- Python自然語言處理 1 語言處理與PythonPython自然語言處理
- 快速瞭解什麼是自然語言處理自然語言處理
- Python自然語言處理入門Python自然語言處理
- HanLP 自然語言處理 for nodejsHanLP自然語言處理NodeJS
- [譯] 自然語言處理真是有趣!自然語言處理
- 自然語言處理與分析(one)自然語言處理
- Python自然語言處理實戰(3):中文分詞技術Python自然語言處理中文分詞
- 05.序列模型 W2.自然語言處理與詞嵌入模型自然語言處理
- 中國語文(自然語言處理)作業自然語言處理
- Python自然語言處理 3 處理原始文字Python自然語言處理
- 自然語言處理入門基礎之hanlp詳解自然語言處理HanLP
- 自然語言處理工具pyhanlp分詞與詞性標註自然語言處理HanLP分詞詞性標註
- 人工智慧 (06) 自然語言處理人工智慧自然語言處理