本发明涉及信息系统领域,特别涉及一种基于情感词典和深度学习相结合的用户情感分析方法。特别适用于社交网络发布的微博、朋友圈等文本情感分析。
背景技术:
随着微博、微信等社交网络的兴起,网络不仅成为了人们获取信息的重要来源,同时也成为人们表达自己观点的平台。通过在微博等网络社区来评论热点事件、抒写影评观点、描述产品体验等,产生了大量带有情感倾向的文本信息,而通
过对这些文本信息进行情感分析,可以更好地理解用户行为,发现用户对产品的倾向性、对热点事件的关注程度等。随着信息规模的急剧增大,仅仅依靠人工进行处理已经无法完成这一任务,这就促进了自然语言处理领域的一个研究热点,即微博文本情感分析技术的发展。
技术实现要素:
本发明的目的在于解决现有分析方法的难度大、精度不高,提供一种一种新的基于混合学习的微博情感分类方法。
本发明解决其技术问题所采用的技术方案为:
一种情感词典和bi-gru融合模型,由于基于情感词典的方法能够对情感倾向明显的文本集获得较高的准确度,因此在第一阶段利用该方法来确定得分极高或极低的文本的倾向。另一方面,基于深度学习的方法在情感倾向模糊的数据集上效果更好。因此,第二阶段采用了情感词典和深度学模型相结合的综合分类方法,端到端的学习,使人们从纷繁复杂的特征工程中解放出来,且这样训练的模型具有较好的可移植性。
一种情感词典和bi-gru融合模型方法,该方法包括以下步骤:
步骤1:先对文本进行预处理,使用python中的结巴分词,这个分词工具很好用,可以在分词的同时将词性也分析出来。
步骤2:利用停用词去掉一些没有意义的词语,将分词后的词向量通过情感词典进行训练,包括情感词,否定词,副词程度以及停用词。
步骤3:对情感词进行赋值,正面情感词分值为1,负面情感词分值为-1,中性词则为0程度副词也可以根据词典中所给出的不同程度基于不同等级的分值,否定词则全部置为-1。
步骤4:连句处理
微博文本通常由多个句子组成,这意味着文本的情感倾向受到多个句子的影响。在不同的位置出现的对立连词,导致不同句子之间情感倾向的焦点转移。
步骤5:综合处理
如果一个否定词和一个程度副词同时出现在一个情感词w周围,若整条博文有n个分句,一个分句还有m个情感词,则整条博文情感值so(e)可以用公式计算情感词和短语的综合倾向。
其中,adv为程度副词值表中相应分值,neg为否定词分值,conj为关联词分值,sωi为情感词典中情感词的值。
步骤6:利用word2vec词嵌入向量对微博文本进行表示。训练时,神经网络隐藏层神经元个数设为100-300之间,隐藏层神经元的个数即为词嵌入向量的维数;
步骤7:把文本通过word2vec处理后作为序列化数据交给bi-gru神经网络处理,结合情感词典通过关联前后词来理解文本,而不是通过单个独立的词由于本文主要讨论分类题,所以只在输入的最后一个bi-gru单元输出类别分类。
附图说明
图1为本情感分析系统的功能架构图。
图2为本情感分析的识别流程图。
具体实施方式
步骤1:先对文本进行预处理,使用python中的结巴分词,这个分词工具很好用,可以在分词的同时将词性也分析出来。
步骤2:利用停用词去掉一些没有意义的词语,将分词后的词向量通过情感词典进行训练,包括情感词,否定词,副词程度以及停用词。
步骤3:对情感词进行赋值,正面情感词分值为1,负面情感词分值为-1,中性词则为0程度副词也可以根据词典中所给出的不同程度基于不同等级的分值,否定词则全部置为-1。
步骤4:连句处理
微博文本通常由多个句子组成,这意味着文本的情感倾向受到多个句子的影响。在不同的位置出现的对立连词,导致不同句子之间情感倾向的焦点转移。敌对连词主要通过两种方式影响短语的情感倾向:
1)强调词组的极性。如下面的句子所示。“魅族手机看起来不错,但系统太烂了”。句子中有一个积极的情感词“不错”和一个消极的情感词“烂”,而“烂”紧跟在敌对连词“但”之后。因此,整个句子的极性集中在后一部分,则是否定的。
(2)弱化后面短语的极性。以对手连词“虽然”为例,“虽然”后面的短语极性减弱,整个句子的极性集中在另一部分。
要解决上述情况,首先要建立一本包含转折连词的情感字典。如果句子中出现了一个转折连词,那么整个句子的极性主要取决于上述转折连词的作用,而不是简单地总结所有短语的分数。
步骤5:综合处理
如果一个否定词和一个程度副词同时出现在一个情感词w周围,若整条博文有n个分句,一个分句还有m个情感词,则整条博文情感值so(e)可以用公式计算情感词和短语的综合倾向。
其中,adv为程度副词值表中相应分值,neg为否定词分值,conj为关联词分值,sωi为情感词典中情感词的值。
步骤6:利用word2vec词嵌入向量对微博文本进行表示。训练时,神经网络隐藏层神经元个数设为100-300之间,隐藏层神经元的个数即为词嵌入向量的维数;得到词嵌入向量库后,对文本d进行分词和去停用词处理,得到文本的词序列w=[w1,…,wn],n为文本词语的总个数;根据word2vec训练得到的词嵌入向量把词序列w替换成词嵌入向量矩阵,
其中i为此词序列中的情感词,其中k为词嵌入向量的维度,vk表示
模型中全连接层的激活函数采用softmax函数,可将输出结果看作在微博情感类别上的概率分布。因此模型采用交叉摘损失函数:
其中,d为微博文档集合,p为文档集合中的文本,e为情感类别集合,q为情感类别集合中的情感类别,共分为3类(积极、消极、中性);优化目标是将所有数据中已知情感类别与预测情感类别的交叉摘最小化。y是真实情感类别,
步骤7:传统gru只能按次序读取文本,考虑微博上下文信息,本文使用能够双向提取特征的bi-gru模型。将序列信息按照前向和后向两个方向输入到模型中,并且这两个隐藏层都连接着输出层,因此,该模型可以同时利用两个方向的长距离信息。
把文本通过word2vec处理后作为序列化数据交给gru神经网络处理,结合情感词典通过关联前后词来理解文本。
该模型选取三层gru的堆叠,三层gru的输出维度分别设定为128,64,32,从而构建起基本的网络模型。实验在gru的层级之间添加了dropout层,为了减少训练过程中出现的过拟合,在dropout层中设置随机失活值为0.2。之后我们将引入一个全连接层作为输出层,该层使用的非线性激活函数为sigmoid,预测0,1变量的概率。bi-gru通过每层gru来不断捕捉语句间的信息,减少信息的丢失和依赖关系的消失。
模型基本搭建完成后,通过交叉熵来测试模型,把交叉熵作为目标函数,交叉熵越小说明匹配的越准确,模型精度越高。本次实验使用rmspropoptimizer来进行优化,将数据灌入模型,使用测试集作为验证数据,批次大小设置为100,迭代轮次设为5轮。针对文本的长度不一致问题,依据最长文本长度进行gru神经网络的搭建,微博文本最大长度一般不超过300个字,不超过150个词语,所以构建最大长度为150个gru单元,文本的特征序列从后向前输入,即最后一个特征放入最后一个gru单元,倒数第二个特征放入倒数第二个gru单元,依次类推,最后多余的gru单元输入零向量,每完成一次反向传播算法,就是实现了一次参数矩阵的更新,是整个模型的损失函数向更小的方向跨了一步,再多次迭代后素食函数就能达到全局最优解。
1.一种基于多模型融合的用户情感分析方法,其特征在于:
步骤1:先对文本进行预处理,使用python中的结巴分词在分词的同时将词性也分析出来;
步骤2:利用停用词去掉一些没有意义的词语,将分词后的词向量通过情感词典进行训练,包括情感词,否定词,副词程度以及停用词;
步骤3:对情感词进行赋值,正面情感词分值为1,负面情感词分值为-1,中性词则为0程度副词也可以根据词典中所给出的不同程度基于不同等级的分值,否定词则全部置为-1;
步骤4:连句处理
在不同的位置出现的对立连词,导致不同句子之间情感倾向的焦点转移;
步骤5:综合处理
如果一个否定词和一个程度副词同时出现在一个情感词w周围,若整条博文有n个分句,一个分句还有m个情感词,则整条博文情感值so(e)用公式计算情感词和短语的综合倾向;
其中,adv为程度副词值表中相应分值,neg为否定词分值,conj为关联词分值,sωi为情感词典中情感词的值;
步骤6:利用word2vec词嵌入向量对微博文本进行表示;训练时,神经网络隐藏层神经元个数设为100-300之间,隐藏层神经元的个数即为词嵌入向量的维数;
步骤7:把文本通过word2vec处理后作为序列化数据交给bi-gru神经网络处理,结合情感词典通过关联前后词来理解文本,只在输入的最后一个bi-gru单元输出类别分类。
2.根据权利要求1所述的一种基于多模型融合的用户情感分析方法,其特征在于:
步骤6:利用word2vec词嵌入向量对微博文本进行表示;训练时,神经网络隐藏层神经元个数设为100-300之间,隐藏层神经元的个数即为词嵌入向量的维数;得到词嵌入向量库后,对文本d进行分词和去停用词处理,得到文本的词序列w=[w1,…,wn],n为文本词语的总个数;根据word2vec训练得到的词嵌入向量把词序列w替换成词嵌入向量矩阵,
其中i为此词序列中的情感词,其中k为词嵌入向量的维度,vk表示
模型中全连接层的激活函数采用softmax函数,将输出结果看作在微博情感类别上的概率分布;因此模型采用交叉摘损失函数:
其中,d为微博文档集合,p为文档集合中的文本,e为情感类别集合,q为情感类别集合中的情感类别,共分为3类即积极、消极、中性;优化目标是将所有数据中已知情感类别与预测情感类别的交叉摘最小化;y是真实情感类别,
3.根据权利要求1所述的一种基于多模型融合的用户情感分析方法,其特征在于:
步骤7:传统gru只能按次序读取文本,考虑微博上下文信息,使用能够双向提取特征的bi-gru模型;将序列信息按照前向和后向两个方向输入到模型中,并且这两个隐藏层都连接着输出层;
把文本通过word2vec处理后作为序列化数据交给gru神经网络处理,结合情感词典通过关联前后词来理解文本;
该模型选取三层gru的堆叠,三层gru的输出维度分别设定为128,64,32,从而构建起基本的网络模型;实验在gru的层级之间添加了dropout层,在dropout层中设置随机失活值为0.2;之后引入一个全连接层作为输出层,该层使用的非线性激活函数为sigmoid,预测0,1变量的概率;bi-gru通过每层gru来不断捕捉语句间的信息,减少信息的丢失和依赖关系的消失。
4.根据权利要求1所述的一种基于多模型融合的用户情感分析方法,其特征在于:
通过交叉熵来测试模型,把交叉熵作为目标函数,交叉熵越小说明匹配的越准确,模型精度越高;使用rmspropoptimizer来进行优化,将数据灌入模型,使用测试集作为验证数据,批次大小设置为100,迭代轮次设为5轮;针对文本的长度不一致问题,依据最长文本长度进行gru神经网络的搭建,微博文本最大长度一般不超过300个字,不超过150个词语,所以构建最大长度为150个gru单元,文本的特征序列从后向前输入,即最后一个特征放入最后一个gru单元,倒数第二个特征放入倒数第二个gru单元,依次类推,最后多余的gru单元输入零向量,每完成一次反向传播算法,就是实现了一次参数矩阵的更新,多次迭代后素食函数就能达到全局最优解。
技术总结