基于情感词典的文本情感分析(一个最简单的举例能直接运行)

article/2025/3/14 20:36:39

1. 使用情感词典进行情感分析的思路为

    1) 将Web文本进行分句,使其以句子为单位进行处理;2) 从分句中抽取连词和否定词,并标记相应连词与否定词位置;3) 访问情感词汇本体,确定词汇极性及其强度;4) 针对连词(若有),通过连词连词位置,确定前句与后句所占比重,针对否定词(若有),根据否定词位置判断双重否定,以及临近词汇的极性反转;若不包含连词或者否定词,则略过该步骤;5) 累加本句情感计算评分;

2. 第一次学习情感词典进行情感分析,也是根据下面这个博主链接进行修改的,主要改善了几个功能:

原链接为:https://blog.csdn.net/Petrichoryi/article/details/105861462?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
这篇博主过程写得很详细,若果有什么细节问题可以直接参考这篇博主的内容。

a)第一个情感词前面的程度词或者否定词,原文并没有考虑。
b)在两个情感词之间否定词的用法稍微进行了一点改变。

代码测试部分(可以直接复制运行)

因为要测试代码的正确性,所以直接拿一个简单的例子进行代码的测试(可以直接运行),后序会读取文本数据和词典数据进行测试。每个情感词,修饰词和程度副词的权重都是我人为设置的权重 只是为了检验正确性。

import jieba
from collections import defaultdicta='今天天气很好,但是我非常不喜欢,不开心'
c=[]
b=jieba.cut(a)
for i in b:print(i)c.append(i)   adj = {'好':'1','喜欢':'2','开心':'3'}#形容词
degree = {'很':'2','非常':'2.0'}#程度词
notword ={'不':'-2.0','非':'-1.0'} #否定词
adv = {'但是':'1.2'}#转折词d=[]
score=int(0)
for i in c:if i in adj.keys() or i in notword.keys() or i in degree.keys() or i in adv.keys():d.append(i)
print(d)
sen_word = dict()
not_word = dict()
degree_word = dict()
for i in range(len(d)):word = d[i]if word in adj.keys() and word not in degree.keys() and word not in notword.keys():# 找出分词结果中在情感字典中的词sen_word[i] = adj[word]elif word in notword.keys() and word not in degree.keys():# 分词结果中在否定词列表中的词not_word[i] = notword[word]elif word in degree.keys():# 分词结果中在程度副词中的词degree_word[i]  = degree[word] 
w= 1.0
score = 0
print(sen_word)
print(not_word)
print(degree_word)
#情感词下标初始化
sentiment_index = -1
sentiment_index_list =list(sen_word.keys())#对第一个情感词前的程度副词或者否定词进行得分处理
#print(sentiment_index_list)
for j in range(0,sentiment_index_list[0]):if j in not_word.keys():   w=w*float(not_word[j])   elif j in degree_word.keys():w=w*float(degree_word[j])#遍历分词结果
print(len(d))
for i in range(0,len(d)):#如果是情感词if i in sen_word.keys():print(i)score =score + w*float(sen_word[i])print('分数',score) #w一定要初始化一下 每个W只跟你所对应的情感词有关系w=1.0#情感词下标加1,获取下一个情感词的位置sentiment_index += 1if sentiment_index< len(sentiment_index_list)-1:#判断当前的情感词与下一个情感词之间是否有程度副词或否定词for j in range(sentiment_index_list[sentiment_index],sentiment_index_list[sentiment_index+1]):#更新权重,如果有否定词,权重取反  if j in not_word.keys():   w=w*float(not_word[j])   elif j in degree_word.keys():w=w*float(degree_word[j])#定位到下一个情感词if sentiment_index < len(sentiment_index_list)-1:i = sentiment_index_list[sentiment_index+1]print(score) 

比如本句话的情感得分应该为:很好+非常喜欢+不*开心:2X1+2X(-2)X2+(-2.)X3=-12

运行的结果为:

这个代码块中并没有对程度词,情感词和否定词的词典进行读取以及文档的读取。只是举一个具体的例子方便理解。或许会对这些进行整理并且针对中文语法分析中的转折词或者加强语气的标点符号进行更深一步的研究。


http://chatgpt.dhexx.cn/article/94gwWnaw.shtml

相关文章

Python利用情感词典做情感分析

情感分析是大数据时代常见的一种分析方法&#xff0c;多用于对产品评论的情感挖掘&#xff0c;以探究顾客的满意度程度。在做情感分析时&#xff0c;有两种途径&#xff1a;一种是基于情感词典的分析方法&#xff0c;一种是基于机器学习的方法&#xff0c;两者各有利弊。 在此&…

共现分析

一、共现分析概念 “共现”指文献的特征项描述的信息共同出现的现象&#xff0c;这里的特征项包括文献的外部和内部特征&#xff0c;如题名、作者、关键词、机构等。 而“共现分析”是对共现现象的定量研究&#xff0c; 以揭示信息的内容关联和特征项所隐含的知识。 二、共…

python基于情感词典的情感分析

今天给大家分享的是通过情感词典来对文本进行情感分析最后计算出情感得分 通过情感得分来判断正负调性 主要步骤&#xff1a; 数据准备 本次情感词典采用的是BosonNLP的情感词典&#xff0c;来源于社交媒体文本&#xff0c;所以词典适用于处理社交媒体的情感分析 本次分析准备的…

python 热词分析_Python笔记:热词分析2020-01-01

热词分析在公众趋势分析、舆情分析有很宽广的应用&#xff0c;我们来看看怎么从一个TXT文件中分析出文章的热词出来&#xff0c;我们采用流行的第三方“结巴”包来实现。 首先安装第三方包(matplotlib&#xff0c;jieba&#xff0c;wordcloud&#xff0c;numpy)mmatplotlib主要…

【共词聚类分析】基于CNKI和WOS的小样本稳健性检验

很久之前的一篇文章&#xff0c;最近终于收到了Reviewers的回复&#xff08;一把心酸…其中有一个Comments如下&#xff0c;意思是我们原先的文章没法证明共词聚类方法的结论是合理的…于是打算新增加一个稳健型检验&#xff08;robust analysis&#xff09;&#xff0c;由于上…

python共词矩阵分析结果一步到位

import os import re import pandas as pd from PyPDF2 import PdfFileReader import string import yakeif __name__ __main__:# 运行第一部分代码pdf_files_path C:/Users/win10/Documents/美国智库/pdf_files# 定义一个函数&#xff0c;用于读取PDF文件并将其转化成文本de…

共词分析

一、共现分析概念及主要类型 “共现”指文献的特征项描述的信息共同出现的现象&#xff0c;这里的特征项包括文献的外部和内部特征&#xff0c;如题名、作者、关键词、机构等。而“共现分析”是对共现现象的定量研究&#xff0c;以揭示信息的内容关联和特征项所隐含的知识。常…

AD09由英文改中文菜单步骤

1&#xff1a;打开AD09&#xff0c;点击DXP&#xff0c;选择Preferences 2&#xff1a;在对话框的左边一竖列选择General 3&#xff1a;选择左边竖列后&#xff0c;在右边找到Localization选项 4&#xff1a;点击应用&#xff0c;再点击OK。 5&#xff1a;然后关闭AD09&#xf…

AD软件的常用基本设置

AD软件的基本设置 前言 工欲善其事&#xff0c;必先利其器&#xff1b;最近学弟一直在忙着画板子&#xff0c;但是效率非常低&#xff0c;在看过他的软件基本设置&#xff0c;以及对软件快捷键掌握程度后&#xff08;新手小白&#xff09;&#xff0c;我决定将常AD的常用基本…

STM32定时器做时钟源输出基于CubeMx

目录 前言 CubeMX配置 开始函数 改变频率 改占空比 结论 前言 调试使用的评估板&#xff1a;https://item.taobao.com/item.htm?spma230r.1.14.17.432b1562F8z658&id612002664117&ns1&abbucket14#detail 作者再调试AD5933过程中&#xff0c;需要输出100Hz…

Evaluation Board User Guide UG-364 文档 BUG

最近作者使用这个芯片&#xff1b;在进行硬件性能对比测试中发现ADI文档中的一个小问题&#xff1b; 相位角计算的过程中&#xff0c;就是下图 结合下面的代码&#xff0c;验证了上面文档应该是手误导致的。

2019年全国大学生电子设计竞赛D题简易电路特性测试仪试题

题目要求部分 我负责的部分就是测量阻抗的部分&#xff0c;这一次我使用的是AD5933 AD5933介绍 我这一篇主要是讲使用5933计算那个待测电路的阻抗值&#xff0c;首先就是在概括处已经说明是我们读取的数据其实是一个实部和一个虚部。 然后我们要记住的是向寄存器0x94&#xf…

电赛专题 |国一作品_线路负载及故障检测装置

有幸邀请到了在2019大学生电子设计大赛的获奖优秀队员为本公众号投稿&#xff0c;将分几次推文为大家介绍几只优秀队伍的作品。 本次推文为大家分享西安电子科技大学微电子学院的团队的作品&#xff0c;团队成员为&#xff1a;蒋昊宇 冯郑 张岳琦&#xff08;排名不分先后&…

智能电导率系统电路设计详解

电导率是一个衡量水溶液导电能力的电学物理量&#xff0c; 电阻率的倒数为电导率&#xff0c;用希腊字母κ表示&#xff0c;κ1/ρ。一般意义上&#xff0c;电导率的测量温度是标准温度&#xff08;25℃&#xff09;。在液体中&#xff0c;水的电导率是衡量水质的一个重要指标。…

AD5934阻抗变换模块实验电路板

■ 前言 本文讨论了基于AD5934构建阻抗变换模块。并对于它测试相应的阻抗进行实验。 01电路设计 1.原理图设计1 ▲ 实验电路板 原理图 2.PCB版图 ▲ 实验电路板PCB 电路板输出接口从右到左&#xff0c;前四个的功能定义如下表。后面四个是用于调试使用。 管脚(从右到左)符号功…

使用AD5933测量元器件的谐振特性

■ 前言 元器件的谐振特性 使用 使用AD5933测量电子器件复阻抗 测量元器件的谐振特性。这里记录了一些相应的的电子实验的数据。以备之后进行复习和参考。 01测量电路 在 使用AD5933测量电子器件复阻抗 中给出了直接测量一些元器件&#xff08;电阻、电容&#xff09;的结果。…

AD5933测量容性负载时的神秘振荡信号

■ 问题简介 在博文 使用AD5933测量电子器件复阻抗 中&#xff0c;对于电容负载进行测量的时候&#xff0c;发现测量的结果与理论值严重不符。 除了出现了增大的测量输出值&#xff08;与前面电阻相对比&#xff09;&#xff0c;还有一些非常不规则的输出结果。 计时在小信号…

使用AD5933分析复阻抗的时钟频率设置

作者:卓晴博士&#xff0c;清华大学自动化系 更新时间&#xff1a;2020-07-29 Wednesday ■ 前言 使用 AD5933分析复数阻抗 时&#xff0c;由于受到内部离散傅里叶变换&#xff08;DFT&#xff09;所带来的以下限制&#xff1a; 由于采集信号可能带来的频率 频率混叠 现象由…

使用AD5933测量电子器件复阻抗

■ 前言 下面使用 AD5933阻抗转换器、网络分析仪初步实验 对一些典型的器件测量相关的阻抗。分析测量所对应的工作频率&#xff0c;工作量程等问题。 相关的文献参阅&#xff1a; AD5933阻抗转换器、网络分析仪初步实验AD5933不同频率下的转换结果AD5933使用外部时钟获得更低…

AD5933不同频率下的转换结果

01简介 AD5933阻抗转换模块 是一款基于AD公司的 AD5933 芯片的测量 复阻抗 的电路模块。在 AD5933阻抗转换器、网络分析仪初步实验 中对该模块进行了初步的实验。 由于该芯片的基本原理是采集有芯片内部产生的正弦波电压信号激励下复阻抗相应的正弦电流信号&#xff0c;经由芯…