标签:类别 融合 dia 特征 融资 无效 github ada 理解
队伍名“读机器学习日报长大的”,三位成员分别是“凡人哥”、“雨辰酱”和“yuye2311”,均来自苏州大学自然语言处理实验室。
2017年4月17号AI100发布了为期一个月的文本分类练习赛,数据集由文因互联提供,要求参赛者根据所提供的脱敏后的企业文本数据,筛选并判定该企业所属的类别,评价标准为Acc。其中,文本数据的内容,是对企业的经营范围和主营业务等基本信息的描述。数据文件描述如下图所示。
抱(冲)着(着)学(奖)习(品)交(去)流(的)的心态,和实验室的另外两个小伙伴组队参加了这次练习赛,在线上的最终得分是0.869。
特别说明:排行榜上我们的得分是0.871,但由于使用了中文Wikipedia训练词向量,属于外部数据,该分数无效,在没有使用任何外部数据的情况下我们的得分为0.869。
任务很容易理解,就是给定一段企业文本数据,要求分类器判定该企业所属的类别。简单地分析了一下语料,如下例所示:
> 公司是经批准依法从事融资性担保业务的金融机构,主营业务为融资性担保业务,包括贷款担保、农民工工资担保、票据承兑担保等业务。
可以看出,基本上一些关键词(如“金融”、“贷款”等)就可以确定该公司的类别,并不需要一个较长的上下文的理解,出于这样的考虑,我们选择CNNs作为本次任务的模型。
分词和词性标注工具我们比较了结巴分词和中科院的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
我们采用的模型是简单的CNNs,包括输入层,Look-up tables,卷积层,池化层和输出层,其中Look-up table包括词和词性,模型结构如下图所示。
对于词向量的训练,由于任务规定不能使用外部数据,所以我们直接利用练习赛提供的7000余条句子训练词向量,工具是gensim,使用skip-gram模型,词向量的维度设置为256,并过滤掉频次低于3的词,最终训练出词向量的词表size为8616。
而对于词性向量我们使用随机的方式初始化,维度为64,词性表的size为96。
卷积操作可以编码句子的局部特征,卷积核对句子卷积所得到的向量称为feature map,在实验中我们设置卷积数量为1000,窗口大小为3。
接着是池化层,使用的是常用的max pooling,提取出feature map中最重要的信息。
最后是模型的输出层,为了防止模型的过拟合,我们在全连接层之前加了一个dropout机制,同时对全连接层权值给予一个L2正则化的惩罚项,梯度更新法则选用Adam。
我们在以上模型的基础上又尝试了以下一些简单的方法,不过在实验中并没有效果,由于时间关系也没有去深入分析,这里列出来供大家参考:
实验中,我们抽取训练数据的80%作为训练集,20%作为开发集,用开发集上Acc最高的模型去标记测试数据。这里我们简单地做了一个融合:每次取不同的20%的数据作为开发集,剩余的数据作为训练集,这样共得到5组结果,最后将这5组结果进行投票融合,线上表现可以得到0点几个点的提升。
任务本身比较简单,也没有花太长时间去做,这里只是简单地做了个总结,希望和大家共同学习探讨。最后,附上源码,希望大家批评指正。
标签:类别 融合 dia 特征 融资 无效 github ada 理解
原文地址:http://www.cnblogs.com/tantao258/p/7745594.html