情感分析全解:文本预处理、加载词向量、搭建RNN

IMDB Sentiment Classification from scratch

Author: Beyond

Time: 2019.04.26

情感分析是上手NLP的最简单的任务之一,它就是一个简单的文本分类问题,判断一段文本的情感极性。最简单的就是二分类,判断是积极的还是消极的;更难一点的就是三分类,除了积极消极还有无情感倾向的;更加复杂的就比如情感打分,例如电影打1~5分,这就是五分类。但本质上都一样,无非类别太多更难以学习罢了。
IMDB是一个专业的电影评论网站,类似国内的豆瓣,IMDB的电影评论数据是大家经常使用来练手的情感分析数据集,也是各种比赛,如Kaggle,和各种学者做研究常用的数据集。

今天尝试用这个数据做一个情感二分类,作为一个NLP的练手。具体涉及到:

想要了解更多NLP,可以去这个小众优质社区看看:建议收藏网址,一个自带阅读器的文献搜索库,并且还能动态讨论,发现的时候就很惊喜】学术范学术范是一个在线学术交流社区,收录论文、作者、研究机构等信息,是一个与小木虫、知乎类似的学术讨论论坛,也是一个与中国知网、万方数据库、readpaper类似的免费文献资源PDF阅读网站,帮助您轻松了解学科前沿,参与专业且活跃的学术讨论。https://www.xueshufan.com/

  1. 文本预处理;
  2. 预训练词向量的加载;
  3. 采用RNNs训练模型

数据集地址:Sentiment Analysis (stanford.edu)

且采用Keras作为框架在进行模型搭建。

1.数据集

①关于数据集

其实,keras自带了IMDB的已经进行很好的预处理的数据集,可以一行代码下载,不需要进行任何的处理就可以训练,而且效果比较好。但是,这样就太没意思了。在真实场景中,我们拿到的都是脏脏的数据,我们必须自己学会读取、清洗、筛选、分成训练集测试集。而且,从我自己的实践经验来看,数据预处理的本事才是真本事,模型都好搭,现在的各种框架已经让搭建模型越来越容易,但是数据预处理只能自己动手。所有往往实际任务中,数据预处理花费的时间、精力是最多的,而且直接影响后面的效果。

另外,我们要知道,对文本进行分析,首先要将文本数值化。因为计算机不认字的,只认数字。所以最后处理好的文本应该是数值化的形式。而keras自带的数据集全都数值化了,而它并不提供对应的查询字典让我们知道每个数字对应什么文字,这让我们只能训练模型,看效果,无法拓展到其他语料上,也无法深入分析。综上,我上面推荐的数据集,是原始数据集,都是真实文本,当然,为了方便处理,也已经被斯坦福的大佬分好类了。但是怎么数值化,需要我们自己动手。

下载后解压,会看到有两个文件夹,testtrain,我们点进train中,会发现正样本和负样本已经分好类了,其中negpos分别是负样本和正样本,unsup是未标注的样本,可用后续需要采用。其他的都自己去看看吧。打开pos文件,都是一个个文本。

注意到,这些文本一般都不短...

数据集中,共有5w条文本,test集和train集各半,每个集合中,pos和neg也是各半。

当然,他们划分的train和test,你不一定真的要这样用。例如本文中,我为了方便,就吧train集合当做我所有的数据,在这2.5w条数据中再按照7:3划分train set和test set.

②导入数据集的代码

import os
datapath = r'datasets\aclImdb_v1\train'
pos_files = os.listdir(datapath+'/pos')
neg_files = os.listdir(datapath+'/neg')
print(len(pos_files))
print(len(neg_files))

输出:

12500
12500</
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值