自然語言處理知識梳理

word2vec

from gensim.models import Word2Vec
sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]]
model = Word2Vec(sentences, min_count=1)

常用參數:

  • sg (int {1, 0}) :  表示訓練的方法 如果是1則採用skip-gram,否則採用cbow,默認爲0
  • size : 詞向量的維度。
  • min_count:低於設置詞頻的詞會被忽略。
  • workers: 設置併發
  • hs (int {1,0}) : 如果是1則採用hierarchical softmax 方式估計. 如果是 0採用.“負採樣”(negative sampling)方式訓練

textcnn

在這裏插入圖片描述
TextCNN詳細過程:

  • Embedding:第一層是圖中最左邊的7乘5的句子矩陣,每行是詞向量,維度=5,這個可以類比爲圖像中的原始像素點。
  • Convolution:然後經過 kernel_sizes=(2,3,4) 的一維卷積層,每個kernel_size 有兩個輸出 channel。
  • MaxPolling:第三層是一個1-max pooling層,這樣不同長度句子經過pooling層之後都能變成定長的表示。
  • FullConnection and Softmax:最後接一層全連接的 softmax 層,輸出每個類別的概率。

Bi-LSTM

但是利用LSTM對句子進行建模還存在一個問題:無法編碼從後到前的信息。在更細粒度的分類時,如對於強程度的褒義、弱程度的褒義、中性、弱程度的貶義、強程度的貶義的五分類任務需要注意情感詞、程度詞、否定詞之間的交互。舉一個例子,“這個餐廳髒得不行,沒有隔壁好”,這裏的“不行”是對“髒”的程度的一種修飾,通過BiLSTM可以更好的捕捉雙向的語義依賴

  1. LSTM
    在這裏插入圖片描述
  2. Bilstm
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

Bi-LSTM + Attention

Bi-LSTM + Attention 就是在Bi-LSTM的模型上加入Attention層,在Bi-LSTM中我們會用最後一個時序的輸出向量 作爲特徵向量,然後進行softmax分類。Attention是先計算每個時序的權重,然後將所有時序 的向量進行加權和作爲特徵向量,然後進行softmax分類。在實驗中,加上Attention確實對結果有所提升。其模型結構如下圖
在這裏插入圖片描述

seq2seq

seq2seq基本思想就是利用兩個RNN,一個RNN作爲encoder,另一個RNN作爲decoder
第一種形式是語義向量只作初始化參數參與運算
在這裏插入圖片描述
第二種形式是語義向量參與解碼的每一個過程
在這裏插入圖片描述

attention+Seq2seq

傳統rnn-based model
在這裏插入圖片描述
加入attention與rnn結合的model
在這裏插入圖片描述
在這裏插入圖片描述
權重的三種計算方式
在這裏插入圖片描述

Transformer

在這裏插入圖片描述

  • Encoder由N=6個相同的layer組成,layer指的就是上圖左側的單元,最左邊有個“Nx”,這裏是x6個。每個Layer由兩個sub-layer組成,分別是multi-head self-attention mechanism和fully connected feed-forward network。其中每個sub-layer都加了residual connection和normalisation,因此可以將sub-layer的輸出表示爲
    在這裏插入圖片描述
  • Decoder和Encoder的結構差不多,但是多了一個attention的sub-layer,這裏先明確一下decoder的輸入輸出和解碼過程:
    輸出:對應i位置的輸出詞的概率分佈
    輸入:encoder的輸出 & 對應i-1位置decoder的輸出。所以中間的attention不是self-attention,它的K,V來自encoder,Q來自上一位置decoder的輸出
    解碼:這裏要特別注意一下,編碼可以並行計算,一次性全部encoding出來,但解碼不是一次把所有序列解出來的,而是像rnn一樣一個一個解出來的,因爲要用上一個位置的輸入當作attention的query
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章