2016-09-21 4 views
1

Я пытаюсь запустить 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.

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^