天池学习赛之新闻文本分类——Task1赛题理解

首先交代一下背景:最近,我报名参加了Datawhale零基础入门NLP的组队学习活动(非常nice的活动!),会以零基础入门NLP——新闻文本分类这个比赛作为实践学习NLP的相关知识,我会在这里打卡并分享自己的学习笔记!小伙伴们可以互关一波哈!比赛传送地址:https://tianchi.aliyun.com/competition/entrance/531810/introduction

本文目录

        • 一、赛题数据
        • 二、数据读取
        • 三、解题思路(学习重点!)

一、赛题数据

  • 主要背景

    赛题以匿名处理后的新闻数据为赛题数据。赛题数据为新闻文本,并按照字符级别进行匿名处理。整合划分出14个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐的文本数据。

  • 标签的对应的关系

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

  • 数据构成

    训练集20w条样本,测试集A包括5w条样本,测试集B包括5w条样本。

  • 评测指标

    评价标准为类别f1_score的均值,提交结果与实际测试集的类别进行对比,结果越大越好。

F 1 = 2 ∗ ( precision  ∗ recall ) ( precision + recall ) F 1=2 * \frac{(\text {precision } * \text {recall})}{(\text {precision}+\text {recall})} F1=2(precision+recall)(precision recall)

from sklearn.metrics import f1_score  # 可以通过sklearn完成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')

二、数据读取

  • 导入类库
import numpy as np
import pandas as pd
import warnings
# 忽略警告
warnings.filterwarnings('ignore')
# 多行显示
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
  • 数据读取
train_df = pd.read_table('./data/train.csv')
test_df = pd.read_table('./data/train.csv')
  • 简要分析
train_df.shape  result:(200000, 2)
test_df.shape  result:(50000, 1)
train_df.head()

天池学习赛之新闻文本分类——Task1赛题理解_第1张图片

train_df.info()

天池学习赛之新闻文本分类——Task1赛题理解_第2张图片


三、解题思路(学习重点!)

该题本质是一个文本分类问题,需要根据每句的字符进行分类。但赛题给出的数据是匿名化的,不能直接使用中文分词等操作,这个是赛题的难点。因此本次赛题的难点是需要对匿名字符进行建模,进而完成文本分类的过程。由于文本数据是一种典型的非结构化数据,因此可能涉及到特征提取分类模型两个部分。主要思路有:

  • TF-IDF + 机器学习分类器

    直接使用TF-IDF对文本提取特征,并使用分类器进行分类。在分类器的选择上,可以使用SVM、LR、或者XGBoost。

  • FastText

    FastText是入门款的词向量,利用Facebook提供的FastText工具,可以快速构建出分类器。

  • WordVec + 深度学习分类器

    WordVec是进阶款的词向量,并通过构建深度学习分类完成分类。深度学习分类的网络结构可以选择TextCNN、TextRNN或者BiLSTM。

  • Bert词向量

    Bert是高配款的词向量,具有强大的建模学习能力。

你可能感兴趣的:(自然语言处理)