Ich betreiben ein Stanford CoreNLP Server mit dem folgenden Befehl:UTF-8 Problem mit CoreNLP Server
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer
Ich versuche Who was Darth Vader’s son?
den Satz zu analysieren. Beachten Sie, dass das Apostroph hinter Vader
kein ASCII-Zeichen ist.
Die online demo analysieren erfolgreich den Satz:
Der Server ich auf localhost laufen fehlschlägt:
ich auch die Abfrage mit Python auszuführen versucht.
import requests
url = 'http://localhost:9000/'
sentence = 'Who was Darth Vader’s son?'
r=requests.post(url, params={'properties' : '{"annotators": "tokenize,ssplit,pos,ner", "outputFormat": "json"}'}, data=sentence.encode('utf8'))
tree = r.json()
Der letzte Befehl löst eine Ausnahme:
ValueError: Invalid control character at: line 1 column 1172 (char 1171)
jedoch I Wiederholungen des Zeichens bemerkt \x00
im Text (d.h. r.text
). Wenn ich sie zu entfernen, gelingt es die json-Analyse:
import json
tree = json.loads(r.text.replace('\x00', ''))
Schließlich r.encoding
ISO-8859-1
ist, auch wenn ich nicht die Möglichkeit, -strict
verwendet habe, um den Server auszuführen. Beachten Sie, dass es nichts ändert, wenn ich es manuell durch UTF-8
ersetze.
Wenn ich den gleichen Code url = 'http://localhost:9000/'
durch url = 'http://corenlp.run/'
ersetzen, dann ist alles erfolgreich. Der Anruf r.json()
gibt ein dict zurück, r.encoding
ist in der Tat UTF-8
, und kein Zeichen \x00
ist im Text.
Was ist falsch mit dem CoreNLP-Server, den ich betreibe?