如何阅读基于选区的解析树

时间:2015-02-23 13:00:45

标签: python parsing nlp parse-tree

我有一套由斯坦福大学的CoreNLP系统预处理过的句子。它提供的一件事是句子的Parse Tree(基于选区)。虽然我可以在绘制时理解解析树(如树),但我不确定如何以这种格式阅读它:

E.g:

          (ROOT
          (FRAG
          (NP (NN sent28))
          (: :)
          (S
          (NP (NNP Rome))
          (VP (VBZ is)
          (PP (IN in)
          (NP
          (NP (NNP Lazio) (NN province))
          (CC and)
          (NP
          (NP (NNP Naples))
          (PP (IN in)
          (NP (NNP Campania))))))))
          (. .)))

原句是:

sent28: Rome is in Lazio province and Naples in Campania .

我应该如何阅读这棵树,或者是否有正确的代码(在python中)? 感谢。

2 个答案:

答案 0 :(得分:10)

NLTK有一个用于阅读解析树的类:nltk.tree.Tree。相关方法称为fromstring。然后你可以迭代它的子树,树叶等......

顺便说一句:您可能希望删除sent28:位,因为它会混淆解析器(它也不是句子的一部分)。你没有得到一个完整的解析树,只是一个句子碎片。

答案 1 :(得分:-3)

你可以使用stanford解析器,如:

sentences = parser.raw_parse_sents(["Hello, My name is Melroy.", "What is your name?"])  #probably raw_parse(just a string) or parse_sents(list but has been splited)
for line in sentences:
    for sentence in line:
        ***sentence.draw()***