Я пытаюсь запустить pycorenlp, чтобы токенизировать текст, содержащий символы, отличные от ASCII. Иногда nlp.annotate()
возвращает словарь, а иногда возвращает строку.Есть ли способ, чтобы `nlp.annotate()` pycorenlp всегда возвращал тот же тип результата?
Например,
'''
From https://github.com/smilli/py-corenlp/blob/master/example.py
'''
from pycorenlp import StanfordCoreNLP
import pprint
import re
if __name__ == '__main__':
nlp = StanfordCoreNLP('http://localhost:9000')
text = u"tab with good effect, denies pain".encode('utf-8')
print('type(text): {0}'.format(type(text)))
output = nlp.annotate(text, properties={
'annotators': 'tokenize,ssplit',
'outputFormat': 'json'
})
#pp = pprint.PrettyPrinter(indent=4)
#pp.pprint(output)
print('type(output): {0}'.format(type(output)))
text = u"tab with good effect\u0013\u0013, denies pain".encode('utf-8')
print('\ntype(text): {0}'.format(type(text)))
output = nlp.annotate(text, properties={
'annotators': 'tokenize,ssplit',
'outputFormat': 'json'
})
print('type(output): {0}'.format(type(output)))
выходы:
type(text): <type 'str'>
type(output): <type 'dict'>
type(text): <type 'str'>
type(output): <type 'unicode'>
Я заметил, что когда type(output)
является <type 'unicode'>
, я получаю это предупреждение в сервере Стэнфордского CoreNLP:
WARNING: Untokenizable: ‼ (U+13, decimal: 19)
есть ли способ иметь nlp.annotate()
всегда возвращать ту же сумму pe результата?
Stanford CoreNLP server был запущен с помощью:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer 9000
Я использую Stanford CoreNLP 3.6.0, 0.3.0 и pycorenlp питон 3.5 x64 на Windows 7 SP1 x64 Ultimate.