作者:小哥脾气 | 来源:互联网 | 2023-07-11 12:05
1.准备工作
2.调用API测试(简单的例子测试)
3.进阶API测试(通过网址抓取网页信息分析情感倾向)
4.连接数据库 对数据库进行增删改查
5.利用java调用python脚本
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的数据类型为stringnew_each = json.dumps(new_each)res=requests.post(url,data=new_each) # 利用URL请求百度情感分析APIres_text = res.text # 保存分析得到的结果,以string格式保存print("content: ", res_text)result = res_text.find('items') # 查找得到的结果中是否有items这一项positive = 1if (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): # 如果积极大于消极,则返回2return 2elif (positive == negative): # 如果消极等于积极,则返回1return 1else:return 0 # 否则,返回0else:return 1def 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 &#61; re.findall(&#39;.{&#39; &#43; str(lenth) &#43; &#39;}&#39;, text)textArr.append(text[(len(textArr) * lenth):])return textArr # 返回多段值def get_emotion( data):# 定义百度API情感分析的token值和URL值token &#61; &#39;24.bcc989b57db903cc1189346275b7a372.2592000.1604971755.282335-22803254&#39; url &#61; &#39;https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?charset&#61;UTF-8&access_token&#61;{}&#39;.format(token)if (len(data.encode()) <2048):new_each &#61; {&#39;text&#39;: data } # 将文本数据保存在变量new_each中&#xff0c;data的数据类型为stringnew_each &#61; json.dumps(new_each)res&#61;requests.post(url,data&#61;new_each) # 利用URL请求百度情感分析APIres_text &#61; res.text # 保存分析得到的结果&#xff0c;以string格式保存print("content: ", res_text)result &#61; res_text.find(&#39;items&#39;) # 查找得到的结果中是否有items这一项positive &#61; 1if (result !&#61; -1): # 如果结果不等于-1&#xff0c;则说明存在items这一项json_data &#61; json.loads(res.text)negative &#61; (json_data[&#39;items&#39;][0][&#39;negative_prob&#39;]) # 得到消极指数值positive &#61; (json_data[&#39;items&#39;][0][&#39;positive_prob&#39;]) # 得到积极指数值print("positive:",positive)print("negative:",negative)if (positive > negative): # 如果积极大于消极&#xff0c;则返回2return 2elif (positive &#61;&#61; negative): # 如果消极等于积极&#xff0c;则返回1return 1else:return 0 # 否则&#xff0c;返回0else:return 1else:print("文章切分")data &#61; cut_text(data, 1500) # 如果文章字节长度大于1500&#xff0c;则切分sum_positive &#61; 0.0 # 定义积极指数值总合sum_negative &#61; 0.0 # 定义消极指数值总和for each in data: # 遍历每一段文字new_each &#61; {&#39;text&#39;: each # 将文本数据保存在变量new_each中}new_each &#61; json.dumps(new_each)res &#61; requests.post(url, data&#61;new_each) # 利用URL请求百度情感分析APIres_text &#61; res.text # 保存分析得到的结果&#xff0c;以string格式保存result &#61; res_text.find(&#39;items&#39;)if (result !&#61; -1):json_data &#61; json.loads(res.text) # 如果结果不等于-1&#xff0c;则说明存在items这一项positive &#61; (json_data[&#39;items&#39;][0][&#39;positive_prob&#39;]) # 得到积极指数值negative &#61; (json_data[&#39;items&#39;][0][&#39;negative_prob&#39;]) # 得到消极指数值sum_positive &#61; sum_positive &#43; positive # 积极指数值加和sum_negative &#61; sum_negative &#43; negative # 消极指数值加和print(sum_positive)print(sum_negative)if (sum_positive > sum_negative): # 积极 如果积极大于消极&#xff0c;则返回2return 2elif (sum_positive &#61;&#61; sum_negative): # 中性 如果消极等于于积极&#xff0c;则返回1return 1else:return 0 # 消极&#xff0c;返回0
def get_html(url):headers &#61; {&#39;User-Agent&#39;:&#39;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&#39;} #模拟浏览器访问response &#61; requests.get(url,headers &#61; headers) #请求访问网站html &#61; response.text #获取网页源码soup &#61; BeautifulSoup(html, &#39;lxml&#39;) #初始化BeautifulSoup库,并设置解析器a&#61;soup.select(&#39;p&#39;)text&#61;""for i in a:text&#61;text&#43;i.textreturn textdef main():txt1&#61;get_html("https://baijiahao.baidu.com/s?id&#61;1680186652532987655&wfr&#61;spider&for&#61;pc")print(txt1)print("txt1测试结果&#xff1a;",get_emotion(txt1))if __name__ &#61;&#61; "__main__":main()
4.连接数据库 对数据库进行增删改查
数据库的连接&#xff0c;我的应用场景&#xff1a;将网址存在数据库&#xff0c;判断该网址的文本是积极还是消极&#xff0c;步骤&#xff1a;
连接数据库&#xff0c;查询数据库获得url地址&#xff0c;通过url获得网址的文本信息&#xff0c;判断是消极还是积极&#xff0c;再将结果存入数据库&#xff0c;&#xff08;代码已经调通&#xff0c;只是在上面基础上再加一些功能&#xff0c;可以自己做一哈&#xff0c;若需要源码则留言或私信&#xff09;
5.利用java调用python脚本
调用python脚本的方法有很多&#xff0c;可以自行百度&#xff0c;我这里用的是Runtime.getRuntime().exec&#xff08;&#xff09;
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&#61;Runtime.getRuntime().exec("python D:\\Users\\2.py");BufferedReader in &#61; new BufferedReader(new InputStreamReader((process.getInputStream())));String line &#61;null;line&#61;in.readLine();in.close();process.waitFor();}catch (IOException e) {e.printStackTrace();}catch (InterruptedException e){e.printStackTrace();}}
}