手把手教你调用百度api识别文本感情色彩,学不会把女朋友送你!

本文档详细介绍了如何使用百度智能云进行文本情感分析,包括注册/登录、创建应用获取API Key、获取access_token以及编写代码进行情感分析。通过示例代码展示了如何对文本进行分段处理并分析其情感倾向,最后给出了简单的测试结果。
摘要由CSDN通过智能技术生成

有一说一,我没有女朋友,emm,老标题党了,嘿嘿。

 

1.文本情感分析简介

文本情感分析:又称意见挖掘、倾向性分析等。简单而言,是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。互联网(如博客和论坛以及社会服务网络如大众点评)上产生了大量的用户参与的、对于诸如人物、事件、产品等有价值的评论信息。这些评论信息表达了人们的各种情感色彩和情感倾向性,如喜、怒、哀、乐和批评、赞扬等。基于此,潜在的用户就可以通过浏览这些主观色彩的评论来了解大众舆论对于某一事件或产品的看法。

2.注册/登录  百度智能云

应该百度账号就能登录的。

3. 语言处理应用技术

 登录完成后进入“语言处理应用技术”。

 https://console.bce.baidu.com/ai/#/ai/speech/overview/index

进入“管理中心”界面。如下图。

 4.  创建应用,获得KEY

写好相关的信息(纯靠xia  bian),本次示例是文本情感分析,一定要勾选“情感倾向分析”。全选了就行,反正也不要钱。

 

 创建完毕:

 5. 获取 access_token

这里需要一段代码来获取access_token。

# encoding:utf-8
#空白模板


import requests

# client_id 为官网获取的API Key, client_secret 为官网获取的Secret Key
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[你的API Key,不需要方括号]&client_secret=[你的Secret Key,不需要方括号]'
response = requests.get(host)
if response:
    print(response.json())
# encoding:utf-8
import requests


#下面是我的client_id,client_secret,请替换成你自己的

# client_id 为官网获取的API Key, client_secret 为官网获取的Secret Key
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=NtmIpPMmMu2nOfBlhLwwDSoT&client_secret=UnOPGxpqS7aCpPKNND1inEvXvaTFOz1i'
response = requests.get(host)
if response:
    print(response.json())

上面这段代码是我的,直接替换就行。

务必注意host后面的字符串是一体的,不要有空格什么的,我用vscode,他下面是有一条线。

运行完之后是这样的,虽然很多内容,但是都不是很重要,主要是“access_token”:

 6.  文本情感分析代码

import re
import requests
import json

# 将text按照lenth长度分为不同的几段
def cut_text(text, lenth):
    textArr = re.findall('.{' + str(lenth) + '}', text)
    textArr.append(text[(len(textArr) * lenth):])
    return textArr  # 返回多段值

def get_emotion( data):  # 情感分析
    # 定义百度API情感分析的token值和URL值
    token = '24.a8a388b8d09b25d18e181d5a7dcc68c1.2592000.1629196679.282335-24567257'   #记得替换成你的access_token
    url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?charset=UTF-8&access_token={}'.format(token)

    # 百度情感分析API的上限是2048字节,因此判断文章字节数小于2048,则直接调用
    if (len(data.encode()) < 2048):
        new_each = {
            'text': data  # 将文本数据保存在变量new_each中,data的数据类型为string
        }
        new_each = json.dumps(new_each)
        res = requests.post(url, data=new_each)  # 利用URL请求百度情感分析API
        # print("content: ", res.content)
        res_text = res.text  # 保存分析得到的结果,以string格式保存
        result = res_text.find('items')  # 查找得到的结果中是否有items这一项
        positive = 1
        if (result != -1):  # 如果结果不等于-1,则说明存在items这一项
            json_data = json.loads(res.text)
            negative = (json_data['items'][0]['negative_prob'])  # 得到消极指数值
            positive = (json_data['items'][0]['positive_prob'])  # 得到积极指数值
            print("这句话的积极成分:",positive)
            print("这句话的消极成分:",negative)
            # print(positive)
            if (positive > negative):  # 如果积极大于消极,则返回2
                return 2
            elif (positive == negative):  # 如果消极等于积极,则返回1
                return 1
            else:
                return 0  # 否则,返回0
        else:
            return 1
    else:
        data = cut_text(data, 1500)  # 如果文章字节长度大于1500,则切分
        # print(data)
        sum_positive = 0.0  # 定义积极指数值总合
        sum_negative = 0.0  # 定义消极指数值总和
        for each in data:  # 遍历每一段文字
            # print(each)
            new_each = {
                'text': each  # 将文本数据保存在变量new_each中
            }
            new_each = json.dumps(new_each)
            res = requests.post(url, data=new_each)  # 利用URL请求百度情感分析API
            # print("content: ", res.content)
            res_text = res.text  # 保存分析得到的结果,以string格式保存
            result = res_text.find('items')  # 查找得到的结果中是否有items这一项
            if (result != -1):
                json_data = json.loads(res.text)  # 如果结果不等于-1,则说明存在items这一项
                positive = (json_data['items'][0]['positive_prob'])  # 得到积极指数值
                negative = (json_data['items'][0]['negative_prob'])  # 得到消极指数值
                sum_positive = sum_positive + positive  # 积极指数值加和
                sum_negative = sum_negative + negative  # 消极指数值加和
                # print(positive)
        print(sum_positive)
        print(sum_negative)
        if (sum_positive > sum_negative):  # 如果积极大于消极,则返回2
            return 2
        elif (sum_positive == sum_negative):  # 如果消极等于于积极,则返回1
            return 1
        else:
            return 0  # 否则,返回0

def main():
    txt1 = "这人也太坏了吧"
    txt2 = "每天都要开开心心啦"
    print("txt1测试结果:",get_emotion(txt1))
    print("txt2测试结果:",get_emotion(txt2))

if __name__  == "__main__":
    main()

运行结果:

这里的文本我只是简单的测试,也可以通过文件获取,或者语音转文字等方式进行获取。

 7.完结撒花

相信你一定学废了,所以是得不到我的女朋友的!

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是刃小木啦~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值