调用API
更新时间:2024-01-25
接口描述
基于自定义训练出的评论观点抽取模型,实现对评论文本中评价维度、评价观点的抽取以及对评价观点的情感倾向的判断。模型训练完毕后发布可获得定制化评论观点抽取API 详情访问:定制化训练和服务平台进行训练。
更多训练模型过程中的常见问题请查看 常见问题文档。
如有其它问题,请在百度云控制台内提交工单反馈。
请求说明
请求示例
HTTP 方法:POST
请求URL: 请首先在定制化训练平台进行自定义模型训练,完成训练后可在服务列表中查看并获取url。
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
注意:如果出现336001的错误码很可能是因为请求方式错误,定制化文本分类服务以json方式请求。
Body请求示例:
{
"text": "电影故事结构很松散,但是小丽的演技一如既往的不错,配合她的男演员挺好的,比如说小杰,他在对手戏中有很强的互动性",
"analyse_object": "小丽",
"analyse_type": 1
}
Body中放置请求参数,参数详情如下:
请求参数
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
text | 是 | string | - | 超过512个token将被截断 |
analyse_object | 否 | string | - | 评论实体对象 |
analyse_type | 是 | int | 1/2/3/4 | 只能选择枚举值的一个 |
请求示例代码
# coding=utf-8
import sys
import json
# 保证兼容python2以及python3
IS_PY3 = sys.version_info.major == 3
if IS_PY3:
from urllib.request import urlopen
from urllib.request import Request
from urllib.error import URLError
from urllib.parse import urlencode
from urllib.parse import quote_plus
else:
import urllib2
from urllib import quote_plus
from urllib2 import urlopen
from urllib2 import Request
from urllib2 import URLError
from urllib import urlencode
reload(sys)
sys.setdefaultencoding('utf8')
# 防止https证书校验不正确
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
# 百度云控制台获取到ak,sk以及
# EasyDL官网获取到URL
# ak
API_KEY = 'kQWXQ8oe5G5T7ATzXXXXXXXX'
# sk
SECRET_KEY = 'Y30GtHsKzyH6fUUsQl32GvoBXXXXXXXX'
# url
EASYDL_TEXT_CLASSIFY_URL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/text_gen/lirics_gen"
""" TOKEN start """
TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token'
"""
获取token
"""
def fetch_token():
params = {'grant_type': 'client_credentials',
'client_id': API_KEY,
'client_secret': SECRET_KEY}
post_data = urlencode(params)
if (IS_PY3):
post_data = post_data.encode('utf-8')
req = Request(TOKEN_URL, post_data)
try:
f = urlopen(req, timeout=5)
result_str = f.read()
print('success')
except URLError as err:
print(err)
if (IS_PY3):
result_str = result_str.decode()
result = json.loads(result_str)
if ('access_token' in result.keys() and 'scope' in result.keys()):
if not 'brain_all_scope' in result['scope'].split(' '):
print('please ensure has check the ability')
exit()
return result['access_token']
else:
print('please overwrite the correct API_KEY and SECRET_KEY')
exit()
"""
调用远程服务
"""
def request(url, data):
if IS_PY3:
req = Request(url, json.dumps(data).encode('utf-8'))
else:
req = Request(url, json.dumps(data))
has_error = False
try:
f = urlopen(req)
result_str = f.read()
if (IS_PY3):
result_str = result_str.decode()
return result_str
except URLError as err:
print(err)
if __name__ == '__main__':
# 获取access token
token = fetch_token()
# 拼接url
url = EASYDL_TEXT_CLASSIFY_URL + "?access_token=" + token
text = "电影故事结构很松散,但是小丽的演技一如既往的不错,配合她的男演员挺好的,比如说小杰,他在对手戏中有很强的互动性:"
# 请求接口
# 测试
response = request(url,
{
'text': text,
'analyse_object': '小丽',
'analyse_type':1
})
result_json = json.loads(response)['result']['content']
print('u{0}'.format(result_json))
返回说明
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
analyse_type | 是 | int | 1代表评价片段,2代表评价维度,3代表评价观点词,4代表评价情感倾向;示例:analyse_type:"1"或analyse_type:"4",每次请求仅为单值; |
log_id | 是 | number | 唯一的log id,用于问题定位 |
result | 是 | array(object) | 需要计算的评价对象数组,元素为字典 |
+start_offset | 是 | int | 开始位置 |
+prob | 是 | float | 置信度 |
+end_offset | 是 | int | 结束位置 |
+text | 是 | string | 抽取文本 |
text | 是 | string | 输入文本,超过512个token将被截断 |
返回示例
{
"analyse_type":1,
"log_id":7000918336750814129,
"result":[
{
"start_offset": 10,
"prob": 0.4721265733242,
"end_offset": 24,
"text": "但是小丽的演技一如既往的不错"
}
],
"text":"电影故事结构很松散,但是小丽的演技一如既往的不错,配合她的男演员挺好的,比如说小杰,他在对手戏中有很强的互动性"
}
在线调试
EasyDL零基础开发平台提供了 示例代码中心(API调试平台)-示例代码 ,用于帮助开发者在线调试接口,查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用。
错误码
若请求错误,服务器将返回的JSON文本包含以下参数:
- error_code:错误码。
- error_msg:错误描述信息,帮助理解和解决发生的错误。
例如Access Token失效返回:
{
"error_code": 110,
"error_msg": "Access token invalid or no longer valid"
}
需要重新获取新的Access Token再次请求即可。
错误码 | 错误信息 | 描述 |
---|---|---|
1 | Unknown error | 服务器内部错误,请再次请求, 如果持续出现此类错误,请在百度云控制台内提交工单反馈。 |
2 | Service temporarily unavailable | 服务暂不可用,请再次请求, 如果持续出现此类错误,请在百度云控制台内提交工单反馈。 |
3 | Unsupported openapi method | 调用的API不存在,请检查后重新尝试 |
4 | Open api request limit reached | 集群超限额 |
6 | No permission to access data | 无权限访问该用户数据 |
13 | Get service token failed | 获取token失败 |
14 | IAM Certification failed | IAM鉴权失败 |
15 | app not exists or create failed | 应用不存在或者创建失败 |
17 | Open api daily request limit reached | 每天请求量超限额,已上线计费的接口,请直接在控制台开通计费,调用量不受限制,按调用量阶梯计费;未上线计费的接口,请在百度云控制台内提交工单反馈 |
18 | Open api qps request limit reached | QPS超限额,已上线计费的接口,请直接在控制台开通计费,调用量不受限制,按调用量阶梯计费;未上线计费的接口,请在百度云控制台内提交工单反馈 |
19 | Open api total request limit reached | 请求总量超限额,已上线计费的接口,请直接在控制台开通计费,调用量不受限制,按调用量阶梯计费;未上线计费的接口,请在百度云控制台内提交工单反馈 |
100 | Invalid parameter | 无效的access_token参数,请检查后重新尝试 |
110 | Access token invalid or no longer valid | access_token无效 |
111 | Access token expired | access token过期 |
336000 | Internal error | 服务器内部错误,请再次请求, 如果持续出现此类错误,请在百度云控制台内提交工单反馈 |
336001 | Invalid Argument | 入参格式有误,比如缺少必要参数、文本的编码UTF-8等问题。有疑问请通过QQ群(868826008)或在百度云控制台内提交工单反馈 |
336002 | JSON不合法 | 入参格式或调用方式有误,比如缺少必要参数或代码格式有误。有疑问请在百度云控制台内提交工单反馈 |
336003 | Base64解码失败 | 文本格式有误或base64编码有误,请根据接口文档检查格式,base64编码请求时注意要去掉头部。有疑问请在百度云控制台内提交工单反馈 |
336004 | 输入文件大小不合法 | 文本大小不合法,目前支持文本文件类型为支持txt,文本文件大小限制长度最大512 UTF-8字符。 |
336005 | 解码失败 | 文本编码错误(不是utf-8),目前支持文本文件类型为支持txt。如果遇到请重试,如反复失败,请在百度云控制台内提交工单反馈 |
336006 | 缺失必要参数 | 未上传文本文件 |
336100 | model temporarily unavailable | 遇到该错误码请等待1分钟后再次请求,可恢复正常,若反复重试依然报错或有疑问请在百度云控制台内提交工单反馈 |