基于python借助百度云API对评论进行情感极性分析

本文基于上一篇http://blog.csdn.net/anthonyhdm/article/details/78940133文章爬取的天猫商品kindle评论数据进行情感倾向分析,首先说明工具:

1、百度云账号申请,创建应用
2、python3.5

查看百度云提供的接口说明,可以看到模型参数的输入是文本,分析得出的结果包括输入的词裂变,表示情感极性分类结果,表示分类的置信度,表示属于积极类别的概率,表示属于消极类别的概率

基于python借助百度云API对评论进行情感极性分析_第1张图片

以下是一个简单示例:

基于python借助百度云API对评论进行情感极性分析_第2张图片

本文为了实现将所有评论进行情感极性判断分类并写入到原来的CSV文件中,需要引入pandas包进行写入数据。具体代码如下

from aip import AipNlp
import csv
import pandas as pd
from pandas.core.frame import DataFrame

""" 你的 APPID AK SK """
# 利用百度云提供的API接口实现情感分析
APP_ID = '********'
API_KEY = '********'
SECRET_KEY = '********'
client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

# 写入文件
def output():
    urls = []
    with open('E:\\tb_iphone.csv', "r") as f:
        reader = csv.reader(f)
        for row in reader:
            urls.append(row[12])
    return urls

# 对读入的数据进行情感分析,将其得到的结果解析成标准JSON格式数据,并保存在一个新的dict中
def sentimentClassify():
    x = output()
    i=1
    pp=[]
    np=[]
    con=[]
    sen=[]
    all={}
    for i in range(10640):
        text=x[i]
        # 通过百度提供的接口方法进行情感倾向提取
        result=client.sentimentClassify(text);
        print(result)
        # 如果解析错误则填写上空值,使得程序不会出错而停止运行
        if "error_code" in result.keys():
            pp.append(" ")
            np.append(" ")
            con.append(" ")
            sen.append(" ")
            all['positive_prob'] = pp
            all['negative_prob'] = np
            all['confidence'] = con
            all['sentiment'] = sen
        else:
            data = result['items']
            items = data[0]
            positive_prob = items['positive_prob']
            pp.append(positive_prob)
            negative_prob = items['negative_prob']
            np.append(negative_prob)
            confidence = items['confidence']
            con.append(confidence)
            sentiment = items['sentiment']
            sen.append(sentiment)
            all['positive_prob'] = pp
            all['negative_prob'] = np
            all['confidence'] = con
            all['sentiment'] = sen
    return all

# 将得到的dict存储到原始的CSV文件中,方便后续进行分析
def add(ulist):
    csv_input = pd.read_csv('E:\\tb_iphone.csv',encoding='gbk')
    pp = DataFrame(ulist['positive_prob'])
    csv_input["positive_prob"] = pp
    csv_input.to_csv('E:\\tb_iphone.csv', index=False,encoding='gbk')
    np = DataFrame(ulist['negative_prob'])
    csv_input["negative_prob"] = np
    csv_input.to_csv('E:\\tb_iphone.csv', index=False, encoding='gbk')
    con = DataFrame(ulist['confidence'])
    csv_input["confidence"] = con
    csv_input.to_csv('E:\\tb_iphone.csv', index=False, encoding='gbk')
    sen = DataFrame(ulist['sentiment'])
    csv_input["sentiment"] = sen
    csv_input.to_csv('E:\\tb_iphone.csv', index=False, encoding='gbk')

if __name__ == '__main__':
    ALL=sentimentClassify()
    add(ALL)

得到的结果如下表:
基于python借助百度云API对评论进行情感极性分析_第3张图片

得到该表格之后可以对情感极性进行简单的统计分析,亦或是抽取出评论极性为消极的部分进行深入分析,从而为商家服务或者产品功能与质量提出改进意见。

你可能感兴趣的:(python爬虫)