在情感分析时,将情感程度划分成三个区间,分别是[0,0.4)为消极倾向,[0.4,0.6)为中性倾向,[0.6,1]为积极倾向,都保留6位小数,以便能够直观地观察每个评论语句的情感态度,表 2 选取了几个极具代表性的语句,如表 2所示。
在现有的代码中增加情感类别这一内容。
#导入数据分析需要的包
import pandas as pd
#可视化包9
import matplotlib.pyplot as plt
from snownlp import SnowNLP
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
# 导入数据集
data = pd.read_csv('sf02_data.csv')
#主要分析评论情感,只截取部分字段
data1 = data[['sf_content', 'sf_creationTime']]
#把sf_creationTime转换为时间序列类型
data1['sf_creationTime'] = pd.to_datetime(data1['sf_creationTime'])
#因为该数据集时间跨度比较长,这里值选择其中一年的评论
data1 = data1[(data1['sf_creationTime'] < pd.to_datetime('20231231')) & (data1['sf_creationTime'] > pd.to_datetime('20230101'))]
#并且以月份作为x轴显示
data1['sf_creationTime'] = data1['sf_creationTime'].dt.month
data1.head(10)
#定义函数
def get_sentiment_cn(text):
s = SnowNLP(text)
return s.sentiments
# 应用函数
data1["sentiment"] = data1.sf_content.apply(get_sentiment_cn)
data1.head(10)
#查看整体评分以及分布状态
data1.sentiment.describe()
#查看时间序列评论情感分布,这里查看的是2023年各月份评论情感分布
data01 = data1[['sf_creationTime','sentiment']]
data01.boxplot(by='sf_creationTime',figsize=(20,10))
plt.title('2023年各月份评论情绪分布')
plt.xlabel('月份')
plt.ylabel('sentiment')
plt.show()
#查看情感得分最低的一条评论
data1.sort_values(by=['sentiment'], ascending=[True])[:1]
#查看这条评论的完整内容
print(data1.sort_values(['sentiment']).iloc[0].sf_content)