前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【练习赛】文本分类参赛总结

【练习赛】文本分类参赛总结

作者头像
AI科技大本营
发布2018-04-27 14:42:55
1.1K0
发布2018-04-27 14:42:55
举报

为期一个月的 AI100 金融文本分类练习赛完美收官啦!感谢小伙伴们的热情参与。 经过两周的策划与筹备,本次练习赛于4月18日正式上线,一共有25支参赛队伍,405次成绩提交。小伙伴们都表现得相当不错,大部分团队都取得了很好的成绩。 其中,取得第一名的“凡人哥”小伙伴,为大家无私分享了赛经,不光有算法模型分析,还有提升建议哦。

引言

1.1 队伍简介

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

1.2 任务简介

2017年4月17号AI100发布了为期一个月的文本分类练习赛(链接1),数据集由文因互联提供,要求参赛者根据所提供的脱敏后的企业文本数据,筛选并判定该企业所属的类别,评价标准为Acc。其中,文本数据的内容,是对企业的经营范围和主营业务等基本信息的描述。数据文件描述如下图所示。

抱(冲)着(着)学(奖)习(品)交(去)流(的)的心态,和实验室的另外两个小伙伴组队参加了这次练习赛,在线上的最终得分是0.869。

特别说明:排行榜上我们的得分是0.871,但由于使用了中文Wikipedia训练词向量,属于外部数据,该分数无效,在没有使用任何外部数据的情况下我们的得分为0.869。

▌方法

任务很容易理解,就是给定一段企业文本数据,要求分类器判定该企业所属的类别。简单地分析了一下语料,如下例所示:

> 公司是经批准依法从事融资性担保业务的金融机构,主营业务为融资性担保业务,包括贷款担保、农民工工资担保、票据承兑担保等业务。

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

2.1 分词 & 词性标注

分词和词性标注工具我们比较了结巴分词(链接2)和中科院的NLPIR(链接3),在实验中发现中科院的分词系统表现较好,处理后的文本如下所示。

> 公司/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 一些想法

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

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

▌实验

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

▌总结(附源码)

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

相关链接

链接1 http://competition.ai100.com.cn/html/game_det.html?id=24&tab=1 链接2 https://github.com/fxsjy/jieba 链接3 http://ictclas.nlpir.org/ 链接4 https://github.com/liu-nlper/DocumentClassification

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档