读入数据+使用snownlp进行情感分析

读入数据

tsv与csv读入相同,只是加一个sep=’\t’,指定分隔符就好。(csv以’,'分割)

pcfr = pd.read_csv('pacifier.tsv', sep='\t', dtype={'review_body':str, 'review_headline':str})

dataframe按列名提取,注意是两层[]

df = pcfr
a = df[['review_headline','review_body']]

查看dataframe相关信息

a.info()
a.type()
a.head()#默认六行,可以指定
a.tail()

使用snowlnp进行情感分析

参考blog:传送门

from snownlp import SnowNLP

# 用第一行的评论内容做个小实验。
text=a.review_body.iloc[0]
s = SnowNLP(text)
s.sentiments

#output : 0.14448966846220868

处理一整列的两种方法:1 写函数

# 情感分析数值可以正确计算。在此基础上,我们需要定义函数,以便批量处理所有的评论信息。
def get_sentiment_cn(text):
    s = SnowNLP(text)
    return s.sentiments

tst = []
tst = a.review_body.apply(get_sentiment_cn)

2 lambda+apply

coms=[]
coms=a.review_body.apply(lambda x: SnowNLP(x).sentiments)

根据情感分析结果分类

 # 情感分析,coms在0~1之间,以0.5分界,大于0.5,则为正面情感
pos_data=a[coms>=0.6] # 此处取0.6是为了使的词的情感更强烈点
neg_data=a[coms<0.4] # 负面情感数据集
#pos_data[:5]
a.sentiment.mean() #把所有的情感分析结果数值做一下平均
a.sentiment.median() #中位数

#Out[68]:0.14509066130717937
#Out[69]:0.03290747545743877
#过低,明显有问题(因为对英文文本用了snownlp,snownlp针对中文效果好)

你可能感兴趣的:(2020mcm)