lstm的应用 java实现_Deeplearning4j 实战(6):基于LSTM的文本情感识别及其Spark实现...

本文介绍了使用Deeplearning4j库和LSTM进行文本情感分类的Java实现,详细讲解了数据预处理、模型构建、训练过程,以及在Spark上的实现。最终模型在10轮训练后的准确率达到92%。
摘要由CSDN通过智能技术生成

在做机器学习的各种应用中,文本分类是比较典型的一种。比如,微博的分类,电商中商品评价的好坏分类,新闻的分类等等。同时,文本作为一种重要的特征,也在CTR预估,推荐等应用中起着作用。就文本分类这个应用而言,通常的做法是基于词袋模型和词向量模型来进行。基于词袋(Bag of Words)的模型的话,一般走一步TF-IDF再结合朴素贝叶斯就可以做个模型了,当然如果词很多,存在高维的问题,就用SVD/PCA做降维或者卡方特征抽取也行,然后再扔到某个分类器中。如果是基于词向量来做,那么一般就是用深度学习的模型来进行。下面就简单说下基于开源库Deeplearning4j来进行文本情感分类的一个例子,例子在Spark1.5.2上测试通过。10轮训练过后,准确率在92%左右。可以供相关同学参考。另外,特别说明下,本文中的语料数据来自于博客:http://spaces.ac.cn/archives/3414/。所以非常感谢链接中博客作者的数据分享。

首先说下语料的处理。http://spaces.ac.cn/archives/3414/链接中的语料主要分为正、反两方面的评价文本。分别以excel文件的形式存储。从之前说的链接上down下来语料后,对正反评价的文本用jieba分词器进行分词。这里就不具体贴出处理的代码,分词器可以任意选择一个开源的。不过需要注意的是,词与词之间用空格隔开。处理的语料结果如下截图:

正面评价预料:第一列为标注

d4fae954c90175dda0302b705fa106c0.png

负面评价预料:第一列为标注

53e6711a340f92fe05ab3104618a86af.png

在处理好语料之后,就可以开始建立分类模型了。这里主要采用Embedding+LSTM的结构。优化算法选择SGD。其他超参数如下所示:

MultiLayerConfiguration netconf = new NeuralNetConfiguration.Builder()

.seed(1234)

.iterations(1)

.learningRate(0.1)

.learningRateScoreBasedDecayRate(0.5)

.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)

.regularization(true)

.l2(5 * 1e-4)

.updater(Updater.ADAM)

.list()

.layer(0, new EmbeddingLayer.Builder().nIn(VOCAB_SIZE).nOut(512).activation("identity").build())

.layer(1, new GravesLSTM.Builder().nIn(512).nOut(512).activation("softsign").build())

.layer(2, new RnnOutputLayer.Builder(LossFunctions.LossFunction.MCXENT)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值