ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-07-20 10:58:24  阅读:296  来源: 互联网

标签:手把手 each negative api text print 文本 data positive


有一说一,我没有女朋友,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.完结撒花

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

 

标签:手把手,each,negative,api,text,print,文本,data,positive
来源: https://blog.csdn.net/txr152111/article/details/118928296

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有