cnn 文本分类

Posted tantao258

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cnn 文本分类相关的知识,希望对你有一定的参考价值。

1 引言

1.1 队伍简介

队伍名“读机器学习日报长大的”,三位成员分别是“凡人哥”、“雨辰酱”和“yuye2311”,均来自苏州大学自然语言处理实验室。

1.2 任务简介

2017年4月17号AI100发布了为期一个月的文本分类练习赛,数据集由文因互联提供,要求参赛者根据所提供的脱敏后的企业文本数据,筛选并判定该企业所属的类别,评价标准为Acc。其中,文本数据的内容,是对企业的经营范围和主营业务等基本信息的描述。数据文件描述如下图所示。
技术分享
抱(冲)着(着)学(奖)习(品)交(去)流(的)的心态,和实验室的另外两个小伙伴组队参加了这次练习赛,在线上的最终得分是0.869。
特别说明:排行榜上我们的得分是0.871,但由于使用了中文Wikipedia训练词向量,属于外部数据,该分数无效,在没有使用任何外部数据的情况下我们的得分为0.869。

2 方法

任务很容易理解,就是给定一段企业文本数据,要求分类器判定该企业所属的类别。简单地分析了一下语料,如下例所示:
> 公司是经批准依法从事融资性担保业务的金融机构,主营业务为融资性担保业务,包括贷款担保、农民工工资担保、票据承兑担保等业务。

可以看出,基本上一些关键词(如“金融”、“贷款”等)就可以确定该公司的类别,并不需要一个较长的上下文的理解,出于这样的考虑,我们选择CNNs作为本次任务的模型。

2.1 分词 & 词性标注

分词和词性标注工具我们比较了结巴分词和中科院的NLPIR,在实验中发现中科院的分词系统表现较好,处理后的文本如下所示。
> 公司/n 是/vshi 经/p 批准/v 依法/d 从事/vi 融资/vi 性/ng 担保/vn 业务/n 的/ude1 金融/n 机构/n ,/wd 主营业务/n 为/p 融资/vn 性/n 担保/vn 业务/n ,/wd 包括/v 贷款/n 担保/vn 、/wn 农民工/n 工资/n 担保/vn 、/wn 票据/n 承兑/vn 担保/vn 等/udeng 业务/n 。/wj “/wyz

2.2 模型

我们采用的模型是简单的CNNs,包括输入层,Look-up tables,卷积层,池化层和输出层,其中Look-up table包括词和词性,模型结构如下图所示。
技术分享

2.2.1 输入层

对于词向量的训练,由于任务规定不能使用外部数据,所以我们直接利用练习赛提供的7000余条句子训练词向量,工具是gensim,使用skip-gram模型,词向量的维度设置为256,并过滤掉频次低于3的词,最终训练出词向量的词表size为8616。
而对于词性向量我们使用随机的方式初始化,维度为64,词性表的size为96。

2.2.2 卷积层 & 池化层

卷积操作可以编码句子的局部特征,卷积核对句子卷积所得到的向量称为feature map,在实验中我们设置卷积数量为1000,窗口大小为3。
接着是池化层,使用的是常用的max pooling,提取出feature map中最重要的信息。

2.2.3 Softmax层

最后是模型的输出层,为了防止模型的过拟合,我们在全连接层之前加了一个dropout机制,同时对全连接层权值给予一个L2正则化的惩罚项,梯度更新法则选用Adam。

2.2.4 一些想法

我们在以上模型的基础上又尝试了以下一些简单的方法,不过在实验中并没有效果,由于时间关系也没有去深入分析,这里列出来供大家参考:

  • 过采样。统计语料可以发现,类别的分布并不平衡,我们希望通过采样增加一些少数类别实例的数量,采样方式只是简单地增加少数类别实例的数量。
  • 提取关键句子。观察语料可以发现,企业基本信息的描述中很多都带有“主营业务”、“主要”、“致力于”等关键词,通过这些关键词可以过滤掉一些无关的句子,一方面可以减少输入的噪音,另一方面可以提升模型的效率。

3 实验

实验中,我们抽取训练数据的80%作为训练集,20%作为开发集,用开发集上Acc最高的模型去标记测试数据。这里我们简单地做了一个融合:每次取不同的20%的数据作为开发集,剩余的数据作为训练集,这样共得到5组结果,最后将这5组结果进行投票融合,线上表现可以得到0点几个点的提升。

4 总结(附源码)

任务本身比较简单,也没有花太长时间去做,这里只是简单地做了个总结,希望和大家共同学习探讨。最后,附上源码,希望大家批评指正。









以上是关于cnn 文本分类的主要内容,如果未能解决你的问题,请参考以下文章

利用CNN进行中文文本分类(数据集是复旦中文语料)

多标签文本分类融合CNN-SAM与GAT的多标签文本分类模型

基于cnn和rnn的文本分类实践

基于cnn和rnn的文本分类实践

cnn 文本分类

Tensorflor实现文本分类