Datawhale-新闻文本分类-task1-赛题理解
1、赛事内容
记录几点重要信息。 训练数据、标签、评价指标、结果提交标准、赛制说明。
1.1 赛题数据
赛题以新闻数据为赛题数据,数据集报名后可见并可下载。赛题数据为新闻文本,并按照字符级别进行匿名处理。整合划分出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}
1.2 评测标准
评价标准为类别f1_score的均值,选手提交结果与实际测试集的类别进行对比,结果越大越好。
计算公式:F1 = 2 * \frac{(precision * recall) }{(precision + 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')
1.3 结果提交
提交前请确保预测结果的格式与sample_submit.csv中的格式一致,以及提交文件后缀名为csv。
1.4 赛制说明
本次赛事分为两个阶段,分别为正式赛及长期赛。
正式赛(7月15日 - 9月8日)
1、报名成功后,参赛队伍通过天池平台下载数据,本地调试算法,在线提交结果。若参赛队伍在一天内多次提交结果,新结果版本将覆盖旧版本。
2、第一阶段(7月15日-9月7日)每天提供2次的评测机会,提交后将进行实时评测;排行榜每小时更新,按照评测指标得分从高到低排序;(排行榜将选择选手在本阶段的历史最优成绩进行排名展示,不做最终排名计算)
3、第二阶段(9月7日~9月8日)系统将在7日11:00提供新测试数据,并清空排行榜进行重新排名,参赛团队需要再次下载数据文件,每天提供2次的评测机会,提交后将进行实时评测;排行榜每小时更新
4. 最后一次排行榜更新时间为9月8日晚上20点,将以该榜单成绩作为依照,评选出正式赛期间的奖项名次,排行前13名选手在9月11日12:00前提交代码,代码审核通过后会公布最终获奖榜单,并予以奖励。
2、从赛事数据获得的信息
获得的信息几方面训练数据、标签、评价指标、结果提交标准、赛制说明。
2.1 训练数据
出题方为了预防选手人工标注测试集的情况,将比赛数据的文本按照字符级别进行了匿名处理。使文本变成数字和数字串。因此,数字串应该是包括了字、词、各种符号;然后赛题数据来源为收集互联网上的新闻,那么样本所对应的会存在同一篇文章或者一个样本来源于多篇文章的拼接;最后也是我认为很重要:通过匿名处理后的文本其实相当于英文文本,此时的中文与英文一样,都有了单词边界,也就是此次比赛不需要选手自己做分词,这个阶段出题方已经帮我们完成了,这对于我这样的新手来说是好事也是坏。所以对于这样的样本,可以直接开始统计词频。
2.2 标签
此次新闻分类有14个类别。结合实际生活看区分这些类别难度,就我个人感受,有些类别有着明显的特征,准确率应该是比较高。但是有些类别,不说模型判断,单就让人类来判断,一时半会也是无法做出某段文本应该属于哪个类别,比如社会类别与其它类别区别、财经与股票房产科技、娱乐与时尚体育,这些类别有些是包含与被包含关系,有些是交叉的。因此,对于这个nlp新手来说,觉得在模型后期可能需要做出一些取舍来平衡整体效果,从而提高一点点分。但是对于实际应用来说,场景被细化,应用时有各自的侧重点,可能会更容易达到想要的效果。
2.3 评价指标
出题方讲得非常清楚使用f1_score。计算公式:F1=2∗(precision+recall)(precision∗recall)
评价指标很清楚也很常用。但是我就喜欢将其与应用场景联想到一块。f1评价指标个人感觉是用来做平衡用的,公式中包括了精确和召回,f1是用来平衡精确和召回的。那么就很奇怪了。因此精确和召回两者是矛盾的,通常在生产中f1是用不上的,因为往往是需要一个指标就够了。还有更特殊的情况:比如我遇到的生产中只要你能预测到关注的那个类别就行了,只要特征构建的合理,这个类别的结果越多越好,那这个时候就不要指标了,直接看结果就搞定。
所以我认为出题方是替像我这样的新手想了很多,很感谢。在入门阶段,指标简单我觉得很满足。
2.4 结果提交标准
**测评形式为实时测试。应该是一秒上传结果,一秒出分数排名的形式**
第一是格式。与文件sample_submit.csv一致即可,注意后缀要为csv。
第二是赛制日期。时间分为两个阶段:第一阶段(7月15日-9月7日)、第二阶段(9月7日~9月8日)。
第三是比赛中会加入新的测试数据。注意在第二阶段开始时候,会提供一份新的测试数据,因此第二阶段提交的是这份新的测试数据的预测结果。具体日期为9月7日11:00提供新测试数据。
第四是每日可提交次数。每天提供2次的评测机会。
第五是排行榜。排行榜从第一阶段开始每小时更新,在第二阶段开始会清空第一阶段排行榜进行重新排名。整个正式赛的最后一次排行榜更新时间为9月8日晚上20点。
2.5 赛制说明
两种比赛。正式赛和长期赛。
datawhale组队学习的同学们是正式赛。
正式赛分为两个阶段。
第一阶段:(7月15日-9月7日)使用测试数据A提交
第二阶段:(9月7日~9月8日)使用测试数据B提交
在第二阶段开始会清空第一阶段排行榜进行重新排名。
结语:很多年前,机器已经有了自己的语言,人类日暮相盼可与之交流。但,种族隔离是地球生物难以翻越的高墙。于是,多年来无数火星人来到地球,施以援手。
那么,现在距离翻越这堵高墙还有多远呢?