认证授权:
在开始调用任何API之前需要先进行认证授权,具体的说明请参考:
http://ai.baidu.com/docs#/Auth/top
获取Access Token
向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:
grant_type:?必须参数,固定为client_credentials;
client_id:?必须参数,应用的API Key;
client_secret:?必须参数,应用的Secret Key;
例如:
具体代码如下:
# -*- coding: utf-8 -*- #!/usr/bin/env python import urllib import json #client_id 为官网获取的AK, client_secret 为官网获取的SK client_id =【百度云应用的AK】 client_secret =【百度云应用的SK】 #获取token def get_token(): host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret request = urllib.request.Request(host) request.add_header('Content-Type', 'application/json; charset=UTF-8') response = urllib.request.urlopen(request) token_content = response.read() if token_content: token_info = json.loads(token_content) token_key = token_info['access_token'] return token_key
对话情绪识别
对话情绪识别的详细介绍请看:http://ai.baidu.com/tech/nlp/emotion_detection
接口描述
针对用户日常沟通文本背后所蕴含情绪的一种直观检测,可自动识别出当前会话者所表现出的一级和二级细分情绪类别及其置信度,针对正面和负面的情绪,还可给出参考回复话术。帮助企业更全面地把握产品服务质量、监控客户服务质量。在自动监控中如果发现有负面情绪出现,可以及时介入人工处理,帮助在有限的人工客服条件下,降低客户流失。
请求说明
HTTP方法:?POST
请求URL:?https://aip.baidubce.com/rpc/2.0/nlp/v1/emotion
URL参数:
access_token:?通过API Key和Secret Key获取的access_token,参考“Access Token获取”
Header如下:
Content-Typeapplication/json
Body请求示例:
{
"scene":"talk",
"text": "本来今天高高兴兴"
}
现在body整体文本内容可以支持GBK和UTF-8两种格式的编码了。
1、GBK支持:默认按GBK进行编码,输入内容为GBK编码,输出内容为GBK编码,否则会接口报错编码错误
2、UTF-8支持:若文本需要使用UTF-8编码,请在url参数中添加charset=UTF-8 (大小写敏感) 例如 https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?charset=UTF-8&access_token=24.f9ba9c5241b67688bb4adbed8bc91dec.2592000.1485570332.282335-8574074
请求参数
返回说明
我用Python3写的调用函数如下:
def get_emotion(content): token=get_token() url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/emotion' params = dict() params['scene'] = 'talk' params['text'] = content params = json.dumps(params).encode('utf-8') access_token = token url = url + "?access_token=" + access_token url = url + "&charset=UTF-8" # 此处指定输入文本为UTF-8编码,返回编码也为UTF-8 request = urllib.request.Request(url=url, data=params) request.add_header('Content-Type', 'application/json') response = urllib.request.urlopen(request) content = response.read() if content: content=content.decode('utf-8') data = json.loads(content) return data else: return ''
执行:print (get_emotion('本来今天高高兴兴'))
结果如下:
{'log_id': 8567920447474187651, 'text': '本来今天高高兴兴', 'items': [{'subitems': [{'prob': 0.501008, 'label': 'happy'}], 'replies': ['笑一笑十年少'], 'prob': 0.501008, 'label': 'optimistic'}, {'subitems': [], 'replies': [], 'prob': 0.49872, 'label': 'neutral'}, {'subitems': [], 'replies': [], 'prob': 0.000272128, 'label': 'pessimistic'}]}
对话扩展:
有一个好玩的点子就是将返回的推荐Replies再发回去,是不是就能让Ai自己和自己聊天了。说干就干,Python代码如下:
def get_reply(data): item=data['items'][0] return item['prob'],item['label'],item['replies'] #聊天机器人,startcontent开始内容,talktimes聊多少句 def talk_bot(startcontent,talktimes): content=startcontent print (content) for i in range(talktimes): content=get_emotion(content) prob,label,replies=get_reply(content) print (i,prob,label,replies) if len(replies)==0: return else: content=replies
执行:
talk_bot('今天真开心啊',5)
今天真开心啊
0 0.998117 optimistic ['笑得真可爱']
1 0.998332 optimistic ['眼光不错']
2 0.979875 optimistic ['感觉自己棒棒哒']
3 0.932955 optimistic ['谢谢,我很开心']
4 0.999511 optimistic ['开心笑一笑']
talk_bot('你真漂亮啊',5)
你真漂亮啊
0 0.989602 optimistic ['感觉自己棒棒哒']
1 0.932955 optimistic ['谢谢,我很开心']
2 0.999511 optimistic ['笑得真可爱']
3 0.998332 optimistic ['感觉自己棒棒哒']
4 0.932955 optimistic ['谢谢,我很开心']
建议:
现在的参考回复话术,中性情绪下该项为空。不知道是否能在中性情绪下也返回一些建议的回复内容,这样的话便于统一处理。
1.MybatisPlus2.整合前端页面Ajax
数据库性能优化详解 - 无知的博客 - 程序员秘密
在开发中, 我们习惯了类似下面这种方式去实现引用资源:context.getResources().getDrawable(R.drawable.flower);但是,当我们提前知道这个资源的id,想动态去引用,而不是在id里面固化应该怎么办呢? 比如某个图片资源的id是R.drawable.test_1, 而且有序的还有test_2,test_3, 我们如何动态的去引用它们?这里有两种方案:
Linux哲学之美linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪的说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼之路上的一个小菜鸟,linux的东西真的太丰富了,让你感觉只要掌握了其中的一个部分,就可以在求职之路上大放光彩,因此我常常感叹自己的弱小和无知,我离着linux的中心是多么的遥远,我只看到众多高耸的山峰。...
mysql怎么导出表Mysql导出表方法如下,可用第三方工具NavicatforMysql。1、登录到指定的Mysql数据库。2、在指定的数据库下找到“表”,然后在右侧找到要导出的表名。3、在表名处点击鼠标右键,选择“导出向导”。4、选择要导出的格式,点击“下一步”。5、选择导出的路径,然后继续“下...
Gateway网关异常处理一、webflux框架全局异常处理通过实现ErrorWebExceptionHandler接口,重写handle方法,替换掉框架默认的异常处理实现类DefaultErrorWebExceptionHandlerpublic class GatewayErrorWebExceptionHandler implements ErrorWebExceptionHandler { /** * 处理给定的异常 * @param exchange
本文为亮风台公司投稿。6月14日-19日,CVPR 2020在线上举行,据了解,本届大会共收到6656篇投稿,接收论文1470篇,录用率约22%,低于ICCV 2019论文录用率(25%...
准备首先保证安装过Visual C++ Redistributable for Visual Studio 2015下载免安装版Apache&PHP&Mysql下载完成后找一个非中文目录解压 添加系统环境变量,根据自己解压的目录自行修改 D:\ASP\Apache24\bin D:\ASP\mysql-5.7\bin D:\ASP\php7.2 D:\ASP\...
经典的分类模型,鸾尾花的分类。 数据集样例: length sepal width petal length petal width class 5.1 3.5 1.4 0.2 Iris-setosa 4.9 3 1.4 0.2 Iris-versicolor 4.7 3.2 1.3 0.2 Iris-virginica
这次的模型依旧很简单,主要是介绍前提条件在模型构建器中的应用新建模型我就不讲了,之前都说过可参考:ArcGIS模型构建器操作案例——提取相关属性信息首先先简单介绍一下这次模型的功能,就是我们要用省级行政区划边界和全国的县城点来提取出该省县城位置首先我们先想一下,我们正常的操作流程,是新建一个文件夹和gdb数据库,然后再按照操作流程创建模型那么我们可不可以将创建gdb数据库在创建模型的过程中,一并自动创建呢,当然是可以的,我们可以将创建gdb数据库这个流程当做我们运行模型的前提条件,然后一并创建.
根据离散点的三维坐标生成等高线的方法主要有网格法和三角网法。三角网方法相比与网格法,能够用较少的空间和时间更精确的拟合复杂地表面,因而得到了广泛的应用。本文主要介绍三角网法生成等高线的算法。下一篇文章用代码实现。1.构造狄洛尼三角在狄洛尼法中将离散分布的地形点称为“参考点”。构成狄洛尼三角网时规定:“每个参考点组成的三角形的外接圆都不包含其他参考点”。其计算方法如下:1)任取一个参考点作为起始点P...
工程规划为了统一配置和代码解耦,我们对代码重新进行了整理和规划。重新规划后,代码结构如下:kitty-pom: 统一管理 Maven 版本,打包配置kitty-common: 公共代码模块,主要放置工具类kitty-core: 核心代码模块,主要封装公共业务模块kitty-admin: 后台管理模块,包含用户、角色、菜单管理等kitty-boot: Spring Boot 启动模块,包含一些全局配...