5.2天然語言處理
以爲有用的話,歡迎一塊兒討論相互學習~Follow Me
<font color=deeppink>2.1詞彙表徵 Word representation</font>
- 原先都是使用詞彙表來表示詞彙,而且使用1-hot編碼的方式來表示詞彙表中的詞彙。
- 這種表示方法最大的缺點是 它把每一個詞孤立起來,這樣使得算法對相關詞的泛化能力不強
- 例如:對於已知句子「I want a glass of orange ___ 」 極可能猜出下一個詞是"juice".
- 若是模型已知讀過了這個句子可是當看見句子"I want a glass of apple ___ ",算法也不能猜出下一個詞彙是"juice",由於算法自己並不知道「orange」和「apple」之間的關係。也許比起蘋果,橙子與其餘單詞之間的距離更近。即算法並不能從「orange juice」是一個很常見的短語而推導出「apple juice」也是一個常見的短語。
- 這是由於任意兩個用「one-hot」編碼表示的單詞的內積都是0。
<font color=green>特徵表示:詞嵌入 (Featurized representation: word embedding)</font>
- 使用特徵化的方法來表示每一個詞,假如使用性別來做爲一個特徵,用以表示這些詞彙和 性別 之間的關係。
|
Man |
Woman |
King |
Queen |
Apple |
Orange |
Gender |
-1 |
1 |
-0.95 |
0.97 |
0.00 |
0.01 |
- 固然也能夠使用這種方法表示這些詞彙和 高貴 之間的關係。
|
Man |
Woman |
King |
Queen |
Apple |
Orange |
Royal |
0.01 |
0.02 |
0.93 |
0.95 |
-0.01 |
0.00 |
|
Man |
Woman |
King |
Queen |
Apple |
Orange |
Gender |
-1 |
1 |
-0.95 |
0.97 |
0.00 |
0.01 |
Royal |
0.01 |
0.02 |
0.93 |
0.95 |
-0.01 |
0.00 |
Age |
0.03 |
0.02 |
0.7 |
0.69 |
0.03 |
-0.02 |
Food |
0.09 |
0.01 |
0.02 |
0.01 |
0.95 |
0.97 |
- 假設爲了表示出詞彙表中的單詞,使用300個特徵進行描述,則詞彙表中的每一個單詞都被表示爲一個300維的向量。此時使用e_NO.表示特定的單詞,例如Man表示爲$e_{5391}$,Woman表示爲$e_{9853}$,King表示爲$e_{4914}$
- 對於詞嵌入的表示形式經過大量不一樣的特徵來表示詞彙,在填詞處理時,會更容易經過Orange juice而聯想到 Apple juice.
<font color=green>可視化詞向量 (Visualizing word embedding)</font>
Maaten L V D, Hinton G. Visualizing Data using t-SNE[J]. Journal of Machine Learning Research, 2008, 9(2605):2579-2605.git
- 對於詞向量的可視化,是將300維的特徵映射到一個2維空間中--t-SNE算法
![](http://static.javashuo.com/static/loading.gif)
<font color=deeppink>2.2使用詞嵌入 Using word embeddings</font>
- 繼續使用實體命名識別(named entity recognition)的例子,示例:"Sally Johnson is an orange farmer"Sally Johnson 是一個種橙子的農民。對於Sally Johnson,咱們能很快識別出這是一我的名,這是由於看到了"orange farmer"這個詞,告訴咱們Sally Johnson是一個農民。
- 使用詞嵌入的方式,很快可以識別出橙子和蘋果是同類事物。在句子「Sally Johnson is an orange farmer」中識別出Sally Johnson是一我的名後,在句子「Robert Lin is an apple farmer」中也能夠很容易的識別出Robert Lin是一我的名。
- 詞嵌入文本識別的方法基於的是一個巨大的文本庫,只有使用巨量的文本做爲訓練集的基礎上,系統纔會真正的有效。一個NLP系統中,使用的文本數量達到了1億甚至是100億。
- 在你的識別系統中,也許訓練集只有100K的訓練數據,可是能夠使用遷移學習的方法,從大量無標籤的文本中學習到大量語言知識。
<font color=green>將遷移學習運用到詞嵌入 (Transfer learning and word embeddings)</font>
- 先從一個很是大的文本集中學習詞嵌入,或者從網上下載預訓練好的詞嵌入模型。
- 使用詞嵌入模型,將其遷移到本身的新的只有少許標註的訓練集的任務中。
- 優化模型:持續使用新的數據來微調自身的詞嵌入模型。
- 詞嵌入技術在自身的標註訓練集相對較少時優點最爲明顯。在 實體命名識別(named entity recognition),文本摘要(text summarization),文本解析(co-reference resolution),指代消解(parsing)中應用最爲普遍 在 語言模型(language modeling), 機器翻譯(Machine translation)中應用較少 由於這些任務中,你有大量的數據而不必定須要使用到詞嵌入技術。
<font color=green>詞嵌入與人臉編碼(word embeddings and face encoding)</font>
Taigman Y, Yang M, Ranzato M, et al. DeepFace: Closing the Gap to Human-Level Performance in Face Verification[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2014:1701-1708.github
- 詞嵌入技術與人臉編碼技術之間有奇妙的關係,在人臉編碼任務中,經過卷積神經網路將兩張人臉圖片進行編碼成爲兩個128維的數據向量,而後通過比較判斷兩張圖片是否來自於同一張人臉。
- 對於人臉識別問題,不管這張圖片原先是否定識過,通過卷積神經網絡處理後,都會獲得一個向量表徵。
- 對於詞嵌入問題,則是有一個固定的詞彙表,對於詞彙表中的每一個單詞學習一個固定的詞嵌入表示方法。而對於沒有出如今詞彙表中的單詞,視其爲UNK(unknowed word)
![](http://static.javashuo.com/static/loading.gif)