学习目标
天池比赛:零基础入门NLP - 新闻文本分类
- 理解赛题背景与赛题数据
- 完成赛题报名和数据下载,理解赛题的解题思路
一、赛题数据
数据类型:
这次的数据类型不是文字,而是由文字转义出来的数字,需要将文本进行一个多(14)分类的预测,是一个比较基本的NLP分类任务。
label | text |
---|---|
6 | 57 44 66 56 2 3 3 37 5 41 9 55 |
数据大小:
训练集20w条样本,测试集A包括5w条样本,测试集B包括5w条样本。
数据标签:
在数据集中标签的对应的关系如下:
{‘科技’: 0, ‘股票’: 1, ‘体育’: 2, ‘娱乐’: 3, ‘时政’: 4, ‘社会’: 5, ‘教育’: 6, ‘财经’: 7, ‘家居’: 8, ‘游戏’: 9, ‘房产’: 10, ‘时尚’: 11, ‘彩票’: 12, ‘星座’: 13}
评测标准:
评价标准为类别f1_score
的均值,使用的是macro
关于f1_score
,macro
,micro
的理解可以参考我的简书博文
计算公式: F 1 = 2 ∗ ( precision ∗ recall ) ( precision + recall ) F1 = 2 * \frac{(\text {precision} * \text {recall}) }{(\text {precision} + \text {recall})} F1=2∗(precision+recall)(precision∗recall)
可以通过sklearn
完成f1_score
计算:
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')
二、赛题理解
与常规文本分类的区别:
这次的赛题不是文字而是数字,相当于embedding之前的结果,主要的区别还是不能够分词了,可能要从字的向量维度进行思考。也不用建立一个字典了,代码工程似乎变轻松了一点。
建模思路:
- 思路1:TF-IDF + 机器学习分类器
直接使用TF-IDF对文本提取特征,并使用分类器进行分类。
- 思路2:FastText
FastText是入门款的词向量,利用Facebook提供的FastText工具,可以快速构建出分类器。
- 思路3:WordVec + 深度学习分类器
WordVec是进阶款的词向量,并通过构建深度学习分类完成分类。深度学习分类的网络结构可以选择TextCNN、TextRNN或者BiLSTM。
- 思路4:Bert词向量
Bert是高配款的词向量,具有强大的建模学习能力。