from snownlp import SnowNLP import matplotlib.pyplot as plt import os # search_word = "2024巴黎奥运会" def emotion_aly(search_word): print("正在进行弹幕情感分析...") # 定义文件名 file_name = f'{search_word}弹幕.txt' # 若文件不存在则停止执行 if not os.path.exists(file_name): print(f"文件 {file_name} 不存在。") return # 初始化空列表 comment_list = [] # 读取文件并将每一行数据添加到列表 with open(file_name, mode='r', encoding='utf-8') as f: comment_list = f.readlines() # 去除每行末尾的换行符 comment_list = [comment.strip() for comment in comment_list] # 初始化情感统计 emotions = { 'positive': 0, 'negative': 0, 'neutral': 0 } # 若文件为空则停止执行 if not comment_list: print("弹幕文件为空,无法进行情感分析。") return # 对每条评论进行情感分析 for comment in comment_list: s = SnowNLP(comment) if s.sentiments > 0.7: emotions['positive'] += 1 elif s.sentiments < 0.3: emotions['negative'] += 1 else: emotions['neutral'] += 1 print(emotions) # 防止饼状图数据为0的情况 if sum(emotions.values()) == 0: print("没有有效的情感分析数据。") return # 绘制饼状图 colors = ['#ff9999', '#66b3ff', '#99ff99'] plt.style.use('fivethirtyeight') plt.pie(emotions.values(), labels=emotions.keys(), colors=colors, autopct='%1.1f%%') # 调整子图的边距 plt.subplots_adjust(top=0.901, bottom=0.044, left=0.033, right=0.967, hspace=0.2, wspace=0.2) plt.tight_layout() plt.rcParams['font.family'] = ['sans-serif'] plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['font.size'] = 14 plt.title(f"{search_word}弹幕情感分析图", fontsize=16) plt.savefig(f"{search_word}弹幕情感分析图.jpg") plt.show()