Sentiment Analysis For RNN
Sentiment Analysis For RNN
循环神经网络进行情感分析
引言:
对于情感分析,如果简化来看可以分为正向情绪和负向情绪,我们可以将情感分析视为文本分类任务,因此我们可以将预训练的词向量应用于情感分析。我们可以用预训练的GloVe模型表示每个标记,并反馈到RNN中。
RNN表征文本
在文本分类任务中,要将可变长度的文本序列转为固定长度。可以通过nn.Embedding()函数获得单独的预训练GloVe,再去通过双向LSTM,最后在去通过一个全连接层做一个二分类,即可实现RNN表征文本。
1 | self.embedding = nn.Embedding(vocab_size, embed_size) |
1 | embeddings = self.embedding(inputs.T) |
训练和评估模型
选用IMDB数据集,该数据集包含50 000 条严重两极分化的评论。 训练集 测试集各 25000 条评论,并都包含 50% 的正面评论和 50% 的负面评论。加载我们预训练的GloVe模型后调用训练函数进行训练,用100维GloVe下方展示模型情况。
1 | (embedding): Embedding(49346, 100) |
训练情况
用训练好的模型预测两个简单的句子
1 | predict_sentiment(net, vocab, 'this movie is so great') |
'positive'
1 | predict_sentiment(net, vocab, 'this movie is so bad') |
'negative'
完整实现代码
https://github.com/JiaZhengJingXianSheng/Sentiment-Analysis-For-RNN
参考链接
https://d2l.ai/chapter_natural-language-processing-applications/sentiment-analysis-rnn.html