python新闻评论情感分析可视化系统 Flask框架 NLP情感分析 计算机毕业设计(源码)✅

202 篇文章 7 订阅
182 篇文章 12 订阅

计算机毕业设计:基于python热门旅游景点数据分析系统+可视化 +django框架✅

博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌

毕业设计:2023-2024年计算机毕业设计1000套(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕业设计选题汇总

1、项目介绍

技术栈:
Flask框架、 snownlp情感分析、Echarts可视化、 NLP情感分析、 LDA算法、 Kmeans算法
新闻评论情感分析可视化系统

2、项目界面

(1)系统首页

在这里插入图片描述
(2)主题词汇分析
在这里插入图片描述

(3)热门新闻分析
在这里插入图片描述

(4)注册登录界面

在这里插入图片描述

3、项目说明

技术栈:

  1. Flask框架:用于搭建Web应用程序,提供后端支持和接口。
  2. snownlp情感分析:用于对新闻评论进行情感分析,判断评论的情感倾向(积极、消极、中性)。
  3. Echarts可视化:用于将情感分析结果以图表的形式展示,提供直观的数据可视化效果。
  4. NLP:自然语言处理技术,用于对新闻评论进行文本处理、分词、词性标注等操作。
  5. LDA算法:主题模型算法,用于从新闻评论中提取出潜在的主题信息。
  6. Kmeans算法:聚类算法,用于将新闻评论进行分类或分组。

新闻评论情感分析可视化系统介绍:
该系统基于Flask框架搭建,主要实现对新闻评论进行情感分析和可视化展示的功能。
用户可以输入新闻评论的内容,系统将使用snownlp情感分析库对评论进行情感倾向的判断,并将结果呈现给用户。
同时,系统还使用NLP技术对评论进行文本处理、分词和词性标注等操作,提取出评论中的关键词和主题信息。
利用LDA算法,系统可以从评论中挖掘出潜在的主题,帮助用户更好地理解评论的内容。
最后,系统使用Echarts可视化库将情感分析结果、关键词和主题信息以图表的形式展示,用户可以直观地查看分析结果。
通过该系统,用户可以更好地了解新闻评论的情感倾向和主题信息,帮助他们进行决策或分析。

4、核心代码

import pymysql
import jieba
from collections import Counter
import nltk
from sklearn.feature_extraction.text import TfidfVectorizer
from wordcloud import WordCloud
from snownlp import SnowNLP


def LDA(text, type):
    jiebaword = []
    for line in text:
        line = line.strip('\n')
        # 清除多余的空格
        line = "".join(line.split())
        # 默认精确模式
        seg_list = jieba.cut(line, cut_all=False)
        word = "/".join(seg_list)
        jiebaword.append(word)
    stopwords_filepath = "./static/stopwords.txt"
    # 读取停用词表
    stopwords = [line.strip() for line in open(stopwords_filepath, 'r', encoding='utf-8').readlines()]
    stopwords.append('##')
    fw = open('./static/clean.txt', 'w', encoding='utf-8')
    # 去除停用词
    word3 = ''
    for words in jiebaword:
        words = words.split('/')
        for word in words:
            if word not in stopwords:
                word3 += word + " "
                fw.write(word + '\t')
        fw.write('\n')
    fw.close()
    with open('./static/clean.txt', "r", encoding='utf-8') as fr:
        wordList = fr.readlines()
    # 生成tfidf矩阵
    transformer = TfidfVectorizer()
    tfidf = transformer.fit_transform(wordList)
    # 转为数组形式
    tfidf_arr = tfidf.toarray()
    km = nltk.cluster.kmeans.KMeansClusterer(num_means=3, distance=nltk.cluster.util.cosine_distance)
    # 进行kmeans聚类分析
    km.cluster(tfidf_arr)
    data0 = []
    data1 = []
    data2 = []
    for data, word in zip(tfidf_arr, wordList):
        if km.classify(data) == 0:
            word = word.replace('\n', '').split('\t')
            for i in word:
                if i != "":
                    data0.append(i)
        elif km.classify(data) == 1:
            word = word.replace('\n', '').split('\t')
            for i in word:
                if i != "":
                    data1.append(i)
        elif km.classify(data) == 2:
            word = word.replace('\n', '').split('\t')
            for i in word:
                if i != "":
                    data2.append(i)
    data = data0 + data1 + data2
    wordcloud(data, type)
    data = Counter(data)
    d2 = sorted(data.items(), key=(lambda x: x[1]), reverse=True)
    data = []
    for i in d2:
        data.append(list(i))
    return data


def wordcloud(words, type):
    text = ""
    for i in words:
        text += (i + " ")
    # 生成词云图
    my_wordcloud = WordCloud(background_color=("#fff"), font_path="C:\Windows\Fonts\simhei.ttf", scale=4).generate(
        text)  # 注:song.ttc  设置展示的图文的字体
    my_wordcloud.to_file("./static/" + type + ".png")  # 保存图片



if __name__ == '__main__':
    con = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='lda', charset='utf8')
    cur = con.cursor()
    sql = 'select * from data'
    cur.execute(sql)
    res = cur.fetchall()
    types = ['2020', '2021', '2022', '2023']
    for type in types:
        texts = []
        for i in res:
            if str(i[4])[:4] == type:
                texts.append(str(i[7]))
        #   LDA算法
        data = LDA(texts, type)

        for i in data:
            if i[1] > 10:
                s = SnowNLP(i[0])
                # s.sentiments 查询最终的情感分析的得分 小于0.4为消极
                result = s.sentiments
                sql = "insert into words(word,num,nlp,year) values('%s','%s','%s','%s')" % (i[0], i[1], result, type)
                cur.execute(sql)
                con.commit()




🍅✌感兴趣的可以先收藏起来,点赞关注不迷路,想学习更多项目可以查看主页,大家在毕设选题,项目代码以及论文编写等相关问题都可以给我留言咨询,希望可以帮助同学们顺利毕业!🍅✌

5、源码获取方式

🍅由于篇幅限制,获取完整文章或源码、代做项目的,拉到文章底部即可看到个人联系方式。🍅

点赞、收藏、关注,不迷路,下方查看👇🏻获取联系方式👇🏻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值