基于百度API的淘宝评论情感分析

(1)实验思路

通过百度easydl平台,获取情感倾向分析的密钥,接着基于密钥对封装好的接口发送请求以进行情感倾向分析,并绘制相关柱状图、饼状图对其进行分析,该技术可为为口碑分析、话题监控、舆情分析等应用提供基础技术支持。

(2)实验数据

pinglun.txt

(3)实验步骤

1、获取百度密钥

2、导入实验库

import requests # 导入requests库,用于向服务器发送HTTP请求
import json # 导入json库,用于处理JSON格式数据
import matplotlib.pyplot as plt # 导入matplotlib库,用于绘制和显示图像

3、读取淘宝评论数据集

# 创建一个空列表来保存每一行的内容
content_list = []

# 使用'with'语句打开文件,这样可以确保文件在使用完之后会被正确关闭
with open('pinglun.txt', 'r') as f:
    # 使用readlines()方法读取每一行
    content_list = f.readlines()

4、对数据集进行处理。这里使用strip()方法将每行内容末尾的换行符去掉,处理完成后打印结果。

# 去掉每行内容末尾的换行符
content_list = [x.strip() for x in content_list]

# 输出结果
print(content_list)

输出结果如下,可见淘宝评论数据集的10条评论内容都以字符串的形式存储在列表里,并且去除了冗余的换行符。

5、由官方文档可知,可以以POST的形式发送请求信息,信息包括请求URL、请求消息头与请求消息体三种。首先设置请求URL,即发送请求的对象。这里将步骤1中所复制的链接赋值到request_url变量中。

API_KEY = "你的API_KEY"
SECRET_KEY = "你的SECRET_KEY"
request_url = "https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?charset=&access_token=" + get_access_token()

6、接下来定义请求消息头,指定传输数据的格式和类型。

#设置HTTP头,指定传输数据的格式和类型
headers = {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
}

7、创建一个空列表result,用于保存每次HTTP请求的结果;其次,我们以content_list里的前6条评论为例(可根据需求进行修改),将文本传入请求消息体所需参数“text”;接着发送POST请求,并使用print()语句查看是否请求成功。如响应成功(即HTTP状态码为200),则打印响应的JSON内容,并将这个JSON内容添加到列表result中。

# 保存请求结果
result = []

# 在请求体设置请求参数,包括需要识别的文本信息等
for content in content_list[:6]:
    params = json.dumps({"text": content})
    #发送post请求
    response = requests.post(request_url, data=params, headers=headers)
    #查看响应信息
    print(response)

    #如果HTTP响应成功,则打印响应内容
    if response:
        print (response.json())
        result.append(response.json())

程序输出结果如下,分别对应了6条评论的HTTP响应对象和响应的JSON内容。其中,6个HTTP状态码都是200,表示请求成功;每个状态码后面都接着一个字典,即响应的JSON内容。如“好用,物有所值!”这条评论的分类置信度约为0.999,表示为消极类别的概率约为0.0007,表示为积极类别的概率约为0.9999,情感分类结果为2(正向)。

9、由于接口的返回结果包括请求的文本、分类结果列表、唯一标识码等信息,不方便进行查看,且不能快速获取这些评论中每个类别的数量。因此接下来进行识别结果信息提取及进行可视化,将每条评论的类别进行统计,并进行柱状图与饼图可视化分析。这里首先定义三个变量,分别用于统计负向、中性、正向的评论数量。

# 创建三个变量来统计negative_prob、positive_prob和zhongxing_count的值
negative_probs_count = 0
positive_probs_count = 0
zhongxing_count = 0

10、执行分类结果统计操作。这里首先通过遍历字典中sentiment键的值,来获取情感极性分类的结果,即负向、中性、正向中的一类;接着根据sentiment的值对三类情绪进行数量统计,比如sentiment为0,表示这是一个负向情感的文本,接着获取文本内容、类别和负向情感置信度的标签,并打印结果,最后将负向情感的计数器negative_probs_count加1。

# 遍历result中的每个字典
for re in result:
    # 遍历字典中items键的值(一个列表)
    for item in re['items']:
        # 提取sentiment,即情感极性分类结果
        sentiment = item['sentiment']
        # 执行分类与统计
        if sentiment == 0:
            print('文本内容:',re['text'],'类别:负向','置信度:',item['negative_prob'])
            negative_probs_count += 1
        elif sentiment == 1:
            print('文本内容:',re['text'],'类别:中性','置信度:',item['confidence'])
            zhongxing_count += 1
        else:
            print('文本内容:',re['text'],'类别:正向','置信度:',item['positive_prob'])
            positive_probs_count += 1

# 输出结果
print('negative_probs_count:', negative_probs_count)
print('zhongxing_count:',zhongxing_count)
print('positive_probs_count:', positive_probs_count)

程序输出结果如下,经过提取后,可以看出识别的结果更加直观了。其中,negative_probs_count:1表示抽取的6条评论中有1条负向情感,zhongxing_count:0表示抽取的6条评论中有0条中性情感,positive_probs_count:5表示抽取的6条评论中有5条正向情感。

11、使用柱状图分析淘宝评论数据。

# 使用柱状图分析电商评论情感倾向数据
plt.bar(['negative_probs','positive_probs'], [negative_probs_count,positive_probs_count]) # 执行绘图操作
plt.xlabel('label') # x轴的标签
plt.ylabel('Number') # y轴的标签
plt.title('Category statistics') # 图表标题
plt.show() # 显示图表

程序输出结果如图所示,可见negative_probs的显示结果在图表左侧,positive_probs的显示结果在图表右侧。

12、使用饼状图分析淘宝评论数据。这里我们使用matplotlib库中的pie函数绘制饼状图,同样地,首先也是先向pie函数中传入x,y轴的数据,接着设置autopct参数为“%1.1f%%”用于在饼图中显示每个扇形的百分比,保留一位小数;最后设置图表标题,并使用show方法显示饼状图。

# 使用饼状图分析电商评论情感倾向数据
plt.pie([negative_probs_count,positive_probs_count], labels=['negative_probs','positive_probs'], autopct='%1.1f%%') # 执行绘图操作
plt.title('Category statistics') # 图表标题
plt.show() # 显示图表

程序输出结果如图所示,可见6条评价中,持积极情绪的评价占比为83.3%,负面情绪评价占比为16.7%。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值