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 предложений. Предложения, содержащие менее трех слов, не могут быть проанализированы.

Tone Analyzer API Explorer

Предоставленный вами текст составляет 165 743 байта (168 КБ), что больше, чем поддерживает служба. Я попытался ввести текст, представленный выше, в API Explorer и получил ту же ошибку, что и выше:

{
  "code": 400,
  "sub_code": "C00013",
  "error": "Invalid JSON input"
}

В качестве решения вам необходимо использовать текстовый ввод, размер которого не превышает 128 КБ текста.

Другие вопросы по тегам