热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

1.准备工作2.调用API测试(简单的例子测试)3.进阶API测试(通过网址抓取网页信息分析情感倾向)4.连接数据库对

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();}}
}

 


 

推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • oracle安装时找不到启动,Oracle没有开机自启是怎么回事?这一步骤很重要
    重启Oracle数据库重启Oracle数据库包括启动Oracle数据库服务进程和启动Oracle数据库两步,大家继续往下看。按照《【Oracle】什么?作为DBA&# ... [详细]
  • 本文总结了Java中日期格式化的常用方法,并给出了示例代码。通过使用SimpleDateFormat类和jstl fmt标签库,可以实现日期的格式化和显示。在页面中添加相应的标签库引用后,可以使用不同的日期格式化样式来显示当前年份和月份。该文提供了详细的代码示例和说明。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
author-avatar
小哥脾气
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有