Почему я получаю String, где нужно получить слово при использовании pycorenlp.StanfordCoreNLP.annotate? - PullRequest
1 голос
/ 23 октября 2019

Я запускаю этот пример , используя pycorenlp Stanford Core NLP python-обертку, но функция annotate возвращает строку вместо dict, поэтому, когда я перебираю ее, чтобы получить значение выражения для каждого предложения, я получаюследующая ошибка: «строковые индексы должны быть целыми числами».

Что я могу сделать, чтобы преодолеть это? Кто-нибудь может мне помочь? Заранее спасибо. Код ниже:

from pycorenlp import StanfordCoreNLP
nlp_wrapper = StanfordCoreNLP('http://localhost:9000')
doc = "I like this chocolate. This chocolate is not good. The chocolate is delicious. Its a very 
    tasty chocolate. This is so bad"
annot_doc = nlp_wrapper.annotate(doc,
                                 properties={
                                            'annotators': 'sentiment',
                                            'outputFormat': 'json',
                                            'timeout': 100000,
                                 })
for sentence in annot_doc["sentences"]:
      print(" ".join([word["word"] for word in sentence["tokens"]]) + " => "\
            + str(sentence["sentimentValue"]) + " = "+ sentence["sentiment"])

1 Ответ

0 голосов
/ 30 октября 2019

Вы должны просто использовать официальный пакет stanfordnlp! (примечание: в какой-то момент имя будет изменено на строфу)

Здесь приведены все подробности, и вы можете получить различные форматы вывода с сервера, включая JSON.

https://stanfordnlp.github.io/stanfordnlp/corenlp_client.html

from stanfordnlp.server import CoreNLPClient
with CoreNLPClient(annotators=['tokenize','ssplit','pos','lemma','ner', 'parse', 'depparse','coref'], timeout=30000, memory='16G') as client:
    # submit the request to the server
    ann = client.annotate(text)
...