0

我正在使用 Python 为 IBM Watson 的 Personality Insights 服务编写脚本。我将结果用作机器学习项目的训练数据。

由于服务非常有限(每月 100 次调用),是否可以仅通过一次 API 调用获得多种个性洞察?

4

2 回答 2

3

Jeff 关于 API 限制是正确的:您不限于每月 100 次 API 调用;这只是您每月获得的免费通话次数。

但是并回答您的问题:是的,可以计算多个肖像。如果您使用application/jsonas 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"标头,它将默认为 JSON API 并返回 HTTP 400:“找到多个作者”。请记住为多个作者使用 CSV API。

这样,您可以在单个 API 调用中批量处理一些作者。请记住,您需要保持在请求大小限制(当前为 20Mb)以下,因此您只需要多加小心。

于 2015-06-12T12:56:36.817 回答
1

您不限于每月 100 次 API 调用,您必须为 API 调用付费超过 100 次。

于 2015-06-12T11:17:14.167 回答