基于rnn的情感分析

SampleSa的Python项目详细描述


情感分析(sa)是利用自然语言处理、统计和文本分析来提取和识别文本中的积极、消极或中性的情感类别。本文的主要目的是利用rnn技术构建一个模型,对正反讽句进行情感分析。数据集已清理(删除停止字和HTML标记)。使用glove和word2vec为此生成词向量。

使用递归神经网络(RNN)的SA。

rnn是一类人工神经网络,其中各单元之间的连接形成有向循环。这使得它能够表现出动态的时间行为。RNN中的隐藏层用作网络的存储。正常神经网络和rnn的主要区别在于使用的全局参数(如权重和偏差),网络是时间性的和动态的,因为网络的大小根据输入的大小而变化,并且在每个时间戳执行的相同任务具有不同的输入。RNN对时态数据起作用,在每个时间戳,一个字作为输入,下一个字将作为网络的输出。这个过程将重复直到句子的结尾,即在第一个时间戳,第一个单词被给出,它将给出第二个单词作为输出。在第二个时间戳,第二个单词作为输入,第三个单词作为输出被检索。网络就是这样训练的。如果一个句子包含n个单词,它需要(n-1)时间戳。最后在时间戳中,将隐藏层值进一步存储给mlp进行分类。标签已手动完成。

用法:

  1. 生成所需维度的手套和word2vec向量(例如:100200300)或下载两者的预生成向量。

  2. 根据单词vector dimensionality更改参数维数

  3. 提供适当的文件路径。

  4. 运行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中提取的特征作为此多层感知器的输入。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java没有主体的循环做什么?   java xtext项目中的默认内容辅助功能在哪里   通过相似(不相同)键的java分组映射   java Dagger 2 reinit singleton   检测图像中的矩形会产生不想要的结果(opencv,java)   Java方法调用与使用变量的性能比较   尝试使用hibernate连接到mysql时,java连接被拒绝   允许端口的java IP地址正则表达式   通过Socket实现java Android到PC的数据交换   java使用maven向类路径添加额外的配置文件夹   java我似乎无法从RMI存根获得socket工厂。为什么会这样?   java使用hibernate向数据库添加数据   java驱动程序对于Chromedriver不可执行   java编译错误。mysql。jdbc。驱动程序无法解析为变量