NLP文本情感——SNOWNLP简易版

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情感得分示例:——可以看出还是比较合理的。

NLP文本情感——SNOWNLP简易版_第1张图片

最后统计词汇的情感分布,判断整个文本的情感

 NLP文本情感——SNOWNLP简易版_第2张图片

 整理来说,整篇文章情感是积极的。

你可能感兴趣的:(python,开发语言,nlp,自然语言处理)