使用RNN进行情感分析

本文介绍了如何使用RNN进行情感分析,具体涉及word2vec的embedding层,LSTM cells的递归网络结构,以及如何处理输入数据、设置超参数、构建模型图和进行训练。通过LSTM网络,可以捕捉文本序列信息,预测其情感倾向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RNN网络使用了单词的序列信息,网络结构如下:
在这里插入图片描述
首先,将单词传入embedding层,之所以使用嵌入层,是因为单词数量太多,使用嵌入式方式词向量来表示单词更有效率。我们在这里使用word2vec方式来实现,我们在这里只需要加入嵌入层即可,网络会自主学习嵌入矩阵。
通过embedding层,新的单词表示传入LSTM cells。这将是一个递归链接网络,所以单词的序列信息会在网络之间传递。最后,LSTM cells连接一个sigmoid output layer。使用sigmoid可以预测该文本是积极的还是消极的情感。输出层只有一个单元节点(使用sigmoid激活)。只需要关注最后一个sigmoid的输出,损失只计算最后一步的输出和标签的差异。以下是python的代码:
首先导入相关的库和打开需要的数据文件

import numpy as np
import tensorflow as tf
with open('./data/reviews.txt', 'r') as f:
    reviews = f.read()
with open('./data/labels.txt', 'r') as f:
    labels = f.read()

数据清洗,使用embedding层,需要将单词编码成整数。这里需要去除标点符号,同时去除不同文本之间的分隔符号\n,先把\n当成分隔符号,分割所有评论。然后在将所有评论再次连接称为一个大的文本。

from string import punctuation
#移除所有标点符号
all_text = ''.join([c for c in reviews if c not in punctuation])
# 以'\n'为分隔符,拆分文本
reviews = all_text.split('\n')

all_text = ' '.join(reviews)
# 文本拆分为单独的单词列表
words = all_text.split()

embedding lookup要求输入的网格数据是整数。最简单的方法就是创建数据字典:{单词:整数}。然后将评论全部一一对应转换成整数,传入网络。

from collections import Counter
counts = Counter(words)
#按计数进行排序
vocab = sorted(counts, key=counts.get, reverse=True)
# 生成字典:{单词:整数}
vocab_to_int = {
   
   word: ii for ii, word in enumerate(vocab, 1)}

# 将文本列表 转换为 整数列表
reviews_ints = []
for each in reviews:
    reviews_ints.append([vocab_to_int[word] for word in each.split()])

将标签positive和negative转换成数值

labels = labels.split('\n')
labels = np.array([1 if each == 'positive' else 0 for each in labels])
from collections import Counter
review_lens = Counter([len(x) for x in reviews_ints])

这里有一个问题:有一条评论长度为0,而且最大的评论长度为2514,对我们演示来说太长了。所以我们将其截断成200的长度:1、评论长度小于200的,我们对其左边填充0,2、对于大于200的,我们只截取其前200个单词。

non_zero_idx = [ii for ii, review in enumerate(reviews_ints) if len(review) !=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值