如何从python中的CoreNLP服务器返回的字符串中获取解析树?

时间:2016-08-31 21:54:34

标签: stanford-nlp corenlp-server

我正在使用pycorenlp和corenlp服务器。我可以以字符串格式获取解析树。但是,我可以像NLTK库那样将它作为树吗?

from pycorenlp import StanfordCoreNLP
import pprint
import nltk

nlp = StanfordCoreNLP('http://localhost:9000')

text = ('Purgrug Vobter and Juklog Qligjar vruled into the Battlefield. Vobter was about to Hellfire. Juklog Qligjar started kiblaring.')

output = nlp.annotate(text, properties={
'annotators': 'tokenize,ssplit,pos,depparse,parse',
'outputFormat': 'json'
})


print [s['parse'] for s in output['sentences']]

输出:

[u'(ROOT\r\n  (S\r\n    (NP (NNP Purgrug) (NNP Vobter)\r\n      (CC and)\r\n      (NNP Juklog) (NNP Qligjar))\r\n    (VP (VBD vruled)\r\n      (PP (IN into)\r\n        (NP (DT the) (NN Battlefield))))\r\n    (. .)))', u'(ROOT\r\n  (S\r\n    (NP (NNP Vobter))\r\n    (VP (VBD was)\r\n      (ADJP (IN about)\r\n        (PP (TO to)\r\n          (NP (NNP Hellfire)))))\r\n    (. .)))', u'(ROOT\r\n  (S\r\n    (NP (NNP Juklog) (NNP Qligjar))\r\n    (VP (VBD started)\r\n      (S\r\n        (VP (VBG kiblaring))))\r\n    (. .)))']

1 个答案:

答案 0 :(得分:5)

从nltk导入树:

from nltk.tree import *

接下来,

a = [u'(ROOT\r\n  (S\r\n    (NP (NNP Purgrug) (NNP Vobter)\r\n      (CC and)\r\n      (NNP Juklog) (NNP Qligjar))\r\n    (VP (VBD vruled)\r\n      (PP (IN into)\r\n        (NP (DT the) (NN Battlefield))))\r\n    (. .)))', u'(ROOT\r\n  (S\r\n    (NP (NNP Vobter))\r\n    (VP (VBD was)\r\n      (ADJP (IN about)\r\n        (PP (TO to)\r\n          (NP (NNP Hellfire)))))\r\n    (. .)))', u'(ROOT\r\n  (S\r\n    (NP (NNP Juklog) (NNP Qligjar))\r\n    (VP (VBD started)\r\n      (S\r\n        (VP (VBG kiblaring))))\r\n    (. .)))']

Tree.fromstring(a[0]).pretty_print()

就是这样。

result