NLP入门--新闻文本分类Task1

背景介绍

本次学习任务是基于天池的nlp入门比赛–零基础入门之NLP文本新闻分类,该赛题以当下非常火热的自然语言处理为背景,要求选手使用模型对各种新闻文本语料进行分类,以提高分类精度为目标。

数据下载和分析

数据下载地址为 数据下载链接,该数据下载需要先报名对应的比赛,如下图所示点击报名完成相应报名步骤即可。

从官网上下载得到的数据只是提供了压缩包的下载地址,需要自行去下载然后解压,最终会得到这样的几个数据,包括训练集和测试集。
在这里插入图片描述
其中,训练集包括两列数据,一列是文本对应的分类标签,标签对应类别为:

{‘科技’: 0, ‘股票’: 1, ‘体育’: 2, ‘娱乐’: 3, ‘时政’: 4, ‘社会’: 5, ‘教育’: 6, ‘财经’: 7, ‘家居’: 8, ‘游戏’: 9, ‘房产’: 10, ‘时尚’: 11, ‘彩票’: 12, ‘星座’: 13}

另一列则是文本内容经加密之后得到的字符串/数字串(此处加密是防止选手人工标记测试集),通过模型在训练集上学习之后,再去预测测试集的文本标签。评价标准为类别f1_score的均值,选手提交结果与实际测试集的类别进行对比,结果越大越好。
  f 1 s c o r e = 2 ∗ ( p r e c i s i o n ∗ r e c a l l ) ( p r e c i s i o n + r e c a l l ) \ f1score= 2*\frac{(precision∗recall)}{(precision+recall)}  f1score=2(precision+recall)(precisionrecall)
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');

数据读取

在python中调用代码,简单看一下数据格式。

import pandas as pd
import sys
import csv
csv.field_size_limit(500 * 1024 * 1024)#避免因数据格式受限而无法读取数据
train_df = pd.read_csv('C:/Users/Administrator/Desktop/wenbenfenlei/train_set.csv', sep='\t', nrows=200596)
train_df.head();

前五行数据读取结果:

labeltext
22967 6758 339 2021 1854 3731 4109 3792 4149 15…
114464 486 6352 5619 2465 4802 1452 3137 5778 54…
37346 4068 5074 3747 5681 6093 1777 2226 7354 6…
37159 948 4866 2109 5520 2490 211 3956 5520 549…
23646 3055 3055 2490 4659 6065 3370 5814 2465 5…

基本的数据描述:

%pylab inline
train_df['text_len'] = train_df['text'].apply(lambda x: len(x.split(' ')))
print(train_df['text_len'].describe());

Populating the interactive namespace from numpy and matplotlib
count 200000.000000
mean 907.207110
std 996.029036
min 2.000000
25% 374.000000
50% 676.000000
75% 1131.000000
max 57921.000000
Name: text_len, dtype: float64

从该结果中可以看出,这次比赛给出的数据集平均字符长度为907,最短的文本只有2个字符,最长的达到5万多字符。
再将文本长度进行可视化就更一目了然了:
在这里插入图片描述
可见绝大部分文本长度都分布在2000以内。

解题思路

简单直接款1.TF-IDF+机器学习分类器(SVM\LR\XGBoost)
入门版2.FastText(入门款的词向量工具)
进阶版3.WordVec+深度学习分类器
高配版4.Bert词向量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值