【问题标题】:Can one get multiple results from one API call in IBM Watson?IBM Watson 中的一次 API 调用能否获得多个结果?
【发布时间】:2015-06-12 03:11:33
【问题描述】:

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

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

【问题讨论】:

    标签: python ibm-cloud ibm-watson personality-insights


    【解决方案1】:

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

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

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

    【讨论】:

    • 这正是我想要的,谢谢!我实施了这个建议,它按预期工作。太糟糕了,您只能使用 csv 响应选项分析多个作者。快速提问,你如何获得带有 csv 的标题?我尝试将 'headers': 'true' 放在 headers 部分,但这不起作用。
    • "?headers=true" 参数是一个 查询参数,因此您需要将其添加到 URL,而不是 HTTP 标头:类似于 /api/v2/profile?headers=true
    • 啊,我明白了。非常感谢!
    • 我认为这在 V3 中不再可行:cloud.ibm.com/docs/services/personality-insights/…
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-03-18
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多