基于用户评论情感分析详细设计与技术实现

基于用户评论情感分析详细设计与技术实现


文章目录

  • 基于用户评论情感分析详细设计与技术实现
  • 前言
  • 一、技术架构
  • 二、分析服务器构建
    • 1.1 创建flask项目
    • 1.2 编写数据库连接脚本,获取用户评论数据;
      • 1.2.1 引入库
      • 1.2.2 连接数据库获取数据
      • 1.2.3 测试
    • 1.3 编写情感分析脚本
      • 1.3.1 引入库
      • 1.3.2 情感分直方图实现
      • 1.3.3 态度比例图;
      • 1.3.4 用户高频词云;
    • 1.4 flask实现web接口服务
  • 三、总结


前言

随着平台用户的不断扩大,平台的用户生态环境,或多或少是一个平台长期发展的重要因数,如果一个平台中的负面情绪较大,那么该平台就应该注意用户发展动态和思考平台本身的运营是否存在问题。
那么如何去分析用户的情感,通过下面的思路或许可以找到突破口。


提示:以下是本篇文章正文内容,下面案例可供参考

一、技术架构

在这里插入图片描述
架构介绍:

  • 数据库提供分析器目标分析数据;
  • 其他数据源可通过爬虫,数据收集等获取数据
  • 分析服务器使用python微型web开发框架Flask,flask框架需要pycharm专业版或破解版
  • 对外接口服务,可以查看情感分析数据

二、分析服务器构建

在这里插入图片描述
上图为我的flask项目文件目录展示,下面将重点讲解怎么去构建这样一个项目;

1.1 创建flask项目

  • 使用pycharm创建一个新项目,项目选择flask
    在这里插入图片描述
  • 选择你想要创建到什么文件夹,然后点击右下角的create,即可创建;

1.2 编写数据库连接脚本,获取用户评论数据;

  • 案例如下:
    我们想要获取评论数据,就需要负责存储平台上所有的评论数据;我的评论数据时保存在mysql中的comment表中,表结构如下:
    在这里插入图片描述
    我们需要获取console字段的所有评论数据
  • 创建getdatafromdb.py文件编写脚本,并且将获得的数据存放到csv文件中;

1.2.1 引入库

import pymysql
import pandas

1.2.2 连接数据库获取数据

class Test_myqsl(object):# 运行数据库和建立游标对象def __init__(self):self.connect = pymysql.connect(host="127.0.0.1", port=3306, user="root", password="318422", database="forum",charset="utf8")# 返回一个cursor对象,也就是游标对象self.cursor = self.connect.cursor(cursor=pymysql.cursors.DictCursor)# 关闭数据库和游标对象def __del__(self):self.connect.close()self.cursor.close()def write(self):# 将数据转化成DataFrame数据格式data = pandas.DataFrame(self.read())# 把id设置成行索引data_1 = data.set_index("id", drop=True)# 写写入数据数据pandas.DataFrame.to_csv(data_1, "comment_db.csv", encoding="utf-8")print("写入成功")def read(self):# 读取数据库的所有数据data = self.cursor.execute("""select id,console  from comment""")field_2 = self.cursor.fetchall()print(field_2)return field_2# 封装
def main():write = Test_myqsl()write.write()

1.2.3 测试

[{'id': 1, 'console': '我喜欢这个帖子'}, 
{'id': 2, 'console': '我想笑了'},
{'id': 3, 'console': '你好帅啊,我好喜欢'}, 
{'id': 4, 'console': '没有什么东西,毫无价值'},
{'id': 5, 'console': '大佬,yyds'}, 
{'id': 6, 'console': '兄弟们,真的感动哭了'}, 
{'id': 7, 'console': '不觉得很酷吗?'}, 
{'id': 8, 'console': '我好喜欢你'}, 
{'id': 9, 'console': '我会在这里等你!'}, 
{'id': 10, 'console': '好家伙,给我整破防了。'}, 
{'id': 11, 'console': '讨厌这次的疫情,改变了我的梦想'}, 
{'id': 12, 'console': '你们都是最棒的'}, 
{'id': 13, 'console': '没有什么不能完成的任务'}, 
{'id': 14, 'console': '我的梦想丢了'}, 
{'id': 15, 'console': '搞笑!你是不是傻。'}, 
{'id': 16, 'console': '哈哈哈'}, 
{'id': 17, 'console': '嘿嘿嘿'}, 
{'id': 18, 'console': '学代码好难啊!'}]
写入成功

当前数据已经写入到comment_db.csv文件中
在这里插入图片描述

1.3 编写情感分析脚本

  • wordcloud安装参考:下载安装wordcloud
  • snownlp安装参考:https://blog.csdn.net/cuixinyang19_/article/details/82318033
  • jieba安装参考:pip install jieba
  • wordcloud强调python版本,snownlp和jieba不强调版本,我装的都是python3.6下的。
  • 创建main.py文件编写s数据分析脚本

1.3.1 引入库

import pandas as pd
from snownlp import SnowNLP
import matplotlib.pyplot as plt
import numpy as np
from wordcloud import WordCloud
import jieba
from jieba import analyseimport getdatafromdb

这里我们主要依赖的是snownlp库进行数据分析:
SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。

snownlp库: https://github.com/isnowfy/snownlp
可参考学习技术资料:https://zhuanlan.zhihu.com/p/26331196

1.3.2 情感分直方图实现

getdatafromdb.main()
data = pd.read_csv('comment_db.csv')#读取csv文件数据def read_file():data.head(2)data1 = data[['id', 'console']]data1.head(10)data1['emotion'] = data1['console'].apply(lambda x: SnowNLP(x).sentiments)data1.head(10)data1.describe()return data1def getping_chart(data1):plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falsebins = np.arange(0, 1.1, 0.1)plt.hist(data1['emotion'], bins, color='#4F94CD', alpha=0.9)plt.xlim(0, 1)plt.xlabel('情感分')plt.ylabel('数量')plt.title('情感分直方图')plt.savefig('F:\Github\onliveschool\onliveschool\sentiment\static\情感分直方图.png')picpath = 'F:\Github\online\onlineexam-main\onlineexam\onlinewx\miniprogram\images\情感分直方图.png'return picpath

打印的各个评论的情感分数如下:

    id          console   emotion
0    1          我喜欢这个帖子  0.418492
1    2             我想笑了  0.714930
2    3        你好帅啊,我好喜欢  0.980900
3    4      没有什么东西,毫无价值  0.332192
4    5          大佬,yyds  0.782665
5    6       兄弟们,真的感动哭了  0.890965
6    7          不觉得很酷吗?  0.732578
7    8            我好喜欢你  0.799730
8    9         我会在这里等你!  0.740741
9   10      好家伙,给我整破防了。  0.517992
10  11  讨厌这次的疫情,改变了我的梦想  0.970619
11  12          你们都是最棒的  0.961800
12  13      没有什么不能完成的任务  0.369391
13  14           我的梦想丢了  0.873836
14  15        搞笑!你是不是傻。  0.184189

在这里插入图片描述

我们可以看出大部分情感数值集中在0.4-0.8。

1.3.3 态度比例图;

我们将大于情感分数大于0.5的视为积极的

def getattion_chart(data1):# 计算积极评论与消极评论各自的数目pos = 0neg = 0for i in data1['emotion']:if i >= 0.5:pos += 1else:neg += 1# 积极评论占比plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falsepie_labels = 'postive', 'negative'plt.pie([pos, neg], labels=pie_labels, autopct='%1.1f%%', shadow=True)path = 'F:\Github\onliveschool\onliveschool\sentiment\static\积极评论占比图.png'plt.savefig(path)picpath = 'F:\Github\onliveschool\onliveschool\sentiment\static\积极评论占比图.png'return picpath

在这里插入图片描述
这里就可以直观的看出该平台积极正向的评论和消极的比例

1.3.4 用户高频词云;

def getap10_chart():# 关键词top10text = ''for s in data['console']:text += skey_words = jieba.analyse.extract_tags(sentence=text, topK=10, withWeight=True, allowPOS=())print(key_words)# 参数说明 :# sentence# 需要提取的字符串,必须是str类型,不能是list# topK# 提取前多少个关键字# withWeight# 是否返回每个关键词的权重# allowPOS是允许的提取的词性,默认为allowPOS =‘ns’, ‘n’, ‘vn’, ‘v’,提取地名、名词、动名词、动词def getcloud_chart():w = WordCloud(font_path="msyh.ttc")  # font_path="msyh.ttc",设置字体,否则显示不出来text = ''for s in data['console']:text += sdata_cut = ' '.join(jieba.lcut(text))w.generate(data_cut)image = w.to_file('F:\Github\onliveschool\onliveschool\sentiment\static\词云图.png')picpath = 'F:\Github\onliveschool\onliveschool\sentiment\static\词云图.png'return picpath

首先分析前10条词条:

[('喜欢', 0.42769413022650005), 
('梦想', 0.3875037441765), 
('很酷', 0.330188261785), 
('好难', 0.330188261785), 
('yyds', 0.2988691875725), 
('我整', 0.2988691875725), 
('破防', 0.2988691875725), 
('嘿嘿嘿', 0.27390596682), 
('毫无价值', 0.26806559554), 
('搞笑', 0.26333454555)]
Loading model cost 1.393 seconds.

词云图片如下:
在这里插入图片描述

1.4 flask实现web接口服务

  • 在flask项目app.py编写接口方法
  • 运行app.py文件,调用web服务
  • 打开浏览器访问接口
  • 查看返回图片文件地址

相关代码:

from flask import Flask
import mainapp = Flask(__name__)@app.route('/')
def hello_world():  # put application's code herereturn 'Hello World!'# 获得用户态度比例表
@app.route('/api/py/acctionchart')
def getacction_chart():# 获取最新表path = main.getattion_chart(main.read_file())return path# 获得用户词云
@app.route('/api/py/getcloudchart')
def getcloud_chart():path = main.getcloud_chart()return path# 情感分直方图
@app.route('/api/py/getpingchart')
def getpingbu_chart():path = main.getping_chart(main.read_file())return pathif __name__ == '__main__':app.run()

在这里插入图片描述

  • 点击http://127.0.0.1:5000/,会展示Hello World!页面

在这里插入图片描述

  • 输入http://127.0.0.1:5000/api/py/getpingchart,获得用户情感分布直方图文件路径;
    在这里插入图片描述

  • 访问该路径图片
    在这里插入图片描述

  • 扩展说明
    我们有了接口,并且接口也返回了当前保存图片的文件路径,如果项目有前端的话,就直接将保持图片的路径设置到前端文件夹中,前端固定好图片路径,运行该flask项目,并且调用接口,就可以在前端管理页面看到展示数据。这里也可以实现一些其他性格相关的操作,比如可以将情感值在细化分析。

三、总结

以上就是今天要讲的内容,本文仅仅简单情感分析服务架构的创建和使用,如果在学习时有问题,可在评论区提出来!

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

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

相关文章

情感分析的分类,情感分析模型有哪些,情感分析的应用场景,情感分析的发展趋势

1.情感分析的分类: (1)基于情感极性的分类:将文本的情感分为正向、负向和中性三类。 (2)基于情感维度的分类:将文本的情感分为喜欢、愤怒、悲伤、惊喜等多个情感维度。 2.情感分析模型&#x…

基于Twitter数据的情感预测与案例分析

导读 本次分享的是关于文本分析中的情感预测分析和主题分析的一个小科研项目,数据爬取自Twitter,主要内容分为3部分: 1.情感预测机器学习模型选择及建立 2.情感预测深度学习模型LSTM的介绍和建立 3.主题分析模型简介 01 # 情感预测机器学习…

CDGP认证|ChatGPT的出现,对数据治理行业冲击如何?

ChatGPT的出现对数据治理有很多好处,其中最明显的是提供了更高效、更准确和更自动化的数据处理和分析服务,可以帮助企业和组织更好地管理和利用数据资源,提高数据质量和决策效率。此外,ChatGPT还能够发现隐藏在大量数据中的信息和趋势&#x…

chatgpt赋能python:Python报错大全

Python报错大全 作为Python程序员,报错是我们经常遇到的一件事情。报错可以帮助我们定位和解决问题,但有时候错误信息并不直观,所以我们需要查找信息来帮助我们解决问题。在这篇文章中,我们将介绍常见的Python报错以及如何解决它…

GitHub开源神器,已获3k star!让你的 ChatGPT 不再报错!感受丝滑般体验!

点击上方“Github爱好者社区”,选择星标 回复“资料”,获取小编整理的一份资料 作者:GG哥 来源:GitHub爱好者社区(github_shequ) 这是GitHub爱好者社区第 71 篇原创文章 Hello,大家好&#xff0…

登高望远,一文解答 2023 年你最关心的前端热点问题

动手点关注 干货不迷路 本文预计阅读 25 min,建议先收藏后观看~ 一、刀光剑影的 2022 时光荏苒,这绝不平淡的 2022 年已经走上历史的黄页,新的一年也逐渐看不到故人回首的光影。感谢你对前端技术领域持续关注,我们一直在这里等你。…

千模大战鏖战正酣,大模型能否帮360重回巅峰?

ChatGPT问世后,互联网终于看到了变革的曙光。 回望互联网的征程,几乎每十年左右,就会因产品和技术的变革,而催生出全新的应用场景。 00年代,随着PC产品的逐渐成熟,桌面互联网成为时代的“主旋律”。在此背…

司马阅(SmartRead),最好用的中国PDF智能阅读工具!

在数字化时代,大量的信息以PDF(便携式文档格式)的形式存在。 处理和提取PDF文件中的信息可能是一项繁琐的任务,但现在有了司马阅(SmartRead),一款能够与PDF进行对话的智能工具,这一切变得更加简单和高效。…

国产开源大模型: 百亿参数“伶荔”,填补中文基础模型空白!

Datawhale开源 团队:深圳大学沈琳琳教授团队 Linly 伶荔说 中文语言大模型来啦! 大数据系统计算技术国家工程实验室副主任、深圳大学计算机与软件学院沈琳琳教授团队主持的人工智能项目“伶荔(Linly)”于今天隆重推出“伶荔说”系列中文语言大模型。 该…

Google 中文名发布 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 4 月 12 日,每年的这一天是世界航天日,全名载人空间飞行国际日;在 1961 年的 4 月 12 日,苏联空军飞行员尤里加加…

chatgpt赋能python:Python用Pi优化SEO的指南

Python用Pi优化SEO的指南 引言: 搜索引擎优化(SEO)已经成为了数字市场营销领域中至关重要的一部分。对于那些想要在数字领域获得成功的企业和个人而言,SEO是不可或缺的。Python是一种优秀的编程语言,现在,它在SEO中也变得越来越…

PDF工具Adobe Arcrobat Pro DC下载安装教程

【ChatGPT】前些天发现了一个巨牛的人工智能学习电子书,通俗易懂,风趣幽默,无广告,忍不住分享一下给大家。(点击查看学习资料) wx供重浩:创享日记 对话框发送:adobe 免费获取Adobe …

Python | Python的自我介绍(前世今生)

本文概要 本篇文章主要介绍Python这门语言的前世今生,适合刚入门的小白或者想了解Python历史的同学,文中描述很详细,具有一定的学习价值,感兴趣的小伙伴快来一起学习吧。 个人简介 ☀️大家好!我是新人小白博主朦胧的…

全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门AI智能问答应用场景——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门AI智能问答应用场景 Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例 其它资料下载 ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字&a…

CV不存在了?Meta推出最新AI模型SAM,计算机视觉领域的ChatGPT

4月5日,Facebook母公司Meta在推特宣布推出SAM模型(Segment Anything Model)并开源。该模型能够查找和分割图像和视频中的任何对象,实现一键抠图。同日,Meta还发布了自称有史以来最大的图像注释数据集,以及3…

canvas绘制微信海报分享

前言 最近公司在做一个面向餐饮的微信小程序,公司希望在小程序中嵌入关注公众号的功能,一开始是采用官方提供的official-account,配置公众号关注组件,方便用户快捷关注公众号,但是这个组件的场景限制比较多&#xff0…

各国疫苗接种进度(气泡图可视化)

全球疫情及疫苗接种进度可视化之四--各国疫苗接种进度 安装plotly库各国疫苗接种进度读取数据排除全球及大洲数据发现某些国家数据不全,需按日期进行补全取每百人接种量最高的10个国家 可视化绘制气泡图 全国疫情及疫苗接种进度可视化 全球疫情及疫苗接种进度可视化…

TRC肝炎病毒蛋白酶标记抑制剂丨TRC Telaprevir-d4说明书

艾美捷TRC Telaprevir-d4—丙型肝炎病毒蛋白酶的标记肽模拟物抑制剂。 艾美捷TRC Telaprevir-d4化学性质: 目录号T015652 化学名称Telaprevir-d4 同义词1S,3aR,6aS)-(2S)-2-环己基-N-(2-吡嗪羰基)甘氨酰-3-甲基-L-缬氨酰-N-[(1S)-1-[2-[(环丙基-d4)氨基]-2-氧代乙…

PBMC分离试剂盒-国内上市自测新冠病毒抗原试剂盒

核酸检测需要借用机器,出结果等待时间长,而且排队检测的时候也有一定的感染风险。这个时候我们发现,仅靠核酸检测是不够的。新冠抗原检测产品是一种简易而快速的病毒检测手段,无需专业人员辅助,无需借助机器&#xff0…

核酸检测多少人为一组混检合适?

今天在想一个有趣的问题。核酸检测的混检,必然是当患病率越低时,则混到一个管子的人数越多越好,因为这样检测的期望次数就会更少。那么问题来了,当患病率多高时,混检就失去了意义?当混检没失去意义时&#…