Supposons que j'ai une telle partie de la phrase:Comment obtenir un nœud parent dans JavaNLP de Stanford?
(NP
(NP (DT A) (JJ single) (NN page))
(PP (IN in)
(NP (DT a) (NN wiki) (NN website))))
A un certain moment de temps, j'ai une référence à (JJ single)
et je veux obtenir le noeud NP
de liaison A single page
. Si je comprends bien, que NP
est le parent du nœud, A
et page
sont ses frères et sœurs et il n'a pas d'enfants (?). Lorsque j'essaie d'utiliser la méthode .parent()
d'un arbre, je toujours obtiens null. L'API dit que c'est parce que l'implémentation ne sait pas comment déterminer le nœud parent. Une autre méthode d'intérêt est .ancestor(int height, Tree root)
, mais je ne sais pas comment obtenir la racine du nœud. Dans les deux cas, puisque l'analyseur sait comment indenter et grouper les arbres, il doit connaître l'arbre "parent", n'est-ce pas? Comment puis-je l'avoir? Merci
@dmcer - bien, donc il y a la méthode 'phrase.transform (transformateur)', il y a une classe de transformateur séparée et une autre qui initie la transformation. * Où * suggérez-vous de conserver la racine actuelle? – Fluffy
@dmcer - Dans la méthode de transformation que je remplace, j'ai besoin de connaître le parent de l'arbre en cours de transformation. Puisque le seul paramètre de la méthode transform est l'arbre, comment obtenir le parent de cet arbre? C'est-à-dire que je veux utiliser root en transformant, pas après – Fluffy
@dmcer - il est appliqué 'traversé dans un ordre de profondeur, de gauche à droite, et TreeTransformer est appelé sur chaque noeud'. Pour transformer un arbre, j'ai besoin d'informations sur son parent. De cette façon, je peux tenir tout le code traitant certains arbres en un seul endroit. Vous suggérez de déplacer ce code vers le code, en traitant tous les parents possibles de tous les nœuds? – Fluffy