调用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请求示例:
Plain Text
1{
2 "text": "电影故事结构很松散,但是小丽的演技一如既往的不错,配合她的男演员挺好的,比如说小杰,他在对手戏中有很强的互动性",
3 "analyse_object": "小丽",
4 "analyse_type": 1
5}
Body中放置请求参数,参数详情如下:
请求参数
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
text | 是 | string | - | 超过512个token将被截断 |
analyse_object | 否 | string | - | 评论实体对象 |
analyse_type | 是 | int | 1/2/3/4 | 只能选择枚举值的一个 |
请求示例代码
Python3
1# coding=utf-8
2
3import sys
4import json
5
6# 保证兼容python2以及python3
7IS_PY3 = sys.version_info.major == 3
8if IS_PY3:
9 from urllib.request import urlopen
10 from urllib.request import Request
11 from urllib.error import URLError
12 from urllib.parse import urlencode
13 from urllib.parse import quote_plus
14else:
15 import urllib2
16 from urllib import quote_plus
17 from urllib2 import urlopen
18 from urllib2 import Request
19 from urllib2 import URLError
20 from urllib import urlencode
21
22 reload(sys)
23 sys.setdefaultencoding('utf8')
24
25# 防止https证书校验不正确
26import ssl
27
28ssl._create_default_https_context = ssl._create_unverified_context
29
30# 百度云控制台获取到ak,sk以及
31# EasyDL官网获取到URL
32
33# ak
34API_KEY = 'kQWXQ8oe5G5T7ATzXXXXXXXX'
35
36# sk
37SECRET_KEY = 'Y30GtHsKzyH6fUUsQl32GvoBXXXXXXXX'
38
39# url
40EASYDL_TEXT_CLASSIFY_URL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/text_gen/lirics_gen"
41
42""" TOKEN start """
43TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token'
44"""
45 获取token
46"""
47
48
49def fetch_token():
50 params = {'grant_type': 'client_credentials',
51 'client_id': API_KEY,
52 'client_secret': SECRET_KEY}
53 post_data = urlencode(params)
54 if (IS_PY3):
55 post_data = post_data.encode('utf-8')
56 req = Request(TOKEN_URL, post_data)
57 try:
58 f = urlopen(req, timeout=5)
59 result_str = f.read()
60 print('success')
61 except URLError as err:
62 print(err)
63 if (IS_PY3):
64 result_str = result_str.decode()
65
66 result = json.loads(result_str)
67
68 if ('access_token' in result.keys() and 'scope' in result.keys()):
69 if not 'brain_all_scope' in result['scope'].split(' '):
70 print('please ensure has check the ability')
71 exit()
72 return result['access_token']
73 else:
74 print('please overwrite the correct API_KEY and SECRET_KEY')
75 exit()
76
77
78"""
79 调用远程服务
80"""
81
82
83def request(url, data):
84 if IS_PY3:
85 req = Request(url, json.dumps(data).encode('utf-8'))
86 else:
87 req = Request(url, json.dumps(data))
88
89 has_error = False
90 try:
91 f = urlopen(req)
92 result_str = f.read()
93 if (IS_PY3):
94 result_str = result_str.decode()
95 return result_str
96 except URLError as err:
97 print(err)
98
99
100if __name__ == '__main__':
101
102 # 获取access token
103 token = fetch_token()
104
105 # 拼接url
106 url = EASYDL_TEXT_CLASSIFY_URL + "?access_token=" + token
107
108 text = "电影故事结构很松散,但是小丽的演技一如既往的不错,配合她的男演员挺好的,比如说小杰,他在对手戏中有很强的互动性:"
109
110 # 请求接口
111 # 测试
112 response = request(url,
113 {
114 'text': text,
115 'analyse_object': '小丽',
116 'analyse_type':1
117
118 })
119
120 result_json = json.loads(response)['result']['content']
121
122 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将被截断 |
返回示例
Plain Text
1{
2 "analyse_type":1,
3 "log_id":7000918336750814129,
4 "result":[
5 {
6 "start_offset": 10,
7 "prob": 0.4721265733242,
8 "end_offset": 24,
9 "text": "但是小丽的演技一如既往的不错"
10 }
11 ],
12 "text":"电影故事结构很松散,但是小丽的演技一如既往的不错,配合她的男演员挺好的,比如说小杰,他在对手戏中有很强的互动性"
13}
在线调试
EasyDL零基础开发平台提供了 示例代码中心(API调试平台)-示例代码 ,用于帮助开发者在线调试接口,查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用。
错误码
若请求错误,服务器将返回的JSON文本包含以下参数:
- error_code:错误码。
- error_msg:错误描述信息,帮助理解和解决发生的错误。
例如Access Token失效返回:
Plain Text
1{
2 "error_code": 110,
3 "error_msg": "Access token invalid or no longer valid"
4}
需要重新获取新的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分钟后再次请求,可恢复正常,若反复重试依然报错或有疑问请在百度云控制台内提交工单反馈 |