title: How to read constituency based parse tree
body: <p>I have a corpus of sentences that were preprocessed by Stanford's <a href="http://nlp.stanford.edu/software/corenlp.shtml" rel="noreferrer">CoreNLP</a> systems. One of the things it provides is the sentence's Parse Tree (Constituency-based). While I can understand a parse tree when it's drawn (like a tree), I'm not sure how to read it in this format:</p>
  
  <p>E.g.:</p>
  
  <pre><code>          (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))))))))
            (. .)))
  </code></pre>
  
  <p>The original sentence is:</p>
  
  <pre><code>sent28: Rome is in Lazio province and Naples in Campania .
  </code></pre>
  
  <p>How am I supposed to read this tree, or alternatively, is there a code (in python) that does it properly?
  Thanks.</p>