点击我爱计算机视觉标星,更快获取CVML新技术


本文来自于FlyAI竞赛社区,对于想要了解NLP的朋友有帮助。

搜狗新闻文本分类是NLP的入门问题,本文使用keras框架通过构建CNN+BiGRU网络,实现了在搜狗新闻文本数据集上91+的准确率。

◆◆

数据集来源

◆◆

该数据集来自若干新闻站点2012年6月—7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据。

根据新闻正文内容分析新闻的类别数据集官网链接:

 http://www.sogou.com/labs/resource/tce.php.

 该数据集样例格式如下所示:

用CNN做NLP文本分类竞赛

在 FlyAI竞赛平台上 提供了超详细的参考代码,我们可以通过参加搜狗新闻文本分类预测练习赛进行进一步学习和优化。

◆◆

代码实现

◆◆

1.1、算法流程及实现


算法流程主要分为以下四个部分进行介绍:

1.数据加载

2.构建网络

3.模型训练

1.数据加载

用CNN做NLP文本分类竞赛

用CNN做NLP文本分类竞赛

对每条新闻数据的读取和处理是在processor.py文件中完成。

具体实现如下:

用CNN做NLP文本分类竞赛

用CNN做NLP文本分类竞赛

用CNN做NLP文本分类竞赛

2.构建网络

由于是搜狗新闻文本类数据,这里我们可以使用一维卷积Conv1D + BiGRU来构建网络,网络结构如下所示:

用CNN做NLP文本分类竞赛

用CNN做NLP文本分类竞赛

用CNN做NLP文本分类竞赛

运行summary()方法后输出的网络结构如下图:

用CNN做NLP文本分类竞赛

3.模型训练

这里我们设置了epoch为5,batch为128,采用adam优化器来训练网络,EarlyStopping可以加速调参过程。然后通过调用FlyAI提供的train_log方法可以在训练过程中实时的看到训练集和验证集的准确率及损失变化曲线。

用CNN做NLP文本分类竞赛

1.2.最终结果

通过使用自定义CNN网络结构+双向GRU网络的方法,在epoch为10,batch为128的条件下使用adam优化器下不断优化模型参数,使用early_stopping规则在model训练达到early_stopping条件时提前终止训练提高model优化效率,最终模型在测试集的准确率达到91+。

用CNN做NLP文本分类竞赛

END

更多详情可

扫描下方二维码添加CV君拉你入群

和大神一起打比赛

备注“FlyAI”

免费p40 GPU时长等你来领

用CNN做NLP文本分类竞赛

用CNN做NLP文本分类竞赛


点击“阅读原文”直达竞赛

相关文章: