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()
参考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针对中文效果好)