Extrahiere Eltern- und Kinderknoten aus dem Pythonbaum

Ich verwende die Baumdatenstruktur von nltk. Unten ist das Beispiel nltk.Tree.

(S
  (S
    (ADVP (RB recently))
    (NP (NN someone))
    (VP
      (VBD mentioned)
      (NP (DT the) (NN word) (NN malaria))
      (PP (TO to) (NP (PRP me)))))
  (, ,)
  (CC and)
  (IN so)
  (S
    (NP
      (NP (CD one) (JJ whole) (NN flood))
      (PP (IN of) (NP (NNS memories))))
    (VP (VBD came) (S (VP (VBG pouring) (ADVP (RB back))))))
  (. .))

Ich kenne die nltk.Tree-Datenstruktur nicht. Ich möchte den übergeordneten und den übergeordneten Knoten für jeden Blattknoten extrahieren, z. für 'kürzlich' möchte ich (ADVP, RB), und für 'jemanden' ist es (NP, NN) Dies ist das Endergebnis, das ich möchte. Eine frühere Antwort verwendete die eval () - Funktion, um dies zu tun, was ich vermeiden möchte.

[('ADVP', 'RB'), ('NP', 'NN'), ('VP', 'VBD'), ('NP', 'DT'), ('NP', 'NN'), ('NP', 'NN'), ('PP', 'TO'), ('NP', 'PRP'), ('S', 'CC'), ('S', 'IN'), ('NP', 'CD'), ('NP', 'JJ'), ('NP', 'NN'), ('PP', 'IN'), ('NP', 'NNS'), ('VP', 'VBD'), ('VP', 'VBG'), ('ADVP', 'RB')]

Antworten auf die Frage(2)

Ihre Antwort auf die Frage