博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Keras实现的文本情感分类例子
阅读量:7079 次
发布时间:2019-06-28

本文共 1521 字,大约阅读时间需要 5 分钟。

hot3.png

最近在网上看到一篇很不错的文本情感分类的教程,内容详细,而且有可执行的代码和数据,非常适合学习。教程传送门:

原作者从网上搜集了一些客户购物的评价信息(大概2万多条数据),然后分成两类标签:正面的情感(用1表示)和负面的情感(用0表示)。此外,原作者作者还用Keras编写了3种情感分类模型,并做了相互对比分析。

我跑了一下相关的代码,结果遇到了性能问题。程序跑了17分钟,还在做2万多条数据的预处理,性能很糟糕。修改程序,做了一些跟踪,终于发现了造成性能差的代码。

def doc2num(s, maxlen):     s = [i for i in s if i in abc.index]    s = s[:maxlen]    return list(abc[s])

这段函数把一条用户评价信息转成对应的词编号,每次执行大概0.2秒左右,2万多条数据处理完需要4000多秒,也就是66分钟以上。性能糟糕的原因是这句:

if i in abc.index

其中,i是一串文字,abc.index是一大串文字。因为abc.index不是字典dict类型,所以,使用in去比较会非常的慢。加速性能的办法,就是为abc.index另外创建一个字典dict类型对象words_dict。然后使用这个字典dict类型对象words_dict进行对比。对应python2,代码改成

[i for i in s if words_dict.has_key(i)]

对应python3,代码改成

[i for i in s if i in words_dict]

这样处理过后,原来要4000多秒的数据预处理过程,只要60秒左右就完成了。

运行后面的代码,都很顺利。

对于word embedding模型,我尝试修改了模型中的Dense属性,给这里增加了L2正则化。

model.add(Dense(1,        kernel_regularizer=regularizers.l2(0.01)))

训练的结果很不错。训练准确率:99.44%,测试准确率90.33%。比原作者的结果要略高些。

最后,我编了一些数据去测试训练生成的模型。下面是客户评价信息和预测的情感分类(1代表正情感,0代表负面情感)

---------------------------------------------------------------------------------------------------------------

东东不重,一个人就拉回家了,找人来安装,费用也不高,热水器很精致,哈哈,物有所值,很满意,当晚就使用上了。 好评,全5分。

情感分类:1

买完降价了,店家服务还不错,但安装售后太黑了安装费竟然漫天要价,一开口要378,我不肯买单,打了400的服务电话投诉后降价到260,真心黑,太恶心了。

情感分类:0

服务很差。再不买XX的东西了。卖家服务还不错。

情感分类:1

服务很差。再不买XX的东西了。

情感分类:0

客服骗人 不是恒温又说是恒温 噪音大 燃气的味道浓 10号开始使用 17号马上没有热水出 差差差差

情感分类:0

-------------------------------------------------------------------------------------------------------------

看看分类结果, 还是不太准确, 还有很多改进的空间。以后有时间继续改进。

 

转载于:https://my.oschina.net/qinhui99/blog/902847

你可能感兴趣的文章
袋鼠云数据中台专栏2.0 | 数据中台之数据集成
查看>>
当P4遇见NAT64,UCloud如何快速从IPv4向IPv6演进?
查看>>
iOS少用的框架
查看>>
ups锂电池的优势
查看>>
关于程序员和***区别在哪里?
查看>>
tomcat启动报错Invalid character found in method name. HTTP method names must be tokens
查看>>
appium+python3.6
查看>>
RAID cache的作用及更换RAID 电池注意事项
查看>>
如何挖掘和优化长尾关键词?
查看>>
windows下安装解压版mysql
查看>>
Linux启用ssh服务
查看>>
Centos7 Snapper快照备份
查看>>
cdn
查看>>
每一天的成长由此开始
查看>>
swift开发中如何将时间显示为几分钟前、几小时前、几天前、几个月前
查看>>
某店订单系统水平分库的实践之路以及关键步骤
查看>>
Oracle GoldenGate 快速安装配置实用指南
查看>>
我的友情链接
查看>>
iOS 图片合并 及截图
查看>>
easyui datagrid load 方法键不能为变量的解决
查看>>