IBM Watson ToneAnalyzerV3 WatsonException: ошибка: неверный ввод JSON, код: 400
Следующий набор кода работает, когда у меня есть короткий текст, но когда я даю ему более длинный текст этой формы: https://pastebin.com/PLinyN65
import os
import json
from watson_developer_cloud import ToneAnalyzerV3
from glob import glob
with open(credentials.txt) as cred:
data = cred.readlines()
UserName = data[0]
PassWord = data[1]
tone_analyzer = ToneAnalyzerV3(
username=UserName,
password=PassWord,
version='2016-05-19')
pth = '../input/*.txt'
txtFiles = glob(pth)
for file in txtFiles:
baseName = os.path.basename(file)
name = baseName.split('.')
with open(file) as f:
txt = f.read()
with open('../output/{}.json'.format(name[0]), 'w') as outFile:
json.dump(tone_analyzer.tone(text=txt, sentences='false'), outFile, separators=(',', ': '), indent=2)
Я получаю ошибку:
WatsonException Traceback (most recent call last)
<ipython-input-6-d948e97e307e> in <module>()
8
9 with open('../output/{}.json'.format(name[0]), 'w') as outFile:
---> 10 json.dump(tone_analyzer.tone(text=txt, sentences='false'), outFile, separators=(',', ': '), indent=2)
11
12 print('{}\n'.format(name[0]))
/Library/Python/2.7/site-packages/watson_developer_cloud/tone_analyzer_v3.pyc in tone(self, text, tones, sentences)
51 data = {'text': text}
52 return self.request(method='POST', url='/v3/tone', params=params,
---> 53 json=data, accept_json=True)
/Library/Python/2.7/site-packages/watson_developer_cloud/watson_developer_cloud_service.pyc in request(self, method, url, accept_json, headers, params, json, data, files, **kwargs)
318 else:
319 error_message = self._get_error_message(response)
--> 320 raise WatsonException(error_message)
WatsonException: Error: Invalid JSON input, Code: 400
Когда я пытаюсь вручную ввести текст по этой ссылке: https://tone-analyzer-demo.mybluemix.net/
Я получаю ошибку: request entity too large
Посоветуйте, пожалуйста, как я могу получить необходимые оценки тонального анализа в формате json от ToneAnalyzerV3.
1 ответ
Посмотрев на Tone Analyzer API Explorer, вы увидите, что существует ограничение на количество текста, которое может обрабатывать каждый запрос:
Сервис Tone Analyzer поддерживает до 128 КБ текста или около 1000 предложений. Предложения, содержащие менее трех слов, не могут быть проанализированы.
Предоставленный вами текст составляет 165 743 байта (168 КБ), что больше, чем поддерживает служба. Я попытался ввести текст, представленный выше, в API Explorer и получил ту же ошибку, что и выше:
{
"code": 400,
"sub_code": "C00013",
"error": "Invalid JSON input"
}
В качестве решения вам необходимо использовать текстовый ввод, размер которого не превышает 128 КБ текста.