Task4 基于深度學習的文本分類1

基于深度學習的文本分類

與傳統(tǒng)機器學習不同撤嫩,深度學習既提供特征提取功能,也可以完成分類的功能。從本章開始我們將學習如何使用深度學習來完成文本表示常柄。

學習目標

  • 學習FastText的使用和基礎原理
  • 學會使用驗證集進行調(diào)參

文本表示方法 Part2

現(xiàn)有文本表示方法的缺陷

在上一章節(jié),我們介紹幾種文本表示方法:

  • One-hot
  • Bag of Words
  • N-gram
  • TF-IDF

也通過sklean進行了相應的實踐搀擂,相信你也有了初步的認知西潘。但上述方法都或多或少存在一定的問題:轉(zhuǎn)換得到的向量維度很高,需要較長的訓練實踐哨颂;沒有考慮單詞與單詞之間的關系喷市,只是進行了統(tǒng)計。

與這些表示方法不同威恼,深度學習也可以用于文本表示品姓,還可以將其映射到一個低緯空間寝并。其中比較典型的例子有:FastText、Word2Vec和Bert腹备。在本章我們將介紹FastText衬潦,將在后面的內(nèi)容介紹Word2Vec和Bert。

FastText

FastText是一種典型的深度學習詞向量的表示方法植酥,它非常簡單通過Embedding層將單詞映射到稠密空間镀岛,然后將句子中所有的單詞在Embedding空間中進行平均,進而完成分類操作惧互。

所以FastText是一個三層的神經(jīng)網(wǎng)絡哎媚,輸入層、隱含層和輸出層喊儡。

下圖是使用keras實現(xiàn)的FastText網(wǎng)絡結構:

FastText在文本分類任務上拨与,是優(yōu)于TF-IDF的:

  • FastText用單詞的Embedding疊加獲得的文檔向量,將相似的句子分為一類
  • FastText學習到的Embedding空間維度比較低艾猜,可以快速進行訓練

如果想深度學習买喧,可以參考論文:

Bag of Tricks for Efficient Text Classification, https://arxiv.org/abs/1607.01759

基于FastText的文本分類

FastText可以快速的在CPU上進行訓練,最好的實踐方法就是官方開源的版本: https://github.com/facebookresearch/fastText/tree/master/python

  • pip安裝
pip install fasttext

兩種安裝方法都可以安裝匆赃,如果你是初學者可以優(yōu)先考慮使用pip安裝淤毛。

  • 分類模型
import pandas as pd
from sklearn.metrics import f1_score

# 轉(zhuǎn)換為FastText需要的格式
train_df = pd.read_csv('../input/train_set.csv', sep='\t', nrows=15000)
train_df['label_ft'] = '__label__' + train_df['label'].astype(str)
train_df[['text','label_ft']].iloc[:-5000].to_csv('train.csv', index=None, header=None, sep='\t')

import fasttext
model = fasttext.train_supervised('train.csv', lr=1.0, wordNgrams=2, 
                                  verbose=2, minCount=1, epoch=25, loss="hs")

val_pred = [model.predict(x)[0][0].split('__')[-1] for x in train_df.iloc[-5000:]['text']]
print(f1_score(train_df['label'].values[-5000:].astype(str), val_pred, average='macro'))
# 0.82

此時數(shù)據(jù)量比較小得分為0.82,當不斷增加訓練集數(shù)量時算柳,F(xiàn)astText的精度也會不斷增加5w條訓練樣本時低淡,驗證集得分可以到0.89-0.90左右。

如何使用驗證集調(diào)參

在使用TF-IDF和FastText中瞬项,有一些模型的參數(shù)需要選擇蔗蹋,這些參數(shù)會在一定程度上影響模型的精度,那么如何選擇這些參數(shù)呢囱淋?

  • 通過閱讀文檔猪杭,要弄清楚這些參數(shù)的大致含義,那些參數(shù)會增加模型的復雜度
  • 通過在驗證集上進行驗證模型精度妥衣,找到模型在是否過擬合還是欠擬合

這里我們使用10折交叉驗證皂吮,每折使用9/10的數(shù)據(jù)進行訓練,剩余1/10作為驗證集檢驗模型的效果税手。這里需要注意每折的劃分必須保證標簽的分布與整個數(shù)據(jù)集的分布一致蜂筹。

label2id = {}
for i in range(total):
    label = str(all_labels[i])
    if label not in label2id:
        label2id[label] = [i]
    else:
        label2id[label].append(i)

通過10折劃分,我們一共得到了10份分布一致的數(shù)據(jù)芦倒,索引分別為0到9狂票,每次通過將一份數(shù)據(jù)作為驗證集,剩余數(shù)據(jù)作為訓練集熙暴,獲得了所有數(shù)據(jù)的10種分割闺属。不失一般性,我們選擇最后一份完成剩余的實驗周霉,即索引為9的一份做為驗證集掂器,索引為1-8的作為訓練集,然后基于驗證集的結果調(diào)整超參數(shù)俱箱,使得模型性能更優(yōu)国瓮。

本章小結

本章介紹了FastText的原理和基礎使用,并進行相應的實踐狞谱。然后介紹了通過10折交叉驗證劃分數(shù)據(jù)集乃摹。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市跟衅,隨后出現(xiàn)的幾起案子孵睬,更是在濱河造成了極大的恐慌,老刑警劉巖伶跷,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掰读,死亡現(xiàn)場離奇詭異,居然都是意外死亡叭莫,警方通過查閱死者的電腦和手機蹈集,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雇初,“玉大人拢肆,你說我怎么就攤上這事【甘” “怎么了郭怪?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長呻畸。 經(jīng)常有香客問我移盆,道長,這世上最難降的妖魔是什么伤为? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任咒循,我火速辦了婚禮,結果婚禮上绞愚,老公的妹妹穿的比我還像新娘叙甸。我一直安慰自己,他們只是感情好位衩,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布裆蒸。 她就那樣靜靜地躺著,像睡著了一般糖驴。 火紅的嫁衣襯著肌膚如雪僚祷。 梳的紋絲不亂的頭發(fā)上佛致,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音辙谜,去河邊找鬼俺榆。 笑死,一個胖子當著我的面吹牛装哆,可吹牛的內(nèi)容都是我干的罐脊。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼蜕琴,長吁一口氣:“原來是場噩夢啊……” “哼萍桌!你這毒婦竟也來了?” 一聲冷哼從身側響起凌简,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤上炎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后号醉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體反症,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年畔派,在試婚紗的時候發(fā)現(xiàn)自己被綠了铅碍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡线椰,死狀恐怖胞谈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情憨愉,我是刑警寧澤烦绳,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站配紫,受9級特大地震影響径密,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜躺孝,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一享扔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧植袍,春花似錦惧眠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春秀存,著一層夾襖步出監(jiān)牢的瞬間捶码,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工或链, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宙项,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓株扛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親汇荐。 傳聞我的和親對象是個殘疾皇子洞就,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361