private FSArray addTreebankNodeChildrenToIndexes( TreebankNode parent, JCas jCas, List<CoreLabel> tokenAnns, Tree tree) { Tree[] childTrees = tree.children(); // collect all children (except leaves, which are just the words - POS tags are pre-terminals in // a Stanford tree) List<TreebankNode> childNodes = new ArrayList<TreebankNode>(); for (Tree child : childTrees) { if (!child.isLeaf()) { // set node attributes and add children (mutual recursion) TreebankNode node = new TreebankNode(jCas); node.setParent(parent); this.addTreebankNodeToIndexes(node, jCas, child, tokenAnns); childNodes.add(node); } } // convert the child list into an FSArray FSArray childNodeArray = new FSArray(jCas, childNodes.size()); for (int i = 0; i < childNodes.size(); ++i) { childNodeArray.set(i, childNodes.get(i)); } return childNodeArray; }
public TreebankNode makeTreebankNode(JCas jCas) { if (this.type.equals("S1")) { return this.children.get(0); } else { int[] span = AnnotationUtil.getAnnotationsExtent(this.children); TreebankNode node = new TreebankNode(jCas, span[0], span[1]); node.setNodeType(this.type); node.setChildren(new FSArray(jCas, this.children.size())); FSCollectionFactory.fillArrayFS(node.getChildren(), this.children); for (TreebankNode child : this.children) child.setParent(node); node.addToIndexes(); return node; } } }
public TreebankNode makeTreebankNode(JCas jCas) { if (this.type.equals("S1")) { return this.children.get(0); } else { int[] span = AnnotationUtil.getAnnotationsExtent(this.children); TreebankNode node = new TreebankNode(jCas, span[0], span[1]); node.setNodeType(this.type); node.setChildren(new FSArray(jCas, this.children.size())); FSCollectionFactory.fillArrayFS(node.getChildren(), this.children); for (TreebankNode child : this.children) child.setParent(node); node.addToIndexes(); return node; } } }
public TopTreebankNode makeParse() { int[] span = AnnotationUtil.getAnnotationsExtent(this.terminals); TopTreebankNode node = new TopTreebankNode(jCas, span[0], span[1]); node.setNodeType("TOP"); List<TreebankNode> children = parseStack.peek().children; node.setChildren(new FSArray(jCas, children.size())); FSCollectionFactory.fillArrayFS(node.getChildren(), children); for (TreebankNode child : parseStack.peek().children) child.setParent(node); node.setTerminals(new FSArray(jCas, this.terminals.size())); FSCollectionFactory.fillArrayFS(node.getTerminals(), this.terminals); node.addToIndexes(); parseStack.pop(); return node; }
public TopTreebankNode makeParse() { int[] span = AnnotationUtil.getAnnotationsExtent(this.terminals); TopTreebankNode node = new TopTreebankNode(jCas, span[0], span[1]); node.setNodeType("TOP"); List<TreebankNode> children = parseStack.peek().children; node.setChildren(new FSArray(jCas, children.size())); FSCollectionFactory.fillArrayFS(node.getChildren(), children); for (TreebankNode child : parseStack.peek().children) child.setParent(node); node.setTerminals(new FSArray(jCas, this.terminals.size())); FSCollectionFactory.fillArrayFS(node.getTerminals(), this.terminals); node.addToIndexes(); parseStack.pop(); return node; }
/** * Create a branch TreebankNode in a JCas. The offsets of this node will be determined by its * children. * * @param jCas * The JCas which the annotation should be added to. * @param nodeType * The phrase type tag of the node. * @param children * The TreebankNode children of the node. * @return The TreebankNode which was added to the JCas. */ public static TreebankNode newNode(JCas jCas, String nodeType, TreebankNode... children) { int begin = children[0].getBegin(); int end = children[children.length - 1].getEnd(); TreebankNode node = new TreebankNode(jCas, begin, end); node.setNodeType(nodeType); node.addToIndexes(); FSArray fsArray = new FSArray(jCas, children.length); fsArray.copyFromArray(children, 0, 0, children.length); node.setChildren(fsArray); for (TreebankNode child : children) { child.setParent(node); } return node; }
uimaNode.setNodeValue(pojoNode.getValue()); uimaNode.setLeaf(pojoNode.isLeaf()); uimaNode.setParent(parentNode);
uimaNode.setNodeValue(pojoNode.getValue()); uimaNode.setLeaf(pojoNode.isLeaf()); uimaNode.setParent(parentNode);
uimaNode.addToIndexes(); for (TreebankNode child : uimaChildren) { child.setParent(uimaNode);