基于句式元學習的Twitter分類
人工智能技術與咨詢?
本文來自《北京大學學報(自然科學版)》,作者閆雷鳴等
摘要?針對多類別的社交媒體短文本分類準確率較低問題, 提出一種學習多種句式的元學習方法, 用于改善 Twitter 文本分類性能。將 Twitter 文本聚類為多種句式, 各句式結合原類標簽, 成為多樣化的新類別, 從而原分類問題轉化為較多類別的 few-shot 學習問題, 并通過訓練深層網絡來學習句式原型編碼。用多個三分類Twitter 數據來檢驗所提 Meta-CNN 方法 , 結果顯示, 該方法的學習策略簡單有效, 即便在樣本數量不多的情況下, 與傳統機器學習分類器和部分深度學習分類方法相比, Meta-CNN 仍能獲得較好的分類準確率和較高的F1值。
關鍵詞?元學習; 少次學習; 情感分析; 卷積神經網絡
對微博和Twitter這類社交平臺的短文本評論信息來說, 在多分類問題上, 即便采用深度學習方法, 分類準確率不高仍然是困擾業界的一個難題。社交平臺的文本評論信息字數少、語法格式自由、大量使用縮略語和新詞語等, 隱喻、反諷和極性遷移等句型經常出現, 各類型樣本數量分布很不平衡,造成社交平臺短文本分類的困難。以 SemEval 2017的Twitter 分類比賽結果為例, 前三名系統雖然在二分類任務(正向、負向)上準確率都超過 86%, 但是對于三分類問題(正向、負向和中性), 最好的系統準確率僅為 65.8%, F1-score 為 68.5%[1]。有標簽訓練樣本不足是性能偏低的主要原因之一。隨著分類類別的增加, 樣本分布不平衡的情況進一步加劇,總體需要的訓練樣本進一步增加。雖然遷移學習策略希望通過遷移到其他領域, 利用已有的領域知識來解決目標領域中僅有少量有標記樣本的問題[2],但由于社交媒體短文本長度短、形式自由以及常違背語法的特點, 難以遷移其他源領域的知識。分類模型的泛化能力不足是另一個主要原因。由于句型的靈活多變, 詞語的組合形式難以窮盡, 訓練樣本不可能覆蓋所有的語義形式, 即測試樣本中有大量形式沒有出現在訓練樣本中, 因此模型無法正確識別。
目前在社交媒體的短文本情感分析方面, 特別是多級情感分類方面的研究, 仍然面臨有標簽樣本數量不足、分類模型泛化能力不足的挑戰。本文提出一種適合少樣本、多類別的 Twitter 分類框架, 該框架基于 few-short learning 策略, 利用 deep CNNs提取樣本的 meta-features, 用于識別訓練樣本中未出現的類型, 從而提高分類模型的泛化(generalization)能力。
1 相關研究
詞向量被設計成詞的低維實數向量, 采用無監督學習方法, 從海量的文本語料庫中訓練獲得, 語法作用相似的詞向量之間的距離相對比較近[3], 這就讓基于詞向量設計的一些模型能夠自帶平滑功能, 為應用于深層網絡帶來便利[4]。一些將詞向量與長短期記憶網絡(LSTM)相結合的研究都獲得明顯的性能改善[5-6]。Kim[7]設計的文本卷積神經網絡, 雖然只有一層卷積層, 但其分類性能顯著優于普通的機器學習分類算法, 例如最大熵、樸素貝葉斯分類和支持向量機等。Tang 等[8]基于深度學習,設計 Twitter 情感分析系統 Cooolll, 將詞向量與反映 Twitter 文法特點的特征(例如是否大寫、情感圖標、否定詞、標點符號簇集等)進行拼接, 以求輸入更多有效的特征, 在 SemEval 2104 國際語義評測競賽中獲得第 2 名。深度學習方法需要大量的訓練樣本, 增加訓練樣本是非常有效的提高分類準確率的方法, 但是成本很高, 甚至在很多情況下難以實施, 制約了基于深度學習的文本分類方法的性能。
Few-shot 學習[9-10]是近年興起的一種新型元學習技術, 使用較少樣本訓練深層網絡模型, 主要應用于圖像識別領域, 目前只有非常少的研究將其用于文本分析。這種方法首先以zero-shot (零次)學習和 one-shot (一次)學習出現, 逐步發展成 few-shot學習。此類方法的基本思想是, 將圖片特征和圖片注釋的語義特征非線性映射到一個嵌入空間, 學習其距離度量。當輸入未知樣本或未出現在訓練集中的新類別樣本時, 計算樣本與其他已知類別的距離,判斷其可能的類別標簽。雖然有標簽的訓練樣本較少, 但此類方法仍然在圖像識別領域(特別是在圖片類別達到數百到 1000 的分類任務中)獲得成功。Zhang 等[11]研發了一種基于最大間隔的方法, 用于學習語義相似嵌入, 并結合語義相似, 用已知類別的樣本度量未知類別樣本間的相似性。Guo 等[12]設計了一種新穎的 zero-shot 方法, 引入可遷移的具有多樣性的樣本, 并打上偽標簽, 結合這些遷移樣本訓練 SVM, 實現對未知類別樣本的識別。Oriol 等[13]基于 metric learning 技術和深層網絡的注意力機制,提出一種 matching 網絡機制, 通過支持集學習訓練CNN 網絡。Rezende 等[14]將貝葉斯推理與深層網絡的特征表示組合起來, 進行 one-shot 學習。Koch 等[15]訓練了兩個一模一樣的孿生網絡進行圖像識別, 獲得良好的效果。一些學者基于“原型” (prototype)概念設計 few-shot 學習方法, 但是對原型的定義不一致。Snell 等[16]提出原型網絡概念, 將滿足k近鄰的數據對象非線性映射到一個嵌入空間, 該空間中的原型是同類標簽樣本映射的平均值向量, 通過計算未知樣本與原型的距離來判別類標簽。Blaes等[9]定義的全局原型是一種元分類器, 希望利用全局特征對圖像進行分類。Hecht 等[17]的研究顯示, 基于原型的深度學習方法在訓練事件和內存開銷方面都比普通深度學習方法有優勢。
2 文本句式元學習
受 meta-learning 和圖像 few-shot 學習的啟發,本文提出一種文本句式元學習方法。基本思想為,將多種典型的語句變化視為新的類別和“句式”, 即將原本只有幾種類別標簽的文本樣本集合, 改造為多種新的類別——“句式”style。劃分出更多的類別后, 強迫深層模型學習細粒度的語法和語義特征。本文方法包含 4 個基礎部分:句式提取、訓練片段episode 構造、句式深層編碼以及分類模型 Finetunning。方法框架如圖1所示。
2.1 提取句式
首先, 將較少類別的文本分類問題轉化為較多類別的 few-shot 學習問題。本文根據距離相似度,用k均值聚類方法, 將訓練樣本劃分為若干簇集,將每個簇集視為一種文本類型, 并進一步劃分為句式。
定義1?句式:設類標簽有K種,L={1,2,...,K},聚類獲得的文本類型(句型)有M種,M?K,不同類型和不同類標簽組合為一種新的類別, 稱為“句式”(style)。樣本集合由原來的K種樣本, 重新劃分為N=M×K種句式, 表示為 {sik|1 ≤i≤M,1≤k≤K},新的類別標簽為L′={(i,k)|0 <i≤N,k∈L},k為樣本原始類標簽, 如圖 2 所示。訓練集中對應新標簽的樣本稱為該句式的支持樣本。
圖1 句式元學習框架
Fig.1 Sentence styles meta-learning framework
圖2 句式標簽劃分示意圖
Fig.2 Example for sentence style labeling
定義2?元句式:每種句式的支持樣本集合的中心樣本(即代表樣本)稱為元句式。元句式可以用樣本向量的平均值表示。
新的句式數量大于原來的類別, 相應地, 支持每種句式的有標簽樣本減少了, 甚至可能有的句式只有一個樣本。對這類特殊的句式, 可以根據聚類發現的離群點進行添加或刪除。我們需要為每種句式構造訓練集, 相同句式標簽的樣本稱為該句式的“候選支持集”。將這些樣本輸入深層網絡, 再進行有監督模型訓練。需要注意的是, 劃分為多種句式后, 導致每種不同句式的支持樣本數大大減少。將原分類任務直接轉變為支持樣本較少的多分類問題, 不利于提高分類性能。鑒于此, 本文方法借鑒圖像多分類問題的 few-shot 學習思想, 劃分多種句式的目的不是直接進行多分類學習, 而是用于發現多個具有代表意義的句型原型“prototype”, 通過比較未知類別樣本與句型 prototype 的距離, 提高分類準確率。
鑒于缺少有標簽的句型樣本, 本文采用一種簡單直接的策略, 根據語句相似距離, 用k均值聚類方法提取句式。用距離相似發現句式是基于詞向量模型將語句轉化為向量。詞向量的優點是可在一定程度上表達語義或語法作用相似, 向量疊加時仍然可以保持原有相似性。因此, 聚類方法不能明確發現否定句、感嘆句、隱喻和反諷等實際句型, 但是可以從向量相似的角度, 將語義和結構上相似的樣本聚為一類。我們采用 Doc2Vec 模型, 將語句轉化為向量, 將不同長度的語句都轉化為相同長度的向量。實現過程如下。
1)分詞, 訓練一個 Doc2Vec 模型, 將每個樣本轉化為一個向量, 長度為300。
2)設定k, 調用k均值算法, 對文本向量進行聚類。
3)為每個樣本分配新的類別編號=聚類編號×10+原類別編號; 每種新類別為一種“句式”。
4)輸出聚類結果。
2.2 訓練片段(episode)的構造
在 few-shot 學習中, 模型訓練過程由多個episode 構成。k-shot 學習包含K個片段。通常, 對于N類“句式”, 每種句式的樣本都平均劃分為K份,每個 episode 應該包含 1 份樣本作為訓練集, 以及 1份樣本作為測試集。為了測試模型對新類別的識別能力, 選擇訓練集中未出現的“句式”作為測試集樣本。
2.3 元句式深層編碼
元句式深層編碼即學習句式原型。基本思想是, 將N種文本句式的樣本向量, 經深層網絡(例如CNN)映射到一個嵌入空間RD,在DR內通過分類算法, 不斷調整網絡權值, 使得該深層網絡根據類別標簽和距離, 學習可區分的不同句式的非線性編碼。句式原型經深層編碼, 被映射到一個非線性空間, 如圖 3 所示, 每個區域對應于一種句式原型,灰色圓點表示該句式的支持樣本, 黑色圓點為該句式的代表點, 即元句式。圖 3 中空心圓圈表示一個未知標簽的新樣本經編碼進入嵌入空間, 可以通過計算到各個原型代表點的距離來判斷類標簽。
用于編碼的深層模型, 采用 CNN 網絡構造。基本策略為, 首先用聚類后的、多樣化句式的數據有監督地訓練網絡學習多種句式, 然后使用原始數據優化模型的分類性能, 在已有 CNN 權重的基礎上,訓練一個新的 softmax 分類層, 對原始數據進行分類。
基于 softmax 函數, 分類目標函數可以定義為,對于未知樣本x*,其屬于任意類的概率:
根據極大似然假設, 基于交叉熵的損失函數為
圖3 句式原型與映射空間
Fig.3 Style prototypes and embedding space
綜上所述, 本文所提方法屬于一種 few-shot 學習策略, 可將此類方法視為一種元特征學習方法,側重特征向量的學習, 發現樣本的原型 prototype,其優化函數通常不以距離為直接目標, 這與 metriclearning 方法有一定的區別。在實現上也與 metriclearning 有所不同, few-shot 學習需要基于深層網絡搭建模型。但是從最新的研究成果[9-10]來看, 由于few-shot 學習通常利用k近鄰思想進行最后的分類,因此 metric-learning 方法對于 few-shot 有很強的借鑒意義, 二者的融合應該是一種必然的趨勢。本文所提“元句式”的概念, 更類似于一種句子“prototype”, 基本思想是發現并深層編碼這些基本prototype, 計算樣本與 prototype 樣本的距離, 通過加權來判斷樣本類別。
3 實驗
使用 3 個公開的 Twitter 數據, 驗證本文的方法,并對結果進行分析。實驗服務器配置為 12 核至強CPU, 256 GB 內存, 8顆NVIDIA Tesla K20C GPU,操作系統為 Ubuntu 14.0。代碼基于 Tensor-flow 和Keras, 使用Python2.7實現。
本文模型的基本結構包括2層1維卷積層、過濾器 128 個, 過濾器尺寸為 5, 后接 Max-pooling 層和 Dropout 層, 再接一層全連接的神經網絡, 激活函數選擇 Relu, 最后是一個 softmax 分類層。參數優化使用 Adam, 交叉熵作為損失函數, batch size 取50。文本聚類時, 利用 gensim 中的 Doc2Vec 工具實現語句向量化。訓練分類模型時, 首先使用聚類后的、增加了句式標簽的數據進行模型的預訓練, 再使用原始的數據集, 用一個新的 softmax 分類層進行fine-tunning。
3.1 數據集
1)MultiGames。該數據集為游戲主題的 Twitter數據, 共 12780 條, 由人工進行情感類型標注, 包括正向 3952 條、負向 915 條和中性 7913 條游戲玩家評論。該數據集由加拿大 UNB 大學 Yan 等[18]發布。該數據集中的評論多俚語、網絡用語以及部分反話。
2)Semeval_b。該數據源自國際語義評測大會SemEval-2013 發布的比賽數據[19], 后經不斷更新,所有數據由人工標注為正向、負向和中性 3 種情感類別。由于部分 tweets 的鏈接失效, 我們共下載7967條數據。
3)SS-Tweet。Sentiment Strength Twitter (SSTweet)數據集共包含 4242 條人工標注的 tweets 評論。該數據最早由 Thelwall 等[20]發布, 用于評估基于SentiStrenth的情感分析方法。Saif 等[21]對該數據重新注釋為正向、負向和中性 3 種情感類別。本文實驗所用數據包括 1252 條正向、1037 條負向和1953條中性評論。
所有數據集均隨機劃分為 3 個部分, 驗證集和測試集各占 15%, 其余作為訓練集。
3.2 實驗結果與分析
本文以代價敏感的線性支持向量機為基準方法, 特征提取選擇過濾停止詞、詞性標注(POS)、情感符號 Emoticon 和 Unigram。本文方法命名為Meta-CNN。用于對比的深度學習方法包括基于自動編碼器的 DSC[18]、文本 Kim-CNN[7]和一個兩層一維卷積層構造的 CNN 模型 2CNN1D。DSC 方法仍然提取 POS 和 Emoticon特征, 并過濾停止詞, 然后輸入自動編碼器進行重編碼。Kim-CNN 雖然僅包含一層卷積操作, 但在文本分類中常能獲得較好的準確率。2CNN1D 的網絡結構與本文用于預訓練的 CNN 結構相同, 與本文 Meta-CNN 方法進行比較, 用于驗證 Meta-CNN 是否能夠在雙層 CNN 網絡基礎上改善分類性能。基于 CNN 的方法均不做停止詞過濾等預處理, 分詞后, 直接使用 Google 的預訓練 word2vec 包 GoogleNews-vectors-negative300-SLIM, 轉換為詞向量構成的語句矩陣, 詞向量長度為300。對所有語句樣本, 利用 Padding 操作將長度統一轉化為 150 個詞, 不足 150 個詞時補 0。各方法獲得的最佳準確率如表1所示。
由于數據分布不均衡, 不同類別樣本數量有較大差距, 特別是負向標簽樣本, 通常比中性標簽樣本少很多。數據分布的不均衡性對分類器的準確率有較大的負面影響。為了更加客觀地進行評價, 參照 SemEval 對多分類問題上的評價標準, 我們使用正向(Positive)、負向(Negative)樣本的平均 F1 值作為多分類任務的評價方法。指標計算方法如下:
各方法的值如表 2 所示。可以看出, 基于深度學習方法的準確率優于線性 SVM。本文提出的 Meta-CNN 方法在 3 個數據集上均取得最高的準確率。與 2CNN1D 分類模型相比, 本文 Meta-CNN方法的準確率大大提高, 說明本文方法在預訓練模型的基礎上進行調優, 對改善分類性能是有效的。
樣本數量對模型的性能影響明顯。SS-Tweet數據的樣本較少, 從 DSC, Kim-CNN 和 2CNN1D的分類準確率來看, 并未顯著優于線性 SVM。但是,本文方法仍然獲得較好的分類性能。
句式種類k的取值對本文方法的準確率有較明顯的影響, 如圖 4 所示。對于數據集 MultiGames, 當句式的聚類數k=10 時, 可以獲得 91.6%的準確率。Semeval_b 和 SS-Tweet 數據在k=5 時獲得較優的準確率。隨著k值增大, 準確率有所波動, 總趨勢下降。這是因為, 隨著k值增大, 分類的類別急劇增大, 預訓練模型的分類準確率下降, 從而影響 finetunning時的模型性能。
表1 準確率對比
Table 1 Accuracy comparision
表2 正負向樣本平均F1對比
Table 2?
comparision
圖4 句式數量k對分類性能的影響
Fig.4 Relationship between style numberkand accuracy
從實驗結果來看, 在句式劃分基礎上實現的句式原型學習, 在一定程度上改善了分類性能, 說明合理的句式劃分有助于提取句子結構特征, 這些特征的引入改善了文本分類性能。但是, 一定程度的句式數量增加導致類別數量的增加, 顯然對分類性能有負面影響。本文基于聚類的句式劃分方法不能對句式進行精確的劃分, 因此句式數量越多, 句型特征提取的誤差積累越大。合理的句式數量需要通過實驗確定。增加訓練樣本數量是實踐中一種有效提高分類性能的策略。但是, 對于文本分類任務來說, 多少樣本數量才是足夠的?對這一問題, 目前在理論上沒有明確的結論。從實踐和國際上一些 Twitter 分類競賽結果來看, 數萬條訓練樣本還不足以保證獲得滿意的分類性能, 對于可視為多類別分類的Twitter 情感程度劃分任務, 準確率往往只能達到65%左右。如果成本在可承受的范圍內, 不能通過數百萬條訓練樣本來訓練分類樣本, 那么設計少樣本學習策略來提升分類器性能, 就成為值得研究的方向。本文就是針對少樣本的文本分類研究的一種嘗試。
4 結語
本文基于元學習和 few-shot 學習策略, 提出一種文本元學習框架, 通過學習不同的句式特征, 提取更為細粒度的文本語句特征, 以期改善文本分類性能。多個數據集的實驗結果證實了本文所提方法的有效性, 對于有標記樣本較少情況下的多類別文本分類問題, 使用元學習策略, 可以改善多類別文本分類的性能。同時, 本文對“句式”的定義仍舊比較粗糙, 實驗結果顯示過多的句式數量, 不利于提高分類性能。后續研究方向包括:改造其他 metalearning 方法, 使之適用于文本分類任務; 在與本文方法多角度的比較中, 改進本文所提方法; 提出更加精細的句式劃分策略, 以便準確地提取更多的有益語句特征。
關注微信公眾號:人工智能技術與咨詢。了解更多咨詢!
編輯:fqj
評論
查看更多