我使用pycorenlp Stanford包装器运行这个示例,但是注释函数返回一个字符串而不是一个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"])发布于 2019-10-29 22:55:43
您应该使用官方的stanfordnlp软件包!(注:名称在某一时刻将改为节)
下面是所有的细节,您可以从服务器获得各种输出格式,包括JSON。
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)发布于 2020-03-10 12:42:51
如果您提供错误堆栈跟踪,那就太好了。其原因是注释器会更快地满足超时,并返回一条断言消息“文本太大..。”。它的D型是。此外,我会对Petr Matuska的评论给予更多的关注。通过看你的例子,很明显,你的目标是为句子找到情感以及它的情感得分。在使用CoreNLPCLient时,没有发现情感得分。我也面临着类似的问题,但我确实努力解决了这个问题。如果文本很大,则必须将超时值设置为高得多(例如,timeout = 500000)。注解器也会产生一个字典,因此它消耗了大量的内存。对于一个更大的文本语料库,这将是一个很大的问题!因此,我们应该如何处理代码中的数据结构。有其他选择,例如使用时隙、tupple或命名tupple来实现更快的访问。
https://stackoverflow.com/questions/58525763
复制相似问题