parent
e56f05116d
commit
8d95536c54
@ -0,0 +1,68 @@
|
||||
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()
|
Loading…
Reference in new issue