我正在尝试使用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,'错误请求')
我在这做错了什么?
谢谢!
答案 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请求的数据进行编码,而是requests
将automatically 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建议的解决方案都是我错过的错误,这些建议解决了这个问题。
谢谢!