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

How to read constituency based parse tree

我有一个由斯坦福 CoreNLP 系统预处理过的句子语料库。它提供的功能之一是句子的解析树(基于选区)。虽然我可以在绘制解析树时理解它(就像树一样),但我不确定如何以这种格式阅读它:

例如:

          (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 中)可以正确阅读? 谢谢

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

顺便说一句:您可能想要删除 sent28: 的位,因为它会混淆解析器(它也不是句子的一部分)。您得到的不是完整的解析树,而是一个句子片段。

您可以像这样使用斯坦福解析器:

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