调⽤百度API对⽂本进⾏情感倾向分析(舆情分析)@[TOC]
# 1.准备⼯作
1.注册百度账号,登录百度智能云,点击总览选择⾃然语⾔处理,创建应⽤(创建选项认真阅读,填写)
创建好应⽤会⽣成相应的AppID API Key  Secret Key
2.要调⽤百度API,就要获得权限,利⽤获取到的API Key  Secret Key去获取Access Token
获取的地址
aip.baidubce/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
情感倾向分析:
参数: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 = 'aip.baidubce/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 =   # 保存分析得到的结果,以string格式保存
print("content: ", res_text)
result = res_text.find('items')  # 查得到的结果中是否有items这⼀项
positive = 1
if (result != -1):  # 如果结果不等于-1,则说明存在items这⼀项
json_data = json.)
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 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  # 返回多段值
could not transfer artifact
def get_emotion( data):
# 定义百度API情感分析的token值和URL值
python请求并解析json数据
token = '24.bcc989b57db903cc1189346275b7a372.2592000.1604971755.282335-22803254'
url = 'aip.baidubce/rpc/2.0/nlp/v1/sentiment_classify?charset=UTF-8&access_token={}'.format(token)    if (de()) < 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 =   # 保存分析得到的结果,以string格式保存
print("content: ", res_text)
result = res_text.find('items')  # 查得到的结果中是否有items这⼀项
positive = 1
对勾函数的四种模型及图像
if (result != -1):  # 如果结果不等于-1,则说明存在items这⼀项
json_data = json.)
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
batterystatus下载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 = {
学生安装eclipse选择哪一个'text': each  # 将⽂本数据保存在变量new_each中
}
new_each = json.dumps(new_each)
res = requests.post(url, data=new_each)  # 利⽤URL请求百度情感分析API
res_text =   # 保存分析得到的结果,以string格式保存
result = res_text.find('items')
if (result != -1):
json_data = json.)  # 如果结果不等于-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)\
'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 = (url,headers = headers)      #请求访问⽹站
html =       #获取⽹页源码
soup = BeautifulSoup(html, 'lxml')  #初始化BeautifulSoup库,并设置解析器
a=soup.select('p')
text=""
for i in a:
text=
return text
def main():
txt1=get_html("baijiahao.baidu/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().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{现在计算机学什么专业好
Runtime().exec("python D:\\Users\\2.py");
BufferedReader in = new BufferedReader(new InputStreamReader((InputStream())));            String line =null;
adLine();
in.close();
process.waitFor();
}catch (IOException e) {
e.printStackTrace();
}catch (InterruptedException e){
e.printStackTrace();
}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。