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

运行的结果为:

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

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

  1. Selenium爬取京东商品评价,并进行基于情感词典的文本情感极性分析

    Selenium爬取京东商品评价,并进行基于情感词典的文本情感极性分析 1. 介绍及开发环境 2. 爬虫实现 2.1 请求构造 2.2 提取信息 2.3 数据存储 2.4 运行结果 3. 文本情感分析 ...

  2. python 多分类情感词典_基于情感词典的文本情感分类

    基于情感词典的文本情感分类 传统的基于情感词典的文本情感分类,是对人的记忆和判断思维的最简单的模拟,如上图.我们首先通过学习来记忆一些基本词汇,如否定词语有"不",积极词语有&qu ...

  3. 机器学习算法Python实现:基于情感词典的文本情感分析

    # -*- coding:utf-8 -* #本代码是在jupyter notebook上实现,author:huzhifei, create time:2018/8/14 #本脚本主要实现了基于py ...

  4. NLP第12课:完全基于情感词典的文本情感分析

    目前情感分析在中文自然语言处理中比较火热,很多场景下,我们都需要用到情感分析.比如,做金融产品量化交易,需要根据爬取的舆论数据来分析政策和舆论对股市或者基金期货的态度:电商交易,根据买家的评论数据,来 ...

  5. 基于情感词典的文本情感分析方法

    大致流程: 一.确定情感词典: 情感词典分为极性词典和量化词典(自己整理定义). 1.若选择量化词典可直接进行第二步(适合情感词较少的短文本,重点在于区分情感程度): 2.若选择极性词典,需要先对消极 ...

  6. 基于情感词典的文本情感分析

    原代码来源:https://blog.csdn.net/lom9357bye/article/details/79058946 本文是对原代码的几个bug进行了修复,用到的词典可由以上链接下载 imp ...

  7. 基于NRC词典的离散情感分析(含有程度词和否定词)

    NRC词典的加载方法和分词方法之前的文章有写,直接套用即可. 具体函数参考了这篇文章:基于情感词典的文本情感分析(附代码)_Petrichoryi的博客-CSDN博客_bosonnlp情感词典 我相当 ...

  8. 基于情感词典的python情感分析!它居然比我还懂我女友!

    近期老师给我们安排了一个大作业,要求根据情感词典对微博语料进行情感分析.于是在网上狂找资料,看相关书籍,终于搞出了这个任务.现在做做笔记,总结一下本次的任务,同时也给遇到有同样需求的人,提供一点帮助. ...

  9. 基于python的情感分析案例-基于情感词典的python情感分析

    Python Python开发 Python语言 基于情感词典的python情感分析 近期老师给我们安排了一个大作业,要求根据情感词典对微博语料进行情感分析.于是在网上狂找资料,看相关书籍,终于搞出了 ...

  10. 实体词典 情感词典_基于词典的文本情感分析(附代码)

    一.引言 目前中文文本情感分析主要分为三个类型,第一个是由情感词典和句法结构来做的.第二个是根据机器学习来做的(Bayes.SVM等).第三个是用深度学习的方法来做的(例如LSTM.CNN.LSTM+ ...

最新文章

  1. 计算两个字符串之间是否包含的简单方法
  2. 2019建中台,2020拆中台,为什么很多公司中台战略宣告“失败”?
  3. C++中 list与vector的区别
  4. VC内存对齐准则(Memory alignment)
  5. vivo X30系列发布会邀请函曝光:名副其实的“望远镜”
  6. Speaking of the impact of the epidemic
  7. Fiddler笔记一移动端连接
  8. 模拟linux内核异常,Linux内核异常
  9. treeview wpf代码设置选中_C# WPF过渡效果实现(Transitions)
  10. 关于影响NodeManager执行MR任务constainer数量的设置问题
  11. 计算机技术应用于测量,在测量绘图中计算机技术的应用分析
  12. 数据清洗_缺失值处理
  13. 这五本热门网络小说,竟然三本在第四届橙瓜网络文学奖评选目前排在前五!
  14. Ios 公司申请苹果账号
  15. MATLAB滑动T检验
  16. 塞规公差带图_塞规公差计算表
  17. 无法导入android 工程--提示项目已经存在
  18. Jquery .val 与 .value 区别
  19. 随机过程基础3--宽平稳随机过程的谱分析
  20. 利用时间字符串计算时间差

热门文章

  1. 屏幕滑动_小米滑盖式可折叠手机渲染图曝光,屏幕不仅可以折叠还可滑动
  2. 动态规划实战3-leetcode 55.Jump Game
  3. Redis持久化的方式
  4. ue4模型为啥这么亮_UE4中的HLOD和Proxy
  5. 获取浏览器地址栏字符串参数
  6. 把.Net开发环境迁移到Linux上去
  7. spring-cloud-sleuth 和 分布式链路跟踪系统
  8. Animation 动画
  9. [DesignPattern]各自用一句话来概括MVC、MVP、MVVM的差异特点
  10. ubuntu 安装docker_Docker学习笔记1 虚拟化历史及 Ubuntu环境下体验安装