Azure Cognitive text analytics Tool返回400 Bad request Python

时间:2017-01-30 08:20:31

标签: python azure

我正在尝试使用Azure Text分析工具来提取主题,但收到400 Bad请求错误:我的代码如下:

account_key = '546e6162da424e6f991d03b7f6acxxx'
headers = {
 'Ocp-Apim-Subscription-Key': account_key,
 'Content-Type': 'application/json',
 'Accept': 'application/json'}

import requests

tufani={
     "documents": [
         {
             "language": "en",
             "id": "1",
             "text": "First document"
         },
         {
             "language": "en",
             "id": "100",
             "text": "Final document"
         }
     ]
 }

print('Starting topic detection.')
uri = base_url + 'text/analytics/v2.0/topics'
r=requests.post('https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/topics',data=str(tufani),headers =headers)

print(r.status_code, r.reason)

(400,'错误请求')

我在这做错了什么?

谢谢!

3 个答案:

答案 0 :(得分:1)

我尝试重现您的问题,并且我发现如果使用Bad Request,您的代码会产生400 print(r.text)错误,如下所示。

  

你' {"代码":" BadRequest","消息":"无效的请求"," innerError& #34;:{"代码":" InvalidRequestContent","消息":"对此API的请求应包含至少100个文档,每个文件不为空或空的"," minimumNumberOfDocuments":100 }}'

它还会显示在官方教程Task 3 - Detect topics in a corpus of text中,如下所示。

  

此API要求提交至少100条文本记录,但其目的是检测数百到数千条记录中的主题。任何非英语记录或少于3个单词的记录都将被丢弃,因此不会分配给主题。对于主题检测,可以提交的单个文档的最大大小为30KB,提交的输入的最大总大小为30MB。主题检测的速率限制为每5分钟提交5次。

所以请添加足够的文本记录以便使用API​​。

答案 1 :(得分:0)

您不应该使用str(tufani)对POST请求的数据进行编码,而是requestsautomatically encode dict data为您编码:

r=requests.post('https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/topics',data=tufani,headers =headers)

P.S。如果服务器接受JSON编码的POST / PATCH数据,您可以使用json.dumps(payload)来完成这项工作。

答案 2 :(得分:0)

Shane和Peter建议的解决方案都是我错过的错误,这些建议解决了这个问题。

谢谢!