在 IBM Watson 中,一次 API 调用能否获得多个结果?
Can one get multiple results from one API call in IBM Watson?
我正在使用 Python 为 IBM Watson 的 Personality Insights 服务编写脚本。我将结果用作机器学习项目的训练数据。
由于服务有限 (100 calls/month),是否可以通过一次 API 电话获得多种人格洞察?
您不限于每月 100 次 API 次通话,超过 100 次您必须为 API 次通话付费。
Jeff 关于 API 限制是正确的:您不限于 100 api calls/month;这只是您每月接到的 免费 电话的数量。
然而并回答您的问题:是的,可以计算多个肖像。如果您将 application/json
用作 Content-Type,您会注意到每个内容元素都包含一个 userid
字段。您可以包含来自不同作者 (userid
's) 的内容,只是您不能以 JSON 的形式获得输出,因为这个只支持一个作者。您可以使用 CSV API 并获得多行,每一行对应于输入中的每个作者。
下面是可能有用的示例代码:
导入请求,json
data = { "contentItems" : [
{
"userid" : "user1",
"id" : "uuid1.1",
"contenttype" : "text/plain",
"language" : "en",
"created" : 1393264847000,
"content": "some text"
},
{
"userid" : "user1",
"id" : "uuid1.2",
"contenttype" : "text/plain",
"language" : "en",
"created" : 1393263869000,
"content": "even more"
},
{
"userid" : "user2",
"id" : "uuid2",
"contenttype" : "text/plain",
"language" : "en",
"created" : 1394826985000,
"content": "this is a different author"
}
] }
response = requests.post(
"https://gateway.watsonplatform.net/personality-insights"+
"/api/v2/profile", # Or append: "?headers=True",
auth=("API_USERID", "API_PASSWORD"),
headers={"Content-Type": "application/json", "Accept": "text/csv"},
data = json.dumps(data)
)
print("HTTP %d:\n%s" % (response.status_code, response.content))
关于这段代码的两个注意事项:
- 运行 这个确切的代码将获得 HTTP 400,因为它不符合最低文本要求:您需要用您的文本替换
content
字段——更多文本!
- 多个内容项可以属于同一作者 - 请注意,上面的前两个属于
user1
,最后一个属于 user2
- 如果您省略
Accept: "text/csv"
header,它将默认为 JSON API 和 return HTTP 400:"multiple authors found"。请记住为多个作者使用 CSV API。
通过这种方式,您可以在单个 API 调用中批量处理一些作者。请记住,您需要保持在请求大小限制(当前为 20Mb)以下,因此您只需要多加小心。
我正在使用 Python 为 IBM Watson 的 Personality Insights 服务编写脚本。我将结果用作机器学习项目的训练数据。
由于服务有限 (100 calls/month),是否可以通过一次 API 电话获得多种人格洞察?
您不限于每月 100 次 API 次通话,超过 100 次您必须为 API 次通话付费。
Jeff 关于 API 限制是正确的:您不限于 100 api calls/month;这只是您每月接到的 免费 电话的数量。
然而并回答您的问题:是的,可以计算多个肖像。如果您将 application/json
用作 Content-Type,您会注意到每个内容元素都包含一个 userid
字段。您可以包含来自不同作者 (userid
's) 的内容,只是您不能以 JSON 的形式获得输出,因为这个只支持一个作者。您可以使用 CSV API 并获得多行,每一行对应于输入中的每个作者。
下面是可能有用的示例代码:
导入请求,json
data = { "contentItems" : [
{
"userid" : "user1",
"id" : "uuid1.1",
"contenttype" : "text/plain",
"language" : "en",
"created" : 1393264847000,
"content": "some text"
},
{
"userid" : "user1",
"id" : "uuid1.2",
"contenttype" : "text/plain",
"language" : "en",
"created" : 1393263869000,
"content": "even more"
},
{
"userid" : "user2",
"id" : "uuid2",
"contenttype" : "text/plain",
"language" : "en",
"created" : 1394826985000,
"content": "this is a different author"
}
] }
response = requests.post(
"https://gateway.watsonplatform.net/personality-insights"+
"/api/v2/profile", # Or append: "?headers=True",
auth=("API_USERID", "API_PASSWORD"),
headers={"Content-Type": "application/json", "Accept": "text/csv"},
data = json.dumps(data)
)
print("HTTP %d:\n%s" % (response.status_code, response.content))
关于这段代码的两个注意事项:
- 运行 这个确切的代码将获得 HTTP 400,因为它不符合最低文本要求:您需要用您的文本替换
content
字段——更多文本! - 多个内容项可以属于同一作者 - 请注意,上面的前两个属于
user1
,最后一个属于user2
- 如果您省略
Accept: "text/csv"
header,它将默认为 JSON API 和 return HTTP 400:"multiple authors found"。请记住为多个作者使用 CSV API。
通过这种方式,您可以在单个 API 调用中批量处理一些作者。请记住,您需要保持在请求大小限制(当前为 20Mb)以下,因此您只需要多加小心。