3

我将 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    (. .)))']
4

1 回答 1

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()

就这样。

结果

于 2017-07-26T12:57:10.693 回答