一.比賽背景
在本次Datawhale的競賽當中,我們有一個具有20w條訓練集,5w條測試集的數據集。整個數據集里面包含了各種分類不同的文本,每一個文本在訓練集里都進行了標注label,這個label能夠讓我們知道訓練集里面的句子是屬於哪一個類別的數據。本次競賽的文本分類一共有14個類別的數據,分別是:財經,彩票,房產,家居,教育,科技,社會,時尚,時政,體育,星座,游戲和娛樂。那么我們來看看數據集長啥樣:
其中,在數據集中標簽的對應的關系如下:{'科技': 0, '股票': 1, '體育': 2, '娛樂': 3, '時政': 4, '社會': 5, '教育': 6, '財經': 7, '家居': 8, '游戲': 9, '房產': 10, '時尚': 11, '彩票': 12, '星座': 13}。這個數據集我們打開只會看到我們text的數據,而不會看到每一條text所對應的label,這是因為在csv文件當中標注的label是不會顯示出來的,我們需要將其使用pandas進行讀入,然后再通過dataframe來查看這個文件,就可以看到訓練集數據的label了!
二.測評指標
在本次比賽當中我們使用了f1_score的測評指標,什么是f1_scrore呢?我們來看看它的定義:
相當於f1_score就是精確率和召回率的一個調和均值,這個算法和物理當中求解電阻的方法非常相似,那么什么是精確率呢?
2.1精確率(Precision)
精確率的定義如下:
也就是真正確的樣本和我們模型所認為正確的樣本的比值。那么什么是召回率呢?
2.2召回率(Recall)
召回率的公式如下:
這個公式和precision的公式唯一不同的則是分母,用到了所有真正正樣本的數量,而precision用到的則是預測為預測為正類樣本的數量。把這兩個公式結合一下就可以得到我們的F1_score了,這是一個在文本分類領域很常見的指標。
三.提取數據
我們現在用pandas對數據進行讀取,代碼如下:
import pandas as pd train_df = pd.read_csv('train_set.csv', sep='\t')
單引號之內的字符串表示讀取訓練集的路徑,后面還可以加上nrow表示讀取csv文件的行數,一般情況下不使用這個參數,因為會對文件當中的所有數據進行讀取,如果只需要其中的一部分數據進行訓練,則只需對數據進行切片訓練即可。
四.解題思路
一般情況下我們會使用基於深度學習的方法處理自然語言處理的問題,因為基於深度學習的方法往往會表現得更好,當前最先進的方法則是word2vec和bert了,我們最好首先嘗試這兩個模型對文本處理。