调用百度API 对文本进行情感倾向分析(舆情分析)

@[TOC]

# 1.准备工作

1.注册百度账号,登录百度智能云,点击总览选择自然语言处理,创建应用(创建选项认真阅读,填写)

创建好应用会生成相应的AppID API Key  Secret Key

2.要调用百度API,就要获得权限,利用获取到的API Key  Secret Key去获取Access Token

获取的地址

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=API key&client_secret=Secret Key&

访问这个地址,获得Access Token(但是Access Token 有一个有效期 超过有效期则调用api将会不成功)

expires_in:Access Token的有效期(秒为单位,一般为1个月)

总结:要调用API 需要a登录--b创建应用--c获得API Key 和Secret Key--d访问授权地址获得Access Token

# 2.调用API测试(简单的例子测试)

利用python调用百度api测试(pyhon直接官网下载,编辑器使用的是其自带的编辑器:IDLE)

做最简单的调用:保存Access Token调用百度API

情感倾向分析:

HTTP方法: POST 请求URL: https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify

参数:access_token(通过API Key和Secret Key获取的access_token)

最简单的例子:可以直接使用(编辑器:IDLE):

import re
import requests
import json
def get_emotion( data):
    # 定义百度API情感分析的token值和URL值
    token = '24.bcc989b57db903cc1189346275b7a372.2592000.1604971755.282335-22803254' 
    url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?charset=UTF-8&access_token={}'.format(token)
    new_each = {'text': data  } # 将文本数据保存在变量new_each中,data的数据类型为string
    new_each = json.dumps(new_each)
    res=requests.post(url,data=new_each) # 利用URL请求百度情感分析API
    res_text = res.text  # 保存分析得到的结果,以string格式保存
    print("content: ", res_text)
    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:",positive)
        print("negative:",negative)
        if (positive > negative):  # 如果积极大于消极,则返回2
            return 2
        elif (positive == negative):  # 如果消极等于积极,则返回1
            return 1
        else:
            return 0  # 否则,返回0
    else:
        return 1
    
def main():
    txt1="有些时候,宇宙似乎是有意使一些事情变得如此有趣。科学家们发现了一个“π行星”,它的大小与我们的地球相仿,距离我们大约185光年"
    print("txt1测试结果:",get_emotion(txt1))

if __name__  == "__main__":
    main()

运行的结果:

# 3.进阶API测试(通过网址抓取网页信息分析情感倾向)

百度情感分析API的上限是2048字节,因此判断文章字节数小于2048,则直接调用 若超过限制,则需要将文本分段

通过输入网址,将网页内容筛选出来进行情感倾向分析

import re
import requests
import json
from bs4 import BeautifulSoup
# 将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.bcc989b57db903cc1189346275b7a372.2592000.1604971755.282335-22803254' 
    url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?charset=UTF-8&access_token={}'.format(token)
    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
        res_text = res.text  # 保存分析得到的结果,以string格式保存
        print("content: ", res_text)
        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:",positive)
            print("negative:",negative)
            if (positive > negative):  # 如果积极大于消极,则返回2
                return 2
            elif (positive == negative):  # 如果消极等于积极,则返回1
                return 1
            else:
                return 0  # 否则,返回0
        else:
            return 1
    else:
        print("文章切分")
        data = cut_text(data, 1500)  # 如果文章字节长度大于1500,则切分
        sum_positive = 0.0  # 定义积极指数值总合
        sum_negative = 0.0  # 定义消极指数值总和
        for each in data:  # 遍历每一段文字
            new_each = {
                'text': each  # 将文本数据保存在变量new_each中
            }
            new_each = json.dumps(new_each)
            res = requests.post(url, data=new_each)  # 利用URL请求百度情感分析API
            res_text = res.text  # 保存分析得到的结果,以string格式保存
            result = res_text.find('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(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 get_html(url):
    headers = {
        'User-Agent':'Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_4)\
        AppleWebKit/537.36(KHTML, like Gecko) Chrome/52 .0.2743. 116 Safari/537.36'
 
    }     #模拟浏览器访问
    response = requests.get(url,headers = headers)       #请求访问网站
    html = response.text       #获取网页源码
    soup = BeautifulSoup(html, 'lxml')   #初始化BeautifulSoup库,并设置解析器
    a=soup.select('p')
    text=""
    for i in a:
         text=text+i.text
    return text
             
def main():
    txt1=get_html("https://baijiahao.baidu.com/s?id=1680186652532987655&wfr=spider&for=pc")
    print(txt1)
    print("txt1测试结果:",get_emotion(txt1))

if __name__  == "__main__":
    main()

# 4.连接数据库 对数据库进行增删改查

数据库的连接,我的应用场景:将网址存在数据库,判断该网址的文本是积极还是消极,步骤:

连接数据库,查询数据库获得url地址,通过url获得网址的文本信息,判断是消极还是积极,再将结果存入数据库,(代码已经调通,只是在上面基础上再加一些功能,可以自己做一哈,若需要源码则留言或私信)

# 5.利用java调用python脚本

调用python脚本的方法有很多,可以自行百度,我这里用的是Runtime.getRuntime().exec()

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class testPython {
    public static void main(String[] args){
        Process process;
        try{
            process=Runtime.getRuntime().exec("python D:\\Users\\2.py");
            BufferedReader in = new BufferedReader(new InputStreamReader((process.getInputStream())));
            String line =null;
            line=in.readLine();
            in.close();
            process.waitFor();

        }catch (IOException e) {
            e.printStackTrace();
        }catch (InterruptedException e){
            e.printStackTrace();
        }
    }
}

 

 
  • 5
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 30
    评论
直播文本情感倾向分析是指通过使用Python语言和百度AI接口对直播内容进行情感分析情感倾向分析主要是通过对直播文本进行自然语言处理情感识别,来判断直播内容中的情感倾向是正面、负面还是中性。 首先,使用Python开发环境,可以编写代码来调用百度AI接口进行情感倾向分析百度AI提供了自然语言处理接口,其中包括情感倾向分析功能。引入相关的Python库,使用接口提供的API密钥进行接口调用。 其次,通过直播文本数据集,可以将每条文本输入到百度AI情感倾向分析接口中。接口将返回结果,代表了该文本情感倾向。结果可能是正面的、负面的或者中性的,分别对应积极、消极和中性情绪。 接着,使用Python编写逻辑和循环代码,对直播文本进行批量情感分析。循环中的每个文本都会被送入接口进行分析,并将分析结果存储下来。我们可以设置一个阈值,将情感倾向得分大于该阈值的文本标记为正面情感,得分小于该阈值的文本标记为负面情感。这样就可以得到直播内容中情感倾向的统计结果。 最后,根据直播内容的情感倾向分析结果,可以为主播或者直播平台提供有价值的信息。例如,如果直播内容的情感倾向普遍为正面,那么可以认为该直播受观众欢迎,有利于提升用户粘性;如果情感倾向普遍为负面,那么可能需要主播或直播平台注意内容调整或是与观众互动,以改善观众的体验。 综上所述,基于Python和百度AI接口的直播文本情感倾向分析能够帮助我们了解直播内容中的情感信息,并为主播和直播平台提供参考,以提升用户参与度和满意度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值