本文介紹了壹個詞向量模型,它不是文本分類模型,但可以說是fasttext的基礎。所以也簡單提壹下。
筆者認為cbow、skipgram和大部分詞向量模型都沒有考慮壹個詞的多態性,只是簡單地把壹個詞的多種形式看作獨立的詞。比如like的不同形式是like,like,like,like,like,like,這些詞的意思其實是壹樣的,但是cbow/skipgram模型認為這些詞是獨立的,沒有考慮它們的形態多樣性。
為此,作者提出了壹種能有效利用單詞字符級信息的n元詞向量模型,並以skipgram模式實現了該模型。例如,單詞where,它的n-gram表示為
在損失方面,本文采用了負抽樣+二元邏輯回歸的策略。也就是說,每個目標單詞被預測為肯定和否定之壹。
本文提出了壹種基於神經網絡的文本分類模型,該模型基於cbow,與cbow非常相似。
和CBOW壹樣,fastText模型只有三層:輸入層、隱藏層和輸出層(層次化Softmax)。輸入是用向量表示的若幹單詞,輸出是特定的目標。隱含層是多個詞向量的疊加和平均。不同的是,CBOW的輸入是目標單詞的上下文,fastText的輸入是多個單詞及其n-gram特征的嵌入表示,用於表示單個文檔。CBOW的輸入詞采用onehot編碼,fastText的輸入特點是嵌入。CBOW的輸出是目標詞匯,fastText的輸出是文檔對應的類別標記。輸出層的實現也使用了層次化的softmax。當然,如果自己實現的話,對於類別數量較少的任務,可以直接使用softmax。
最後貼壹個簡化版的Keras模型fasttext。
在詞向量表示的基礎上,提出利用卷積神經網絡對文本進行分類。算法如上圖所示:
在本文中,作者嘗試了多種不同的詞向量模式:
在上壹篇文章中,CNN網絡的輸入壹般是預先訓練好的詞向量,但在本文中,作者提出了壹種直接將嵌入訓練與分類任務相結合,能夠有效提取/保留詞序信息的模型方法,即有效訓練n-gram,也可以理解為CNN嵌入的壹種方法。
另外,另壹個問題是輸入序列長度的變化(在上壹篇文章textCNN中通過填充解決?),本文作者提出用動態可變池層來解決這個問題,使卷積層的輸出大小相同。實際上,變量池類似於圖像識別中的空間金字塔池。
這篇文章有把fastText和TextCNN結合起來的感覺,把n-gram嵌入和分類任務結合起來進行訓練,通過CNN嵌入。
通過區域嵌入的文本分類》
在本文中,作者提出了壹種tv嵌入(即兩視圖嵌入),也屬於區域嵌入(也可以理解為ngram嵌入)。這種方法類似於上面的bow-CNN表示法。用bow(單詞包)表示壹個區域內的單詞和短語,然後預測其前後的區域(左右鄰域內的單詞或短語),即輸入區域為view1,目標區域為view2。Tv-embedding單獨訓練,使用時與CNN中的embedding結合(形成多個頻道?)。筆者認為word2vec方法預訓練的嵌入向量具有普適性,而通過訓練特定任務的數據集得到的tv-embedding具有壹些與任務相關的信息,更有利於提高我們的模型效果。
這篇文章我不是很懂,也可能是我英語太差。作者的文章裏沒有壹個壹目了然的網絡圖,比如textCNN的圖,壹目了然的很清楚。看壹看就知道怎麽做了。
提出壹種基於LSTM的文本分類模型,該模型使用監督學習和半監督預訓練。文章作者同上,所以使用的很多技術可以說同上。所以簡單說說這篇文章的壹些想法。
筆者認為,現有的直接使用LSTM作為文本分類模型,直接使用LSTM的最後壹個輸出作為後續全連接分類器的方法面臨兩個問題:(1)這種方法壹般集成了單詞嵌入(即onehot的輸入經過壹個嵌入層再進入LSTM),但是嵌入訓練不穩定,難以訓練;(2)直接用LSTM的最後壹次輸出來表示整個文檔是不準確的。壹般來說,LSTM輸入背後的單詞將在最終輸出中占據很大的權重,但這對於文章表示並不總是正確的。因此,作者改進了這兩點:
其實這篇論文可以看做是作者前面的電視嵌入半監督訓練和RCNN的融合,有壹種操作猛如虎,頭壹眼就0-5的感覺(因為作者的實驗結果和壹般的CNN相比其實並不多)。
本文作者也是前兩篇使用CNN進行文本分類的文章的作者。因此,本文將前兩篇文章中提出的壹些方法結合起來,使用深度卷積神經網絡。具體細節包括:
關於DPCNN更詳細的細節,請看來自DPCNN的深度詞級文本分類模型。
提出壹種基於CNN+註意力的文本分類模型。筆者認為現有的基於CNN的文本分類模型大多使用固定大小的卷積核,因此學習到的表示也是固定的N元文法表示,而這個N與CNN濾波器的大小有關。而在句子的語義表征中,不同句子中起重要作用的ngram詞往往是不同的,也就是變化的。因此,模型自適應地為每個句子選擇最佳n-gram以提高模型的語義表示能力是非常重要的。基於這壹思想,本文提出了壹種選擇不同n元文法表示的自適應模型。
本文的模型在主題結構中引用CV中的DenseNet,通過DenseNet中的稠密連接提取豐富的n元文法特征表示。比如我們不僅可以學習f(x1,x2,x3),還可以學習f(x1(x2,x3)),這是壹個多層次更豐富的特征。網絡的結構主要包括三個部分:DenseCNN主網絡、註意模塊和最後的全連接層分類網絡。以下是對這三個部分的簡要描述:
本文采用密集連接+關註度來自動獲取對文本語義最重要的n元文法特征,效果非常好。不過缺點是這個網絡比較適合短文本。在本文中,輸入文本是填充的,對於不同的數據集,最大長度為50,100,但對於長文本,這顯然是不夠的。因此,對於較長的文本,韓最好借用來不限制輸入長度。
提出了壹種結合遞歸神經網絡(RNN)和卷積神經網絡的文本分類方法。其結構如上圖所示,網絡可分為三部分:
雖然它是RNN和CNN的組合,但它實際上只在CNN中使用了pooling,這有點噱頭。還提到了RCNN比CNN好的原因,即RCNN為什麽能比CNN更好地捕捉上下文信息:CNN使用固定大小的窗口(即內核大小)來提取上下文信息,它實際上是壹個n-gram。因此,CNN的性能受窗口大小的影響很大。如果太小,會丟失壹些遠距離信息。過大的話會導致稀疏,增加計算量。
在很多自然語言處理任務中,壹個非常突出的問題就是訓練數據的缺乏和標註的困難。為此,本文提出了壹種多任務RNN模型框架,利用多個不同的任務數據集對同壹模型的參數進行訓練,並實現了數據集擴展的功能。
本文作者提出了三種模型,如上圖所示:
三種模式的訓練方法是相同的:
本文提出了壹個層次化的LSTM+註意力模型。作者認為,雖然壹篇文章由幾個句子組成,但其中的壹些句子可能真的起著關鍵作用,所以在每個句子中應用註意機制,使對文章語義貢獻更大的句子占據更大的權重。同樣,組成壹個句子的詞也有很多,但可能只有少數幾個起重要作用,所以利用註意機制讓重要的詞發揮更大的作用是本文的核心思想。整個網絡可以分為三層,兩個LSTM層分別用於單詞編碼和句子編碼,最上層是全連通的分類層。如果加上兩層關註,可以把網絡想象成五層。先簡單說壹下五層網絡的結構:
總的來說,這篇文章看起來很有趣,符合人們看文章的習慣。我們寫文章的時候也有中心詞和中心句。但這種層級結構是否會導致訓練速度慢或者訓練效果差,不得而知。最後,論文還提出先將文章按長度排序,進入壹個長度相近的批次,訓練速度加快了3倍。
提出了壹種基於圖形神經網絡的文本分類方法。這種方法的主要思想是將所有的文章及其詞匯放入壹個圖網絡中。圖網絡中的節點分為兩種:文字節點和文章節點。其中,連接單詞節點和文章節點的邊的權重用TF-IDF表示,而單詞之間的邊的權重用點互信息(PMI)表示。點互信息非常類似於傳統語言模型中條件概率的計算方法。而PMI采用滑動窗口法,條件概率直接統計在所有語料庫中,可以認為是壹個大窗口,然後就和PMI壹樣了。
a表示圖網絡的鄰接矩陣,如下:
GCN還可以包含多個隱藏層,每層的計算方法如下:
其中a '是歸壹化對稱鄰接矩陣,w0 ∈ r (m× k)是權重矩陣,ρ是激活函數,例如ReLU ρ(x) = max(0,x)。如上所述,可以通過疊加多個GCN層來合並高階鄰域信息:
其中j代表層數。
損失函數被定義為所有標記文檔的交叉熵誤差:
文本GCN運行良好有兩個原因:
但它也有壹些缺點:
總的來說,文章的思路還是挺有意思的,效果也還不錯。當妳第壹次見到GCN時,可能還是有點難以理解。妳可以參考以下資料進壹步研究:
基於圖卷積網絡的文本分類算法
如何理解圖不由自主網(GCN)?