public static TreebankNode getParent(TreebankNode node) { if (node != null) { node = node.getParent(); } return node; }
public static TopTreebankNode getTopNode(TreebankNode node) { if (node instanceof TopTreebankNode) return (TopTreebankNode) node; TreebankNode parent = node.getParent(); while (parent != null) { if (parent instanceof TopTreebankNode) return (TopTreebankNode) parent; node = parent; parent = node.getParent(); } return null; }
/** * Calculates the depth of the TreebankNode. The root node has depth 0, children of the root node * have depth 1, etc. * * @param node * The TreebankNode whose depth is to be calculated. * @return The depth of the TreebankNode. */ public static int getDepth(TreebankNode node) { int depth = -1; while (node != null) { depth += 1; node = node.getParent(); } return depth; }
private List<TreebankNode> pathToRoot(TreebankNode leaf) { List<TreebankNode> result = new ArrayList<TreebankNode>(); TreebankNode curr = leaf; while (curr != null) { result.add(curr); curr = curr.getParent(); } return result; }
/** * Find the path from a TreebankNode to the root of the tree it belongs to. * * @param startNode * The start node of the path * * @return A list of TreebankNodes that make up the path from <b>startNode</b> to the root of the * tree */ public static List<TreebankNode> getPathToRoot(TreebankNode startNode) { List<TreebankNode> nlist = new ArrayList<TreebankNode>(20); TreebankNode cursorNode = startNode; while (cursorNode != null) { nlist.add(cursorNode); cursorNode = cursorNode.getParent(); } return nlist; }
public static TreebankNode getAncestorWithType(TreebankNode node, String type) { while (node != null && !node.getNodeType().equals(type)) { node = node.getParent(); } return node; }
@Override public TreebankNode convert(JCas jCas, TopTreebankNode topNode) { TreebankNode node = topNode.getTerminals(this.terminalNumber); for (int i = 0; i < this.height; i++) node = node.getParent(); return node; }
@Override public TreebankNode convert(JCas jCas, TopTreebankNode topNode) { TreebankNode node = topNode.getTerminals(this.terminalNumber); for (int i = 0; i < this.height; i++) node = node.getParent(); return node; }
public List<Feature> extract(JCas jCas, TreebankNode node) throws UnsupportedOperationException { TreebankNode parent = node.getParent(); if (parent == null) return new ArrayList<Feature>(); StringBuffer buffer = new StringBuffer(); buffer.append(parent.getNodeType() + "->"); boolean first = true; for (TreebankNode child : JCasUtil.select(parent.getChildren(), TreebankNode.class)) { if (!first) buffer.append("-"); buffer.append(child.getNodeType()); first = false; } return Collections.singletonList(new Feature(this.featureName, buffer)); } }
public List<Feature> extract(JCas jCas, TreebankNode node) throws CleartkExtractorException { TreebankNode parent = node.getParent(); if (parent == null) return Collections.emptyList(); List<TreebankNode> children = Lists.newArrayList(JCasUtil.select( parent.getChildren(), TreebankNode.class)); int index = children.indexOf(node); int siblingIndex = index + offset; if (siblingIndex < 0 || siblingIndex >= children.size()) return Collections.emptyList(); TreebankNode sibling = children.get(siblingIndex); List<Feature> features = subExtractor.extract(jCas, sibling); for (Feature feature : features) { feature.setName(Feature.createName(name, feature.getName())); } return features; }
@Override public List<Feature> extract(JCas view, T focusAnnotation) { List<Feature> features = new ArrayList<Feature>(); TreebankNode node = TreebankNodeUtil.selectMatchingLeaf(view, focusAnnotation); if (node != null) { node = node.getParent(); } if (node != null) { node = node.getParent(); } if (node != null) { node = node.getChildren(0); } if (node != null && node.getLeaf()) { features.add(new Feature(this.featureName, node.getCoveredText())); } return features; } }
public List<Feature> extract(JCas jCas, TreebankNode node) throws CleartkExtractorException { TreebankNode parent = node.getParent(); if (parent == null) return Collections.emptyList(); List<Feature> features = subExtractor.extract(jCas, parent); for (Feature feature : features) { feature.setName(Feature.createName("Parent", feature.getName())); } return features; }
@Override public List<Feature> extract(JCas view, Token token) throws CleartkExtractorException { TreebankNode node = TreebankNodeUtil.selectMatchingLeaf(view, token); List<Feature> features = new ArrayList<Feature>(); if (node != null) { TreebankNode parent = node.getParent(); if (parent != null) { features.add(new Feature("ParentNodeType", parent.getNodeType())); TreebankNode firstSibling = parent.getChildren(0); if (firstSibling != node && firstSibling.getLeaf()) { features.add(new Feature("FirstSiblingText", firstSibling.getCoveredText())); } } } return features; } }