赞
踩
NLP情感分析简介:
NLP(Natural Language Processing,自然语言处理)研究用计算机来处理、理解以及运用人类语言(如中文、英文等),达到人与计算机之间进行有效通讯。
自然语言生成三阶段:文本规划、语句规划、实现
NLP应用领域:机器翻译、情感分析、智能问答、文摘生成、文本分类、舆论分析、知识图谱。
情感分析是自然语言处理(NLP)领域的一类任务,又称倾向性分析,意见抽取,意见挖掘,情感挖掘,主观分析等,它是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。
常用方法:
1、词袋/词典模型
由于机器对于人类语言理解力不强,从而导致文本分析的准确性不高,因此常常需要人工构建词袋/词典的方式,辅助计算机理解,具体做法是构建积极的词语词典和消极的词语词典,对文本进行词频统计,判断积极词汇与消极词汇所占的比重,从而判断文本情感。
但是词袋/词典模型具有没有考虑语句的先后顺序,以及上下文关系的缺点,从2001年的嵌入式词向量表示到2013年的word2vec ,研究已经逐步解决传统词袋表征方式的无序性,并进一步丰富了表征向量的表达能力。
这种方法关键在于构建与维护词典,词典的科学性,准确性。
2、 机器学习模型
由于机器学习的快速发展,循环神经网络(RNN)、Bert模型快速兴起,被广泛地运用于文本分析中。
本文探讨一个比较简单的利用计算机判断文本情感的方法——SNOWNLP
Snownlp是python中的包,适用于自然语言处理中的文本情感分析模块。
导入文本信息,python将帮你分析语言中的褒义、贬义成分,并给出相应的分数。
利用生成的情感分数,可以制作相应的数据图表来反映的情感倾向。
由于这个包能够自动帮你对词语进行情感得分打分,因此一方面减少了人为的主观性,但是,对于文本处理的要求较高,一定要剔除掉影响打分的标点符号以及停用词等等。但是在设置情感得分大于多少为积极时,还是存在一定主观性,这个主要就根据经验出发。
代码:
# -*- coding: utf-8 -*- # @Time : 2022/3/9 23:41 # @Author :LMQ # @File : 代码.py # @Software : PyCharm import pandas as pd from snownlp import sentiment from snownlp import SnowNLP import jieba with open ("发言.txt",'r',encoding='utf-8') as f: text = f.read() #根据情感得分判断积极还是消极 def type_class(text): if text > 0.6: text = '积极' elif text >=0.5: text = '中性' else: text= "消极" return text #字符串替换去标点符号 bd='[’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]+,。!?“”《》:、. ' for i in bd: txt=text.replace(i,'') word_list = list() txt_list = jieba.lcut(txt) #jieba分词 # s = SnowNLP(text) # txt_list = s.words for t in txt_list: print(t) if len(t) == 1: continue else: s = SnowNLP(t) score = s.sentiments emotion = type_class(score) content_dict = { '词语': t, 'snow': s, '情感评分': score, '积极消极': emotion, } word_list.append(content_dict) # 把词语和得到的情感分数写入文件中 df = pd.DataFrame(word_list) df.to_excel("发言情感.xlsx")
Snownlp情感得分示例:——可以看出还是比较合理的。
最后统计词汇的情感分布,判断整个文本的情感
整理来说,整篇文章情感是积极的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。