基于rnn的情感分析
SampleSa的Python项目详细描述
情感分析(sa)是利用自然语言处理、统计和文本分析来提取和识别文本中的积极、消极或中性的情感类别。本文的主要目的是利用rnn技术构建一个模型,对正反讽句进行情感分析。数据集已清理(删除停止字和HTML标记)。使用glove和word2vec为此生成词向量。
使用递归神经网络(RNN)的SA。
rnn是一类人工神经网络,其中各单元之间的连接形成有向循环。这使得它能够表现出动态的时间行为。RNN中的隐藏层用作网络的存储。正常神经网络和rnn的主要区别在于使用的全局参数(如权重和偏差),网络是时间性的和动态的,因为网络的大小根据输入的大小而变化,并且在每个时间戳执行的相同任务具有不同的输入。RNN对时态数据起作用,在每个时间戳,一个字作为输入,下一个字将作为网络的输出。这个过程将重复直到句子的结尾,即在第一个时间戳,第一个单词被给出,它将给出第二个单词作为输出。在第二个时间戳,第二个单词作为输入,第三个单词作为输出被检索。网络就是这样训练的。如果一个句子包含n个单词,它需要(n-1)时间戳。最后在时间戳中,将隐藏层值进一步存储给mlp进行分类。标签已手动完成。
用法:
生成所需维度的手套和word2vec向量(例如:100200300)或下载两者的预生成向量。
根据单词vector dimensionality更改参数维数
提供适当的文件路径。
运行sa.py,如下所示。
” python ./sa.py -word_embedding W2V/GloVe/Both ‘File_path that contains train and test folders’ “
代码详细信息:
- sa.py:
- 运行代码的主程序。
- main.py:
- 为每个句子加载手套,为句子中的一个单词调用rnn,并将s_t值写入csv文件。
- demo.sh、eval和src:
- 生成手套向量的代码。
- 主手套。py:
- 调用手套代码生成单词向量。手套是使用github链接“https://github.com/stanfordnlp/GloVe”中的代码生成的。这个github代码生成word vector文件。
- 手套提取.py:
- 此代码将加载与句子中单词对应的所有向量。每次调用函数时,都会返回句子的单词向量。
- 主W2v.py:
- 通过调用w2v代码生成word2vec。这个任务是用nltk工具完成的。
- w2vgenerate.py:
- 生成词向量。
- rnn.py:
- 此代码将在每个时间戳取一个单词,然后按顺序输出立即单词。参数u、v、w、b1、b2是通过网络共享的参数。它返回隐藏层值(s_t)。
- mlp.py:
- 这主要用于对文本的情感进行分类。从RNN中提取的特征作为此多层感知器的输入。