赛题理解
- 赛题名称:零基础入门NLP之新闻文本分类
- 赛题目标:入门自然语言处理,熟悉相关机器学习和深度学习的方法和算法。
- 赛题任务:对来自互联网的新闻文本进行分类,也是一个典型字符识别的问题。
学习目标
- 理解赛题背景与赛题数据
- 下载赛题数据,理解赛题的思路
赛题数据
赛题的数据报名后即可下载,数据为新闻文本,并且进行了字符级别的匿名处理。数据文本中包含14个类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、市政、体育、星座、游戏、娱乐。
赛题数据构成:训练集20w条样本,测试集A包含5w条样本,测试集B包括5w条样本。字符匿名处理是为了预防人工标注测试集。
数据标签
赛题训练数据示例:
label | text |
---|---|
6 | 57 44 66 56 2 3 3 37 5 41 9 57 44 47 45 33 13 63 58 31 17 47 0 1 1 69 26 60 62 15 21 12 49 18 38 20 50 23 57 44 45 33 25 28 47 22 52 35 30 14 24 69 54 7 48 19 11 51 16 43 26 34 53 27 64 8 4 42 36 46 65 69 29 39 15 37 57 44 45 33 69 54 7 25 40 35 30 66 56 47 55 69 61 10 60 42 36 46 65 37 5 41 32 67 6 59 47 0 1 1 68 |
标签与类别对应关系如下:{‘科技’: 0, ‘股票’: 1, ‘体育’: 2, ‘娱乐’: 3, ‘市政’: 4, ‘社会’: 5, ‘教育’: 6, ‘财经’: 7, ‘家居’: 8, ‘游戏’: 9, ‘房产’: 10, ‘时尚’: 11, ‘彩票’: 12, ‘星座’: 13}
评测指标
评价标准为类别f1_score
的均值,将提交结果和实际类别进行对比,结果当然越大越好.
f1_score
是精确率和召回率的调和平均。我们知道精确率和召回率是在二分类问题中的定义:
首先将关注的类称为正类,其他类为负类,分类器的预测正确或不正确,4中情况出现的总数分别记为:
TP——将正类预测为正类
FP——将正类预测为负类
FN——将负类预测为正类
TN——将负类预测为负类, 于是
P
=
T
P
T
P
+
F
N
P=\frac{TP} {TP+FN}
P=TP+FNTP
R
=
T
P
T
P
+
F
P
R=\frac{TP} {TP+FP}
R=TP+FPTP
2
F
1
=
1
P
+
1
R
\frac{2}{F1} =\frac1P +\frac1R
F12=P1+R1
也就是
F
1
=
2
∗
P
∗
R
P
+
R
F1 = 2*\frac{P*R}{P+R}
F1=2∗P+RP∗R
当精确率和召回率都高,f1值就会很高。
使用sklearn的库函数可以完成f1值的计算
from sklearn.metrics import f1_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
f1_score(y_true, y_pred, average='macro')
读取数据
使用Pandas库读取数据,
train_df = pd.read_csv('./train_set.csv', sep='\t')
解题思路
赛题思路分析:赛题文本分类问题,根据每句的字符进行分类。由于数据匿名化的,不能直接使用中文分词,所以需要对匿名字符进行建模,涉及到特征提取
和分类模型
两个部分。
可能会用到的解题思路:
-
思路1:TF-IDF + 机器学习分类器
使用TF-IDF对文本提取特征,并使用分类器分类,分类器可以选择SVM、LR、或者XGboost -
思路2:FastText
FastText是入门级的词向量,使用Facebook提供的FastText工具,快速构建分类器 -
思路3:WordVec + 深度学习分类器
WordVec是进阶级的词向量,深度学习分类网络有TextCNN、TextRNN以及BiLSTM。 -
思路4:Bert词向量
Bert是高配级词向量,建模学习能力更加强大