今年暑假和朋友(知乎用戶)一起組隊參加了這個比賽,本來以為小比賽人少,沒想到參加的人會有幾千人:

當時是一邊在公司實習一邊參加這個比賽,差不多實習結束比賽也就結束了。最後我們隊伍取得第四名,雖有很多遺憾,畢竟大佬太多,所以在這裡也和隊友總結了一份Rank 4的方案,並開源了部分代碼,希望對剛接觸這個領域的小白新手能有些幫助~~~


競賽背景:

  • 2018年人工智慧的發展在運算智能和感知智能已經取得了很大的突破和優於人類的表現。而在以理解人類語言為入口的認知智能上,目前達觀數據自然語言處理技術已經可以實現文檔自動解析、關鍵信息提取、文本分類審核、文本智能糾錯等一定基礎性的文字處理工作,並在各行各業得到充分應用。
  • 自然語言處理一直是人工智慧領域的重要話題,而人類語言的複雜性也給 NLP 布下了重重困難等待解決。長文本的智能解析就是頗具挑戰性的任務,如何從紛繁多變、信息量龐雜的冗長文本中獲取關鍵信息,一直是文本領域難題。隨著深度學習的熱潮來臨,有許多新方法來到了 NLP 領域,給相關任務帶來了更多優秀成果,也給大家帶來了更多應用和想像的空間。
  • 此次比賽,達觀數據提供了一批長文本數據和分類信息,希望選手動用自己的智慧,結合當下最先進的NLP和人工智慧技術,深入分析文本內在結構和語義信息,構建文本分類模型,實現精準分類。未來文本自動化處理的技術突破和應用落地需要人工智慧從業者和愛好者的共同努力,相信文本智能處理技術因為你的演算法,變得更加智能!

比賽網址:

「達觀杯」文本智能處理挑戰賽-競賽信息-DC競賽?

www.dcjingsai.com圖標


解決方案:

對於這個比賽,我們嘗試了很多方法,最後我們發現了一些對解決這個賽題很不錯的解決方案

(當然,對於其他任務也可以起到不錯的效果)。總結如下:

  • 通過對於詞向量做一個增強,即利用word2vec與glove的差異性,構建一個魯棒性更高的詞語向量表徵。具體而言,我們對於每個詞通過word2vec以及glove分別訓練出兩個200維度的詞量,兩種向量相結合,表徵出更強的語義信息,從而得到一個 400維度的詞向量。大家也可以word2vec+glove+faxttext的組合,對於我來說,效果並不是很好,我覺得可能的原因是faxttext與word2vec的相似性很高,弱化了glove的向量表徵,同時,對於glove單獨的詞向量我也沒有嘗試過,大家也可以嘗試一下。

  • 對於模型的話,選擇了一個比較簡單的模型,兩個雙向的GRU模型,然後分別平均池化和最大池化,最後接到FC層。

  • 訓練的方式:訓練模型我們固定了100個epoch,然後使用早停的策略,根據驗證集上的性能,選擇驗證數據集上具有最佳準確率分數的模型作為最終模型,並評估其在測試數據集上的性能。

具體代碼如下:

  • 導入各個演算法庫。


  • 導入數據集,數據集路徑根據自己的路徑設置。

train=pd.read_csv("../input/train_set.csv")
test=pd.read_csv("../input/test_set.csv")


  • 詞向量維度選取以及句子長度截斷一般方法。

對於句子長度選擇:統計下每條句子的長度,一般可以看置信區間在90,95,98的句子長度,比如有三條句子,句子中分別有2000,1800,1900個詞。因此,基於此代碼np.percentile([2000,1800,1900],95),可以得到置信區間在95的句子長度為1990。

對於詞向量的維度:可以嘗試100,200,300等,對於不同的維度,測試模型的效果,從而選擇一個相對較好的維度。


  • 模型構建。

本次開源一個比較簡單的模型,利用雙層的BiGRU模型來學習文本的上下文表徵,然後通過池化操作,分別提取每一個時間戳的最大池化和平均池化。最後通過FC層的訓練,構建文本分類模型,實現精準分類。


  • 模型訓練。

對於模型的訓練,我們採用10折交叉進行訓練,為了減少時間,可以進行5折交叉進行訓練。訓練模型我們固定了100個epoch,然後使用早停的策略,根據驗證集上的性能,選擇驗證數據集上具有最佳準確率分數的模型作為最終模型,並評估其在測試數據集上的性能。


寫在後面:

本項目主要利用「達觀杯」文本比賽的數據,介紹了長文本分類問題的解決方法。我們通過利用兩層的BiGRU捕捉長文本的上下文信息,然後通過池化層捕捉最關鍵的文本特徵,接著兩層的全連接層對文本的關鍵特徵進行訓練,從而構建文本分類模型,實現精準分類。另外,我們通過10折交叉的方式,測試集線上的分數可以達到0.798,僅僅這個單模型可以達到線上前10的效果(在線上賽時)。另外,為了節省運行時間,可以將10折交叉變成5折交叉,減少運行時間。同時,也可以將BiGRU減少一層。

如果您需要運行此代碼:

可以參考開源代碼,github地址:github.com/hecongqing/2

公眾號:AI_TIMO(數據演算法之心)

知乎專欄:

知乎用戶?

www.zhihu.com
圖標

推薦閱讀:
相关文章