基于情感词典进行情感态度分析

情感分析是指挖掘文本表达的观点,识别主体对某客体的评价是褒还是贬,褒贬根据进态度行倾向性研究。文本情感分析可以分为基于机器学习的情感分类方法和基于语义理解的情感分析。基于机器学习进行语义分析的话需要大量的训练集,同时需要人工对其进行分类标注。我所使用的方法是基于语义理解中的使用情感词典进行情感态度分析。

下面是我所使用的情感词典:

链接:https://pan.baidu.com/s/1toX2wqlIe2H-o_T6MFen1A 
提取码:gobt
复制这段内容后打开百度网盘手机App,操作更方便哦

情感词典有很多种,比如哈工大整理的,知网情感词典以及台湾大学NTUSD简体中文情感词典等,但并不是每个词典对于我们来说都是有用的,我们要根据自己的文本内容来选择合适的情感词典。

进行情感分析,我们不能按照自己怎么想就去怎么进行分析,需要一定的支撑条件。我所用的算法是根据北京交通大学杨立月和王移芝两位所写的“微博情感分析的情感词典构造及分析方法研究”这篇论文所编写的,这论文的地址微博情感分析的情感词典构造及分析方法研究 - 中国知网

进行情感分析的大致流程如下图:

第一步先对文本进行预处理:

    这里对文本进行预处理就是对句子进行分词,分词工具有很多,我选择的是使用python中的结巴分词,这个分词工具很好用,可以在分词的同时将词性也分析出来。不过在分词之前,对于一段文本内容来说,并不是所有的内容都对情感分析有帮助,比如一本书的书名,微博文本的标题以及一些非中文内容等,时候这个就我们可以用正则表达式只匹配我们需要的内容

import jieba.posseg as pseg #包括了词性(词语,词性)def seg_word(sentenct):d = ""sentenct = re.sub(u"\\#.*?\\#|\\@.*?\\ |\\《.*?\\》|【.*?】", "", sentenct)  # 处理#...#和@... (空格)间的数据s = re.compile(r'http://[a-zA-Z0-9.?/&=:]*', re.S)sentenct = s.sub("", sentenct)segList = pseg.cut(sentenct)  #分词segResult = []data_c = []data_p =[]for word,flag in segList:if ('\u4e00' <= word <= '\u9fa5'):   #判断字符串是否为中文if len(word)>1:data_p.append(word)segResult.append(word)s = word + "/" + flagd=d+s+"  "data_c.append(d)return data_c  #带有词性的列表

第二步就是将分词后的词向量通过情感词典进行训练了:

    英汉词典情感包括情感词,否定词,副词程度以及停用词  

          情感词:是主体对某一客体表示内在评价的词语,带有强烈的感情色彩。

          程度副词:本身没有情感倾向,但能够增强或减弱情感强度  

          否定词:本身也没有情感倾向,但能改变情感的极性

          停用词:完全没有用或者没有意义的词

    首先我们可以利用停用词去掉一些没有意义的词语,比如这,那,是等词语,将一些没有意义的词语过滤掉后,剩下的大部分就是对情感分析有用的词语了。在去除了停用词后,我们就可以利用情感词,程度副词以及否定词来运用一定的算法进行情感分析了

下面是通过停用词典匹配的代码

def stopchineseword(segResult):file = open("f:\\chineseStopWords.txt","r")data = []new_segResult=[]for i in file.readlines(): #从文件中读取数据并将其添加到列表中data.append(i.strip())for i in segResult:if i in data:  #比较是否为停用词continueelse:new_segResult.append(i)return new_segResult

在做完上面两步后,我们就可以开始利用情感词典来进行分析了

     有人会问知道了情感词后如何进行分析呢,这只是词语啊?在这里,我们就需要给情感词进行打分了。情感词分为正面情感词和负面情感词,也可能会多分几类,但在这只讨论正反两面。有些情感词典可能会给出情感词对应的分值(怎么算的我就不知道了)。根据上面说的论文中所写,我们对情感词进行赋值,正面情感词分值为1,负面情感词分值为-1,中性词则为0程度副词也可以根据词典中所给出的不同程度基于不同等级的分值,否定词则全部置为 - 1。

     语义是语句进行情感分类的重要特征,文档分类判断应按照词汇,句子,微博短文的步骤进行判断。情感倾向情感词前经常有程度副词修饰。当情感词前有程度副词修饰时,则会使情感词的情感倾向加强或减弱。而情感词前有否定词修饰时会使情感词的情感倾向反转。但在这里需要注意一个问题,就是对于否定词和程度词的不同位置可能会有两种结果。一是“否定词+程度副词+情感词”,还有就是“程度副词+否定词+情感词”。

对于“否定词+程度副词+情感词”的计算方式是

      w = t *( - 1)* a * 0.5

对于“程度副词+否定词+情感词”的计算方式是

     w = t *( - 1)* a * 2

其中w表示计算得到的情感词语的情感强度值,t表示情感词的权值,表示该情感词t前的程度副词的权值

在求得词向量中所有情感词的权值后进行求和,若得到的分值大于0,则为正面情感;若分值小于0,则为负面情感;若分值为0,则为中性情感。

大致算法的就跟下图所示一样,但我这张图还存在一些缺陷,就是在判断词语词性时没有将循环展示出来

求情感词的代码如下(重点在于计算整句话中情感词的权值)

def classify_words(dict_data):positive_words = []positive_word = open("f:\\正面情绪词.txt","r",encoding="utf-8").readlines()for i in positive_word:positive_words.append(i.strip())negative_words = []negative_word = open("f:\\负面情绪词.txt","r",encoding="utf-8").readlines()for i in negative_word:negative_words.append(i.strip())privative_words = []privative_word = open("f:\\否定词.txt","r",encoding="utf-8").readlines()for i in privative_word:privative_words.append(i.strip())adverb_of_degree_words1 = []adverb_of_degree1 = open("f:\\2倍.txt","r").readlines()for i in adverb_of_degree1:adverb_of_degree_words1.append(i.strip())adverb_of_degree_words2 = []adverb_of_degree2 = open("f:\\1.5倍.txt","r").readlines()for i in adverb_of_degree2:adverb_of_degree_words2.append(i.strip())adverb_of_degree_words3 = []adverb_of_degree3 = open("f:\\1.25倍.txt","r").readlines()for i in adverb_of_degree3:adverb_of_degree_words3.append(i.strip())adverb_of_degree_words4 = []adverb_of_degree4 = open("f:\\1.2倍.txt","r").readlines()for i in adverb_of_degree4:adverb_of_degree_words4.append(i.strip())adverb_of_degree_words5 = []adverb_of_degree5 = open("f:\\0.8倍.txt","r").readlines()for i in adverb_of_degree5:adverb_of_degree_words5.append(i.strip())adverb_of_degree_words6 = []adverb_of_degree6 = open("f:\\0.5倍.txt","r").readlines()for i in adverb_of_degree6:adverb_of_degree_words6.append(i.strip())z = 0data = []for k,v in enumerate(dict_data):w = 0if v in positive_words:   #为正面情感词w += 1for i in range(z, int(k)):if dict_data[i] in privative_words:for j in range(z, i):   #程度词+否定词+情感词if dict_data[j] in adverb_of_degree_words6 or dict_data[j] in adverb_of_degree_words5 or \dict_data[j] in adverb_of_degree_words4 or dict_data[j] in adverb_of_degree_words3 or \dict_data[j] in adverb_of_degree_words2 or dict_data[j] in adverb_of_degree_words1:w = w * (-1) * 2breakfor j in range(i, int(k)):  #否定词+程度词+情感词if dict_data[j] in adverb_of_degree_words6 or dict_data[j] in adverb_of_degree_words5 or \dict_data[j] in adverb_of_degree_words4 or dict_data[j] in adverb_of_degree_words3 or \dict_data[j] in adverb_of_degree_words2 or dict_data[j] in adverb_of_degree_words1:w = w * 0.5breakelif dict_data[i] in adverb_of_degree_words1:w =w * 2elif dict_data[i] in adverb_of_degree_words2:w =w * 1.5elif dict_data[i] in adverb_of_degree_words3:w =w * 1.25elif dict_data[i] in adverb_of_degree_words4:w =w * 1.2elif dict_data[i] in adverb_of_degree_words5:w =w * 0.8elif dict_data[i] in adverb_of_degree_words6:w =w * 0.5z = int(k) + 1if v in negative_words:   #为负面情感词w -= 1for i in range(z, int(k)):if dict_data[i] in privative_words:for j in range(z, i):    #程度词+否定词+情感词if dict_data[j] in adverb_of_degree_words6 or dict_data[j] in adverb_of_degree_words5 or \dict_data[j] in adverb_of_degree_words4 or dict_data[j] in adverb_of_degree_words3 or \dict_data[j] in adverb_of_degree_words2 or dict_data[j] in adverb_of_degree_words1:w = w * (-1)*2breakfor j in range(i,int(k)):    #否定词+程度词+情感词if dict_data[j] in adverb_of_degree_words6 or dict_data[j] in adverb_of_degree_words5 or \dict_data[j] in adverb_of_degree_words4 or dict_data[j] in adverb_of_degree_words3 or \dict_data[j] in adverb_of_degree_words2 or dict_data[j] in adverb_of_degree_words1:w = w*0.5breakif dict_data[i] in adverb_of_degree_words1:w *= 2elif dict_data[i] in adverb_of_degree_words2:w *= 1.5elif dict_data[i] in adverb_of_degree_words3:w *= 1.25elif dict_data[i] in adverb_of_degree_words4:w *= 1.2elif dict_data[i] in adverb_of_degree_words5:w *= 0.8elif dict_data[i] in adverb_of_degree_words6:w *= 0.5z = int(k)+1data.append(w)return data

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20714.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重新梳理一下我对ChatGPT的认识

不得不承认&#xff0c;信息差是广泛存在的&#xff0c;太多地方都存在信息不对称的情况。在我们研究ChatGPT怎么用&#xff0c;能帮我们做什么事儿的时候&#xff0c;有的人已经在用ChatGPT做项目赚钱了&#xff0c;有的人却还不知道ChatGPT怎么注册&#xff0c;还在四处搜索注…

【失业即将到来?】AI时代会带来失业潮吗?

文章目录 前言一、全面拥抱AIGC二、AI正在取代这类行业总结 前言 兄弟姐妹们啊&#xff0c;AI时代&#xff0c;说抛弃就抛弃&#xff0c;真的要失业了。 一、全面拥抱AIGC 蓝色光标全面暂停外包&#xff1f; 一份文件截图显示&#xff0c;中国知名4A广告公司&#xff0c;蓝色…

一键生成元宇宙 AI又杀疯了

人类十几年的进步水平&#xff0c;AI用几个月就能轻易实现。在展示了超强的文本对话能力和一键生图功能后&#xff0c;AI大模型不打算停下&#xff0c;开始挑战搭建3D空间这一更高难度的动作。 这次&#xff0c;Facebook母公司Meta想当一把主导者。几天前&#xff0c;它的首席…

MiX跨学科知识的一封介绍信,实现群体智能的开源社区Mixlab无界社区

如果有一天&#xff0c;所有在井底的青蛙因为某些缘故被迫送上了地面&#xff0c;这些青蛙有什么选择&#xff1f;背井离乡还是跳回井里&#xff1f;这时候系统说如果你选择了前者&#xff0c;系统会送一个ChatGPT给你&#xff0c;它能告诉你这个世界是什么样的&#xff0c;但是…

最容易和最难被GPT所代替的TOP25职业!程序员居首?

上一篇&#xff1a;腾讯&#xff0c;裁员7000人&#xff01; OpenAI 研究人员曾发文称「约 80% 美国人的工作将被 AI 影响」。 文章的结论是&#xff0c;至少80%的美国劳动力会受到影响&#xff0c;他们的工作的10%会被GPT所替代。其中甚至有19%的美国劳动力的50%工作会被替代。…

巴比特 | 元宇宙每日必读:美国爆发“数据起义”,好莱坞、文学界、新闻界等集体反抗AI,人工智能公司们准备如何应对?...

摘要&#xff1a;据澎湃新闻报道&#xff0c;美国正在爆发一场“数据起义”&#xff0c;好莱坞、艺术家、作家、社交媒体公司和新闻机构都是反抗者。一切的矛头都指向ChatGPT和Stable Diffusion等生成式人工智能工具&#xff0c;它们被指在未经许可或提供补偿的前提下&#xff…

“我裁了 90% 的技术支持团队,都外包给了 AI”

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 自 ChatGPT 爆火后&#xff0c;但凡 AI 领域有任何最新进展&#xff0c;人们总会习惯性调侃一句&#xff1a;“人类距离被 AI 取代已经不远了。”说者或许无心&#xff0c;但现在看来&#xff0c;“A…

元宇宙倒在日落黄昏处

来源&#xff1a;青投创新 编辑&#xff1a;Tian "XR赛道整体投入巨大&#xff0c;但回报周期过长是裁员乃至XR赛道不再被资本市场看好的主要原因。 十天前&#xff0c;字节跳动宣布旗下VR厂商PICO将进行人员优化&#xff0c;比例在20%上下&#xff0c;按照整个团队2000人…

决策树分类算法

#CSDN AI写作助手创作测评 目录 ID3算法 1.算法原理 2.代码实现 3.ID3算法的优缺点分析 C4.5算法 1.原理 2.优缺点 心得感受 决策树表示方法是应用最广泛的逻辑方法之一&#xff0c;它从一组无次序、无规则的事例中推理出决策树表示形式的分类规则。在决策树的内部…

selenium学习(二)

第八课–元素定位八种方式 要想操作Web界面上的元素&#xff0c;首先要定位到该元素&#xff0c;Selenium提供了定位元素的API&#xff0c;这些方法都被定义在WebDriver类中&#xff0c;浙西额方法都是以find开头。 方法名称描述可能带来的问题find_element_by_id通过id定位元…

免费ChatGDT插件《 WeTab 新标签页》

1、打开Microsoft Edge&#xff0c;选择右上角的三个点点&#xff0c;选择扩展 2、自动跳出这个小框框&#xff0c;选择管理扩展 3、往下拉、拉到最下边&#xff0c;找到如下图&#xff0c;并点击进去 4、进去之后再左侧搜索框中输入&#xff1a;WeTab 新标签 我这里是以及下载…

基于TF-IDF+Tensorflow+PyQt+孪生神经网络的智能聊天机器人(深度学习)含全部Python工程源码及模型+训练数据集

目录 前言总体设计系统整体结构图系统流程图孪生神经网络结构图 运行环境Python 环境TensorFlow 环境 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存4. 模型应用 系统测试1. 训练准确率2. 测试效果3. 模型生成 工程源代码下载其它资料下载 前言 本项目利用TF-IDF&…

喜羊羊贴吧顶帖软件实战教学

喜羊羊贴吧顶帖软件实战教学#贴吧顶帖#贴吧推广 大家好&#xff0c;欢迎来到百收网SEO这期视频&#xff0c;给大家更新一下百度贴最新的一个顶帖视频教程。首先我们今天用的顶帖软件是我们的喜羊羊173 的一个版本&#xff0c;软件的话在我们的群文件去下载&#xff0c;就是我们…

贴吧发布软件<神奇的>使用教程实战教学

贴吧发布软件<神奇的>使用教程实战教学.百度贴吧全自动发帖软件#贴吧发帖软件 各位同学大家好&#xff0c;欢迎回到百收SEO网络&#xff0c;这节课是我们百度贴软件自动发帖的一个实战教学的一个公开课&#xff0c;发帖软件还是我们用的一个喜羊羊的工具箱&#xff0c;然…

讯飞星火 VS 文心一言:谁是中文大语言模型的TOP1?

在百度发布文心一言一个多月后,科大讯飞也发布了自己的大模型“讯飞星火大模型”。本篇博客就测评一下这两个在中文圈最受好评的大语言模型,顺便辅以ChatGPT为参考。大家一起来看看到底谁是中文大语言模型的TOP1? 目录 体验网址 1、旅游攻略 2、数理逻辑题 3、故事创作…

大学生实践| 微软ATP“师徒制”AI实战项目收获满满!

ChatGPT在极短时间内掀起了一轮AI狂潮&#xff0c;AI数据、AI大模型、AIGC……对我们AI实践项目感兴趣的同学也越来越多&#xff01;微软(亚洲)互联网工程院下属的微软ATP为大学生们提供了丰富的企业级实践项目。 2个月内&#xff01;本期优秀的Chen同学在微软AI工程师团队带领…

1天训完45亿参数大模型!高校计算能力首次比肩科技巨头

衡宇 发自 凹非寺量子位 | 公众号 QbitAI “第一次&#xff0c;高校拥有了和科技巨头一样的计算能力。” 说这句话的人是中国工程院院士、阿里云创始人王坚。 他口中让高校计算能力倍增的&#xff0c;是复旦大学刚刚发布的云上科研智算平台。 名为CFFF&#xff08;Computing fo…

介绍一下IEEE PHM2012数据集

ChatGPT: IEEE PHM2012数据集是一个用于轴承剩余寿命预测的公共数据集&#xff0c;由IEEE联合无损检测协会组织。该数据集是通过对一种在机械系统中广泛使用的轴承进行可控实验得到的。 数据集包含四个通道的振动数据和一个温度信号&#xff0c;每个通道的采样率为20kHz&…

2022年天马杯新闻文本扩充生成赛道冠军方案分享

Z Lab数据实验室成员 HeapOverflow 01 前言 去年又摸了一个比赛&#xff0c;这次基本上是自己主导完成大部分建模和优化工作的了。这次能拿下第一&#xff0c;一方面是比赛参加的人比较少&#xff08;也是因为限制学生参加&#xff09;来卷的大概也就几十个人&#xff0c;另一方…

百万网友AI导师李沐离职投身大模型,B站“组会”还会有吗?(文末赠书)

目录 1 求学之路&#xff1a;全能学霸2 AI之路&#xff1a;与深度学习结缘3 一战封神&#xff1a;亚马逊首席科学家4 动手学习深度学习 前阵子“沐神”李沐离开亚马逊、加入创业公司BosonAI的消息&#xff0c;引起了业内比较广泛的讨论。 而BosonAI的创始人正好是他的博士生导师…