Prerrequisito: Árbol Profundo Aplanado
Hemos aplanado un árbol profundo manteniendo solo los subárboles de nivel más bajo. Pero aquí podemos mantener los subárboles de más alto nivel.
Código #1: Entendamosshallow_tree()
from nltk.tree import Tree def shallow_tree(tree): children = [] for t in tree: if t.height() < 3: children.extend(t.pos()) else: children.append(Tree(t.label(), t.pos())) return Tree(tree.label(), children)
Código #2: Evaluación
from transforms import shallow_tree from nltk.corpus import treebank print ("Deep Tree : \n", treebank.parsed_sents()[0]) print ("\nShallow Tree : \n", shallow_tree(treebank.parsed_sents()[0]) )
Producción :
Deep Tree : (S (NP-SBJ (NP (NNP Pierre) (NNP Vinken)) (,, ) (ADJP (NP (CD 61) (NNS years)) (JJ old)) (,, )) (VP (MD will) (VP (VB join) (NP (DT the) (NN board)) (PP-CLR (IN as) (NP (DT a) (JJ nonexecutive) (NN director))) (NP-TMP (NNP Nov.) (CD 29)))) (. .)) Shallow Tree : Tree('S', [Tree('NP-SBJ', [('Pierre', 'NNP'), ('Vinken', 'NNP'), (', ', ', '), ('61', 'CD'), ('years', 'NNS'), ('old', 'JJ'), (', ', ', ')]), Tree('VP', [('will', 'MD'), ('join', 'VB'), ('the', 'DT'), ('board', 'NN'), ('as', 'IN'), ('a', 'DT'), ('nonexecutive', 'JJ'), ('director', 'NN'), ('Nov.', 'NNP'), ('29', 'CD')]), ('.', '.')])
Cómo funciona ?
- La función de árbol_superficial() crea nuevos árboles secundarios al iterar sobre cada uno de los subárboles de nivel superior.
- El subárbol se reemplaza por una lista de sus elementos secundarios etiquetados como parte del discurso, si la altura() de un subárbol es menor que 3.
- Si los elementos secundarios de un árbol son hojas etiquetadas como parte del discurso, todos los demás subárboles se reemplazan por un nuevo árbol.
- Por lo tanto, elimina todos los subárboles anidados mientras conserva los subárboles de nivel superior.
Código #3: altura
print ("height of tree : ", treebank.parsed_sents()[0].height()) print ("\nheight of shallow tree : ", shallow_tree(treebank.parsed_sents()[0]).height())
Producción :
height of tree : 7 height of shallow tree :3
Publicación traducida automáticamente
Artículo escrito por Mohit Gupta_OMG 🙂 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA