python实现RNN情感分析设计.docx
《python实现RNN情感分析设计.docx》由会员分享,可在线阅读,更多相关《python实现RNN情感分析设计.docx(8页珍藏版)》请在优知文库上搜索。
1、python实现RNN情感分析本次实验对acllmdb电影评价数据集进行深度学习,用pytorch构建和训练基于循环神经网络LSTM的模型,并利用此模型对于给定的电影评论文本进行预测,判断改评论是正面的还是负面的。试验后准确率高达98%。一.实现方法1、 RNNRNN(recurrentneuralnetwork,循环神经网络),在一般的神经网络由输入层、隐藏层、输出层构成。RNN在处理序列数据上是高效的,在此模型中有着一些特殊的信号决定了此模型是否需要记住上下文信息。他们可以从上一个时间步获取信息并传递到下一个时间步中。下图是一个标准循环神经网络的图像。RNN按下图所示时间顺序展开,在t时刻
2、,网络读入第t个输入xt,以及前一时刻状态值ht-l(向量表示,h表示初始化为0的向量),从而计算出本时刻隐藏层的状态值ht,若函数表示为f,则公式表示为:ht=f(tzht-l)=(Wxht+Whhht-l+bh):2、 其中,WXh是输入层到隐藏层的矩阵参数,Whh为隐藏层到隐藏层的矩阵参数,bh为隐藏层偏置参数。RNN隐藏层的状态向量被送入一个SoftmaX分类器,然后判断其情感;3、 1.STM保留了文本中的长期依赖信息,通过对循环层的刻意设计避免了长期依赖和梯度消失问题。输入单元输入数据X(t),隐藏层输出hh(t),在这些单元中,隐藏层表达复杂,主要分为4个部分:输入门i、输出门0
3、、遗忘门f、记忆控制器C,将LSTM表示函数记为F,ht=F(xtzht-l);it(Wxix,+Whihhi+FFm+6)fl=(xxl+Ar.+cm+6z)clflOcl.+ilOtanh(%M必瓦i+九)ol=(Wxox,-WhJtl.+Wcocl+bo)hlotIanh(C,)其中W及b是模型参数,tanh是双曲正切函数二,大致思路在这里我们将使用RNN(循环神经网络如图5所示)对电影评论进行情感分析,结果为positive或negative,分别代表积极和消极的评论。至于为什么使用RNN而不是普通的前馈神经网络,是因为RNN能够存储序列单词信息,得到的结果更为准确。这里我们将使用一个
4、带有标签的影评数据集进行训练模型。将单词传入到嵌入层而不是使用ONE-HOT编码,是因为词嵌入是一种对单词数据更好的表/Ko在嵌入层之后,新的表示将会进入LSTM细胞层。最后使用一个全连接层作为输出层。我们使用Sigmiod作为激活函数,因为我们的结果只有positivenegative两个表示情感的结果。输出层将是一个使用sigmoid作为激活函数的单一的单元。三,具体程序1、导入并读取数据集fnameos.path.join(DATA-ROOX,acllmdb-vl.tar.gz)符压缩文件进行解乐ifnotos.path.exists(os.path.join(DATA_ROOXacll
5、mdb*):Pmtr从乐缩包解乐”)withtarfile.open(fname,r,)asf:fextractall(DAA-R00H解乐文件到此指定路径fromtqdmimporttqdm/可查看读取数据的进程defread-imdb(folder三,trainrdata.rtar,Edataacllmdb*):data()forlabelin(posr*negJ:folder-nameeos.path.jon(data_rootrfolder;label)/拼接文件路径如E:dataadlmdbtrainposforfileintqdm(os.listdir(fblderwname):/
6、os.listdir(folder-ame)i取文件路径下的所有文件名,并存入列及中withopen(os.path.join(folder_name(filef,rb,)asf:review三f.read().decode(,utf8).replace(n,)-ower()data.append(reviev61iflabelposelse0)/将每个文本读取的内容和对应的标签存入data列表中QndomShUffIe(data)/打乱data列表中的数据排列顺序returndata2、数据预处理通常而言,未标注好的数据具有大量的噪声,噪声会对模型的效果产生直接的影响,所以在使用这些数据前,
7、应当对数据进行数据预处理,比如分词、标注、空间向量转换等。/空格分词defgetjokenzedjrib(data):Paramdata:listof(string,labeldeftokener(text):returntok.lower()fortokitext.split(,)1return(tokener(review)forreview,_Indata/只从data中读取revlew(评论)内容而不读取标签(label),对review使用tokenizer方法进行分词/创建词典defget-vocabjmdbdata):tokenized.data=gel_tokenizedmdb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python 实现 RNN 情感 分析 设计