2017-05-11 9 views
0

Der folgende Satz von Code Arbeit, wenn ich kurzen Text habe, aber wenn ich gebe ihm einen längeren Text dieser Form: https://pastebin.com/PLinyN65IBM Watson ToneAnalyzerV3 WatsonException: Fehler: ungültiger JSON Eingang, Code: 400

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) 

ich der Fehler:

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 

Wenn ich versuche, den Text auf diesem Weblink manuell eingegeben: https://tone-analyzer-demo.mybluemix.net/

ich den Fehler: request entity too large

Bitte geben Sie an, wie ich die erforderlichen Tonanalysewerte im Json-Format von ToneAnalyzerV3 erhalten kann.

Antwort

1

im Tone der Suche Analyzer API Explorer können Sie sehen, gibt es eine Grenze für die Menge an Text jede Anforderung verarbeiten kann:

The Tone Analyzer service supports up to 128 KB of text, or about 1000 sentences. Sentences with less than three words cannot be analyzed.

Tone Analyzer API Explorer

Der Text, den Sie 165.743 Bytes vorgesehen ist (168 KB), die größer ist als das, was der Service unterstützt. Ich habe versucht, den Text einzugeben oben in dem API-Explorer zur Verfügung gestellt und erhielt die gleichen Fehler wie Sie oben haben:

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

Als Lösung müssen Sie eine Texteingabe verwenden, die unter der maximal 128 KB Text ist .

Verwandte Themen