赞
踩
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌
毕业设计:2023-2024年计算机毕业设计1000套(建议收藏)
毕业设计:2023-2024年最新最全计算机专业毕业设计选题汇总
技术栈:
Flask框架、 snownlp情感分析、Echarts可视化、 NLP情感分析、 LDA算法、 Kmeans算法
新闻评论情感分析可视化系统
(1)系统首页
(2)主题词汇分析
(3)热门新闻分析
(4)注册登录界面
技术栈:
新闻评论情感分析可视化系统介绍:
该系统基于Flask框架搭建,主要实现对新闻评论进行情感分析和可视化展示的功能。
用户可以输入新闻评论的内容,系统将使用snownlp情感分析库对评论进行情感倾向的判断,并将结果呈现给用户。
同时,系统还使用NLP技术对评论进行文本处理、分词和词性标注等操作,提取出评论中的关键词和主题信息。
利用LDA算法,系统可以从评论中挖掘出潜在的主题,帮助用户更好地理解评论的内容。
最后,系统使用Echarts可视化库将情感分析结果、关键词和主题信息以图表的形式展示,用户可以直观地查看分析结果。
通过该系统,用户可以更好地了解新闻评论的情感倾向和主题信息,帮助他们进行决策或分析。
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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。