Tensorflow的CNNs模型实战:根据短文本对企业分类

2017年4月17号AI100发布了为期一个月的文本分类练习赛

http://competition.ai100.com.cn/html/game_det.html?id=24&tab=2 ,

数据集由文因互联提供,要求参赛者根据所提供的脱敏后的企业文本数据,筛选并判定该企业所属的类别,评价标准为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中最重要的信息。

Softmax层

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

一些想法

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

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

实验

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

http://geek.ai100.com.cn/2017/05/18/158

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2017-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量子位

十个生成模型(GANs)的最佳案例和原理 | 代码+论文

王小新 编译 原文作者:Sumeet Agrawal 量子位 出品 | 公众号 QbitAI 生成对抗网络(GANs)是一种能“教会”计算机胜任人类工作的有趣方...

6166
来自专栏机器之心

学界 | 中科大潘建伟团队在光量子处理器上成功实现拓扑数据分析

2084
来自专栏AI研习社

针对计算机视觉一些问题的分析

至少在过去十年间,解决计算机视觉领域内各种问题的技术已经有了很大的进步,其中一些值得注意的问题有图像分类、对象检测、图像分割、图像生成、图像字幕生成等。在这篇博...

1263
来自专栏红色石头的机器学习之路

台湾大学林轩田机器学习基石课程学习笔记1 -- The Learning Problem

最近在看NTU林轩田的《机器学习基石》课程,个人感觉讲的非常好。整个基石课程分成四个部分: When Can Machine Learn? Why Can M...

3930
来自专栏数据派THU

悉尼大学陶大程:遗传对抗生成网络有效解决GAN两大痛点

悉尼大学教授、澳大利亚科学院院士、优必选人工智能首席科学家陶大程博士在9月20日的AI WORLD 2018世界人工智能峰会上发表《AI破晓:机遇与挑战》的主题...

1795
来自专栏人工智能头条

CCAI 2017 | 日本理化学研究所先进智能研究中心主任杉山将:弱监督机器学习的研究进展

934
来自专栏鸿的学习笔记

关于机器学习应该知道的事(上)

这是一篇翻译,为了能有效率的读下去,特地分成两篇。因为只是作为我个人学习的记录,所以没有考虑到微信排版之类的。内容才是王道。

892
来自专栏AI科技大本营的专栏

学习这么多算法到底在解决哪些问题?深度学习之外,我们要选择谁?

人工智能会影响多个领域,甚至是那些非常传统的商业领域。而机器学习(这里指的是广义的机器学习)是人工智能的一个重要组成部分,它指的是对大数据集上的算法进行训练,以...

923
来自专栏AI科技评论

干货 | 深度学习的可解释性研究(一):让模型「说人话」

不以人类可以理解的方式给出的解释都叫耍流氓,因此,我们要让模型「说人话」。只要记住这三个字,你就差不多把握了可解释性的精髓所在。

1343
来自专栏BestSDK

机器学习精华,10问10答

给新人的学习建议 1. 你建议其他领域的人(比如机械工程)来学习机器学习吗? Ian Goodfellow:当然了!我最崇拜的Geoffrey Hinton在...

3646

扫码关注云+社区

领取腾讯云代金券