NLP 基於深度學習的文字分類2

2021-10-08 17:55:00 字數 2487 閱讀 2606

另外提出兩種更加高效的訓練方法:

1. skip-grams原理和網路結構

word2vec模型中,主要有skip-gram和cbow兩種模型,從直觀上理解,skip-gram是給定input word來**上下文。而cbow是給定上下文,來**input word。

word2vec模型實際上分為了兩個部分,第一部分為建立模型,第二部分是通過模型獲取嵌入詞向量。

word2vec的整個建模過程實際上與自編碼器(auto-encoder)的思想很相似,即先基於訓練資料構建乙個神經網路,當這個模型訓練好以後,並不會用這個訓練好的模型處理新的任務,真正需要的是這個模型通過訓練資料所學得的引數,例如隱層的權重矩陣——後面將會看到這些權重在word2vec中實際上就是試圖去學習的「word vectors」。

skip-grams過程

假如有乙個句子「the dog barked at the mailman」。

1.首先選句子中間的乙個詞作為輸入詞,例如選取「dog」作為input word;

2.有了input word以後,再定義乙個叫做skip_window的引數,它代表著從當前input word的一側(左邊或右邊)選取詞的數量。如果設定skip_window=2,那麼最終獲得視窗中的詞(包括input word在內)就是[『the』, 『dog』,『barked』, 『at』]。skip_window=2代表著選取左input word左側2個詞和右側2個詞進入視窗,所以整個視窗大小span=2x2=4。另乙個引數叫num_skips,它代表著從整個視窗中選取多少個不同的詞作為的output word,當skip_window=2,num_skips=2時,將會得到兩組 (input word, output word) 形式的訓練資料,即 (『dog』, 『barked』),(『dog』, 『the』)。

3.神經網路基於這些訓練資料將會輸出乙個概率分布,這個概率代表著的詞典中的每個詞作為input word的output word的可能性。這句話有點繞,來看個例子。第二步中在設定skip_window和num_skips=2的情況下獲得了兩組訓練資料。假如先拿一組資料 (『dog』, 『barked』) 來訓練神經網路,那麼模型通過學習這個訓練樣本,會告訴詞彙表中每個單詞當』dog』作為input word時,其作為output word的可能性。

也就是說模型的輸出概率代表著到詞典中每個詞有多大可能性跟input word同時出現。例如:如果向神經網路模型中輸入乙個單詞「soviet「,那麼最終模型的輸出概率中,像「union」, 」russia「這種相關詞的概率將遠高於像」watermelon「,」kangaroo「非相關詞的概率。因為」union「,」russia「在文字中更大可能在」soviet「的視窗**現。

將通過給神經網路輸入文字中成對的單詞來訓練它完成上面所說的概率計算。下面的圖中給出了一些訓練樣本的例子。選定句子「the quick brown fox jumps over lazy dog」,設定視窗大小為2(window_size=2),也就是說僅選輸入詞前後各兩個詞和輸入詞進行組合。下圖中,藍色代表input word,方框內代表位於視窗內的單詞。

模型將會從每對單詞出現的次數中習得統計結果。例如,神經網路可能會得到更多類似(「soviet「,」union「)這樣的訓練樣本對,而對於(」soviet「,」sasquatch「)這樣的組合卻看到的很少。因此,當模型完成訓練後,給定乙個單詞」soviet「作為輸入,輸出的結果中」union「或者」russia「要比」sasquatch「被賦予更高的概率。

textcnn利用cnn(卷積神經網路)進行文字特徵抽取,不同大小的卷積核分別抽取n-gram特徵,卷積計算出的特徵圖經過maxpooling保留最大的特徵值,然後將拼接成乙個向量作為文字的表示。

這裡基於textcnn原始**的設定,分別採用了100個大小為2,3,4的卷積核,最後得到的文字向量大小為100*3=300維。

textrnn利用rnn(迴圈神經網路)進行文字特徵抽取,由於文字本身是一種序列,而lstm天然適合建模序列資料。textrnn將句子中每個詞的詞向量依次輸入到雙向雙層lstm,分別將兩個方向最後乙個有效位置的隱藏層拼接成乙個向量作為文字的表示。

hierarchical attention network for document classification(han)基於層級注意力,在單詞和句子級別分別編碼並基於注意力獲得文件的表示,然後經過softmax進行分類。其中word encoder的作用是獲得句子的表示,可以替換為上節提到的textcnn和textrnn,也可以替換為下節中的bert。

nlp實踐 基於深度學習的文字分類1

fasttext bag of tricks for efficient text classification 與傳統機器學習不同,深度學習既提供特徵提取功能,也可以完成分類的功能。基於fasttext的文字分類 如何使用驗證集調參 在基於機器學習的文字分類中,介紹了4中文字表示方法 one ho...

NLP 文字分類思路

github部落格傳送門 csdn部落格傳送門 載入詞嵌入矩陣 一般情況為字典形式 載入任務資料 一般情況為字串形式 我喜歡程式設計 或者 i love play computer 對載入的所有任務資料求乙個最大字串長度 以便後面將所有資料填充至一樣的長度 將每條資料以每個樣本的形式存入列表 我在家...

深度學習和文字分類

參考部落格 fasttext 模型輸入乙個詞的序列 一段文字或者一句話 輸出這個詞序列屬於不同類別的概率。序列中的詞和片語組成特徵向量,特徵向量通過線性變換對映到中間層,中間層再對映到標籤。fasttext 在 標籤時使用了非線性啟用函式,但在中間層不使用非線性啟用函式。fasttext 模型架構和...