2018年“达观杯”复盘——任务1

赛题背景介绍

2018年人工智能的发展在运算智能和感知智能已经取得了很大的突破和优于人类的表现。而在以理解人类语言为入口的认知智能上,目前达观数据自然语言处理技术已经可以实现文档自动解析、关键信息提取、文本分类审核、文本智能纠错等一定基础性的文字处理工作,并在各行各业得到充分应用。
自然语言处理一直是人工智能领域的重要话题,而人类语言的复杂性也给 NLP 布下了重重困难等待解决。长文本的智能解析就是颇具挑战性的任务,如何从纷繁多变、信息量庞杂的冗长文本中获取关键信息,一直是文本领域难题。随着深度学习的热潮来临,有许多新方法来到了 NLP 领域,给相关任务带来了更多优秀成果,也给大家带来了更多应用和想象的空间。
此次比赛,达观数据提供了一批长文本数据和分类信息,希望选手动用自己的智慧,结合当下最先进的NLP和人工智能技术,深入分析文本内在结构和语义信息,构建文本分类模型,实现精准分类。未来文本自动化处理的技术突破和应用落地需要人工智能从业者和爱好者的共同努力,相信文本智能处理技术因为你的算法,变得更加智能!

此次有幸在Datawhale相关负责人的自发牵头下,我们对2018年“达观杯”文本挖掘比赛进行复盘,更加深入学习和理解文本挖掘。在此附上该开源社区公众号:
Datawhale

一、数据获取

数据下载链接:https://m.dcjingsai.com/competition-message?name=“达观杯”文本智能处理挑战赛&cmptId=229
数据集较大,共2.56G,分train_set.csv和test_set.csv

二、数据预处理

1. 数据简述

因此次学习需要我们将训练集以7:3分为训练集和验证集,对数据初步观测可以发现测试集为102277×4,4列分别是id,article,word_seg,class。
第一列是文章的索引(id),第二列是文章正文在“字”级别上的表示,即字符相隔正文(article);第三列是在“词”级别上的表示,即词语相隔正文(word_seg);第四列是这篇文章的标注(class)。其中article,word_seg因主办方保密需要,已做脱敏处理,实际这对于参赛选手来说更加便利,一般比赛需要选手自己利用分词工具(例如:结巴分词)进行分词,再进行建模预测。

2. 数据读取

数据较大,作为练习可以选择部分数据进行学习,如果硬件支持可选择全部导入,本次选择全部导入。

# 导入工具包
import pandas as pd
# 读取数据
train_data = pd.read_csv('datalab/14880/train_set.csv')
# 数据结构查看
train_data.head(5)
# 数据维度
len(train_data)           #102277行

在这里插入图片描述
id列作为文章的索引,即文章的唯一标识,我们无法作为特征,因此删除。

# 删除id
train_data.drop(columns=['id'], inplace=True)
train_data.head(5)

在这里插入图片描述

3.构造训练集和验证集

此次比赛的类型为文本分类,如果我们采用简单随机抽样可能会导致样本不均衡,影响模型性能。因此采用分层抽样,即以class作为分层变量,以7:3将train_set.csv的数据分为训练集和验证集。

#设置随机种子
set.seed(2019)
# 设置分组变量
gbr = train_data.groupby("class")
# 查看分组情况
gbr.groups      # 结果显示文本共有19个类别,分别含有样本5375、2901、8313、3824...就不一一列出
# 定义分层抽样函数
def typicalSampling(group, typicalFracDict):
    name = group.name
    frac = typicalFracDict[name]
    return group.sample(frac=frac)
# 分层抽样参数设置
typicalFracDict = {
    1: 0.7, 
    2: 0.7, 
    3: 0.7,
    4: 0.7,
    5: 0.7,
    6: 0.7,
    7: 0.7, 
    8: 0.7, 
    9: 0.7,
    10: 0.7,
    11: 0.7,
    12: 0.7,
    13: 0.7, 
    14: 0.7, 
    15: 0.7,
    16: 0.7,
    17: 0.7,
    18: 0.7,
    19: 0.7
}
# 调用typicalSampling( )函数实现分层抽样来构造训练集train_dataset
train_dataset = train_data.groupby(
    'class', group_keys=False
).apply(typicalSampling, typicalFracDict)
#构造验证集
train_index = train_dataset.index
test_dataset = train_data.drop(train_index)
# 查看训练集和验证集大小
len(train_dataset)
len(test_dataset)

在这里插入图片描述
在这里插入图片描述

三、 赛题理解和问题

1.赛题理解

根据主办方提供的已脱敏的数据,数据特征较少,因此可使用其它方法进行衍生特征,将原始特征和衍生特征进行随机选取进入不同的模型进行训练,当然也可以全部放入模型进行训练,最终以模型提升和得分选取特征。此次比赛为分类任务,可从传统的分类模型(如:LR,SVM,XGB,LGB等方法)和深度模型(如;RNN,CNN,RCNN等方法)两方面进行建模。简而言之,比赛为了得分可以各种模型尝试。再对单个模型进行参数调优,虽然有句话就做:“特征工程决定模型上限”,但此次比赛特征工作能做的很少,因此参数调优应该应用更多的时间。最后,可以使用模型融合的方法对得分进一步提升,同时需注意模型的乏化能力。

2.问题

1.因为我个人对于文本数据挖掘接触甚少,怎么去做衍生特征?
2.脱敏处理以后的数据,无法理解业务或者说这些文章本身所含的内容,如何实现精准分类?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值