詞向量到word2vec與相關應用

一 NLP常見任務

1 自動摘要

2 指代消解 小明放學了,他媽媽去接

3 機器翻譯 小心 ---> care

4 詞性標註 heat(n)

5 分詞(中文,日文等) 大水溝/很/難/過

6 主題識別

7 文本分類

二 NLP處理方法

傳統: 基於規則

p現代: 基於統計機器學習

HMM, CRF, SVM, LDA, CNN…

“規則”隱含在模型參數裡

詞編碼需要保證詞的相似性:

詞向量到word2vec與相關應用

簡單 詞/短語 翻譯:詞向量到word2vec與相關應用

向量空間子結構:

VKing - VQueen + VWomen = VMan

VParis - VFrance + VGerman = VBerlin

最終目標: 詞向量表示作為機器學習、 特別是深度學習的輸入和表示空間。

在計算機中表示一個詞:

貓 美麗

❖動物 ❖多姿

❖胎生 ❖靚麗

❖有毛 ❖好看

❖彈跳性好 ❖俊俏

❖體型小 ❖迷人

❖寵物 ❖標誌

❖吃肉 ❖端莊

問題:

1.不能分辨細節的差別 2.需要大量人為勞動 3.主觀 4.無法發現新詞 5.難以精確計算詞之間的相似度。

離散表示: One-hot表示:

語料庫

John likes to watch movies. Mary likes too.

John also likes to watch football games.

詞典

{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also":

6, "football": 7, "games": 8, "Mary": 9, "too": 10}

One-hot表示

John: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]

likes: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]

too : [0, 0, 0, 0, 0, 0, 0, 0, 0, 1]

❖詞典包含10個單詞, 每個單詞有唯一索引

❖在詞典中的順序和在句子中的順序沒有關聯

詞向量到word2vec與相關應用

詞向量到word2vec與相關應用

三 語言模型:

一句話 (詞組合) 出現的概率:

詞向量到word2vec與相關應用

Unigram/1-gram

詞向量到word2vec與相關應用

Bi-gram/2-gram

詞向量到word2vec與相關應用

無法衡量詞向量之間的關係

酒店 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]

賓館 [0, 0, 0, 0, 1, 0, 0, 0, 0, 0] 各種度量(與或非、 距離都不合適

旅舍 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0] 太稀疏, 很難捕捉文本的含義

Ø詞表維度隨著語料庫增長膨脹

Øn-gram詞序列隨語料庫膨脹更快

Ø數據稀疏問題

分佈式表示 (Distributed representation):

詞向量到word2vec與相關應用

用一個詞附近的其他詞來表示該詞 :

“Youshallknowawordbythecompanyitkeeps”

(J.R.Firth1957:11)

現代統計自然語言處理中最有創見的想法之一。

詞向量到word2vec與相關應用

banking附近的詞將會代表banking的含義

共現矩陣 (Cocurrence matrix):

Word - Document 的共現矩陣主要用於發現主題(topic), 用於主題模型, 如LSA (Latent Semantic Analysis)局域窗中的Word - Word 共現矩陣可以挖掘語法和語義信息。

•Ilikedeeplearning.

• IlikeNLP.

• Ienjoyflying.

windowlength設為1(一般設為5~10)

使用對稱的窗函數(左右windowlength都為1)

詞向量到word2vec與相關應用

將共現矩陣行(列)作為詞向量存在的問題:

•向量維數隨著詞典大小線性增長

•存儲整個詞典的空間消耗非常大

•一些模型如文本分類模型會面臨稀疏性問題

構造低維稠密向量作為詞的分佈式表示 (25~1000維)!

SVD降維:

Ø最直接的想法: 用SVD對共現矩陣向量做降維。

詞向量到word2vec與相關應用

詞向量到word2vec與相關應用

SVD存在的問題:

Ø計算量隨語料庫和詞典增長膨脹太快, 對X(n,n)維的矩陣, 計算量O(n^3)。 而對大型的語料庫,n~400k, 語料庫大小1~60B token。

Ø難以為詞典中新加入的詞分配詞向量

Ø與其他深度學習模型框架差異大

NNLM (Neural Network Language model):

詞向量到word2vec與相關應用

結構:


詞向量到word2vec與相關應用

詞向量到word2vec與相關應用

word2vec: CBOW(連續詞袋):

詞向量到word2vec與相關應用

CBOW: 層次Softmax:

詞向量到word2vec與相關應用

詞向量到word2vec與相關應用

Sigmoid函數

詞向量到word2vec與相關應用

Ø[[n(w,j+1)=ch(n(w,j)]] 是選擇函數, 表明只選擇從根節點到目

標葉節點路徑上的內部節點

Øn(w,j): Huffman數內部第j層的節點

Øch(n(w,j)): n節點的child節點

詞向量到word2vec與相關應用

CBOW: 負例採樣:

P(w|context(w)): 一個正樣本, V-1個負樣本, 對負樣本做採樣詞向量到word2vec與相關應用

損失函數: 對語料庫中所有詞w求和:

詞向量到word2vec與相關應用

詞向量到word2vec與相關應用

Word2Vec: Skip-Gram模型:

詞向量到word2vec與相關應用

Word2Vec: 存在的問題:

Ø對每個local context window單獨訓練, 沒有利用包含在global co-currence矩陣中的統計信息。

Ø對多義詞無法很好的表示和處理, 因為使用了唯一的詞向量。

詞嵌入可視化: 公司 — CEO:

詞向量到word2vec與相關應用

詞嵌入可視化: 詞向

詞向量到word2vec與相關應用

詞嵌入可視化: 比較級和最高級:

詞向量到word2vec與相關應用

詞嵌入效果評估: 詞類比任務:

詞向量到word2vec與相關應用

GloVe與Word2Vec對比:

詞向量到word2vec與相關應用

GloVe隨著迭代次數增加, 精度提升。

Word2Vec未使用類似迭代次數的Epoch, 用Negative Samples模擬。

五 總結

離散表示

•One-hot representation, Bag Of Words Unigram語言模型

•N-gram詞向量表示和語言模型

•Co-currence矩陣的行(列)向量作為詞向量

❖分佈式連續表示

•Co-currence矩陣的SVD降維的低維詞向量表示

•Word2Vec: Continuous Bag of Words Model

•Word2Vec: Skip-Gram Model

工具google word2vec:

詞向量到word2vec與相關應用

工具gensim:

詞向量到word2vec與相關應用

詞向量到word2vec與相關應用

工具gensim中文處理案例:

詞向量到word2vec與相關應用

Word2vec+CNN做文本分類:

論文詳見《Convolutional Neural Networks for Sentence Classification》

http://arxiv.org/abs/1408.5882

Theano完成的代碼版本:

https://github.com/yoonkim/CNN_sentence

TensorFlow改寫的代碼版本:

https://github.com/dennybritz/cnn-text-classification-tf

添加分詞和中文詞向量映射之後, 可用於中文文本分類(情感分析)

關注機器學習,深度學習,自然語言處理等方面的知識。 有什麼問題隨時和我交流。


分享到:


相關文章: