Python 在IBMWatson中,一个API调用可以得到多个结果吗?

Python 在IBMWatson中,一个API调用可以得到多个结果吗?,python,ibm-cloud,ibm-watson,personality-insights,Python,Ibm Cloud,Ibm Watson,Personality Insights,我正在使用Python为IBM Watson的Personal Insights服务编写一个脚本。我将结果用作机器学习项目的培训数据 由于服务非常有限(每月100次调用),是否可以仅通过一次API调用获得多个个性见解 您每月不限于100次API调用,仅需支付100多次API调用的费用。您每月不限于100次API调用,仅需支付100多次API调用的费用。Jeff关于API限制的说法是正确的:您每月不限于100次API调用;这只是你每月得到的免费电话数 但是,请回答您的问题:是的,可以计算多幅肖像。

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


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

您每月不限于100次API调用,仅需支付100多次API调用的费用。

您每月不限于100次API调用,仅需支付100多次API调用的费用。

Jeff关于API限制的说法是正确的:您每月不限于100次API调用;这只是你每月得到的免费电话数

但是,请回答您的问题:是的,可以计算多幅肖像。如果使用
application/json
作为内容类型,您会注意到每个内容元素都包含一个
userid
字段。您可以包含来自不同作者(
userid
)的内容,但您不能将输出作为JSON,因为此内容只支持一个作者。您可以使用CSVAPI获得多行,其中一行对应于输入中的每个作者

以下是可能有帮助的示例代码:

导入请求,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,因为它不满足最低文本要求:您需要用文本替换
    内容
    字段--更多文本
  • 多个内容项可以属于同一作者-请注意,上面的前两个属于
    user1
    ,最后一个属于
    user2
  • 如果省略
    Accept:“text/csv”
    标题,它将默认为JSON API并返回HTTP 400:“找到多个作者”。记住对多个作者使用CSV API

通过这种方式,您可以在单个API调用中批处理某些作者。请记住,您需要保持在请求大小限制(当前为20Mb)之下,因此您只需要稍微小心一点。

Jeff关于API限制的说法是正确的:您不限于每月100次API调用;这只是你每月得到的免费电话数

但是,请回答您的问题:是的,可以计算多幅肖像。如果使用
application/json
作为内容类型,您会注意到每个内容元素都包含一个
userid
字段。您可以包含来自不同作者(
userid
)的内容,但您不能将输出作为JSON,因为此内容只支持一个作者。您可以使用CSVAPI获得多行,其中一行对应于输入中的每个作者

以下是可能有帮助的示例代码:

导入请求,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,因为它不满足最低文本要求:您需要用文本替换
    内容
    字段--更多文本
  • 多个内容项可以属于同一作者-请注意,上面的前两个属于
    user1
    ,最后一个属于
    user2
  • 如果省略
    Accept:“text/csv”
    标题,它将默认为JSON API并返回HTTP 400:“找到多个作者”。记住对多个作者使用CSV API

通过这种方式,您可以在单个API调用中批处理某些作者。请记住,您需要保持在请求大小限制(当前为20Mb)以下,因此您只需稍微小心一点。

这正是我想要的,谢谢!我实施了这个建议,并且它按照预期工作。使用csv响应选项只能分析多个作者,这太糟糕了。快速提问,如何使用csv获取标题?我尝试将“headers”:“true”放在headers部分,但这不起作用。
“?headers=true”
参数是一个查询参数,因此您需要将其添加到URL,而不是HTTP头:类似于
/api/v2/profile?headers=true
aah,我明白了。非常感谢!我想这在V3中已经不可能了:这正是我想要的,谢谢!我实施了这个建议,并且它按照预期工作。使用csv响应选项只能分析多个作者,这太糟糕了。快速提问,如何使用csv获取标题?我尝试将“headers”:“true”放在headers部分,但这不起作用。
“?headers=true”
参数是一个查询参数,因此您需要将其添加到URL,而不是HTTP头:类似于
/api/v2/profile?headers=true
aah,我明白了。非常感谢!我认为这在V3中不再可能: