/** * Returns the deepest shared parent of this node and the specified node. * If the nodes are identical then their parent is returned. * If one node is the parent of the other then the parent node is returned. * * @param node The node from which parents are compared to this node's parents. * * @return the deepest shared parent of this node and the specified node. */ public Parse getCommonParent(Parse node) { if (this == node) { return parent; } Set<Parse> parents = new HashSet<>(); Parse cparent = this; while (cparent != null) { parents.add(cparent); cparent = cparent.getParent(); } while (node != null) { if (parents.contains(node)) { return node; } node = node.getParent(); } return null; }
/** * Prune the specified sentence parse of vacuous productions. * * @param parse */ public static void pruneParse(Parse parse) { List<Parse> nodes = new LinkedList<>(); nodes.add(parse); while (nodes.size() != 0) { Parse node = nodes.remove(0); Parse[] children = node.getChildren(); if (children.length == 1 && node.getType().equals(children[0].getType())) { int index = node.getParent().parts.indexOf(node); children[0].setParent(node.getParent()); node.getParent().parts.set(index,children[0]); node.parent = null; node.parts = null; } nodes.addAll(Arrays.asList(children)); } }
/** * Returns a set of parent nodes which consist of the immediate * parent of the specified node and any of its parent which * share the same syntactic type. * @param node The node whose parents are to be returned. * @return a set of parent nodes. */ private Map<Parse, Integer> getNonAdjoinedParent(Parse node) { Map<Parse, Integer> parents = new HashMap<>(); Parse parent = node.getParent(); int index = indexOf(node,parent); parents.put(parent, index); while (parent.getType().equals(node.getType())) { node = parent; parent = parent.getParent(); index = indexOf(node,parent); parents.put(parent, index); } return parents; }
private void codeTree(Parse p,int[] levels) { Parse[] kids = p.getChildren(); StringBuilder levelsBuff = new StringBuilder(); levelsBuff.append("["); int[] nlevels = new int[levels.length + 1]; for (int li = 0; li < levels.length; li++) { nlevels[li] = levels[li]; levelsBuff.append(levels[li]).append("."); } for (int ki = 0; ki < kids.length; ki++) { nlevels[levels.length] = ki; System.out.println(levelsBuff.toString() + ki + "] " + kids[ki].getType() + " " + kids[ki].hashCode() + " -> " + kids[ki].getParent().hashCode() + " " + kids[ki].getParent().getType() + " " + kids[ki].getCoveredText()); codeTree(kids[ki],nlevels); } }
@Override protected boolean lastChild(Parse child, Parse parent) { boolean lc = super.lastChild(child, parent); while (!lc) { Parse cp = child.getParent(); if (cp != parent && cp.getType().equals(child.getType())) { lc = super.lastChild(cp,parent); child = cp; } else { break; } } return lc; }
public static void fixPossesives(Parse parse) { Parse[] tags = parse.getTagNodes(); for (int ti = 0; ti < tags.length; ti++) { if (tags[ti].getType().equals("POS")) { if (ti + 1 < tags.length && tags[ti + 1].getParent() == tags[ti].getParent().getParent()) { int start = tags[ti + 1].getSpan().getStart(); int end = tags[ti + 1].getSpan().getEnd(); for (int npi = ti + 2; npi < tags.length; npi++) { if (tags[npi].getParent() == tags[npi - 1].getParent()) { end = tags[npi].getSpan().getEnd(); } else { break; } } Parse npPos = new Parse(parse.getText(), new Span(start,end), "NP", 1 , tags[ti + 1]); parse.insert(npPos); } } } }
while (reduceStart >= 0 && chunks[reduceStart].getParent() == parent) { reduceStart--;
Parse parent = chunks[ci].getParent(); Parse prevParent = chunks[ci]; int off = 0; parent = parent.getParent(); Parse frontierNode = rightFrontier.get(cfi); Parse cfn = currentRightFrontier.get(cfi); if (attachNode == null && parents.containsKey(frontierNode.getParent()) && frontierNode.getType().equals(frontierNode.getParent().getType()) attachContextGenerator.getContext(currentChunks, ci, currentRightFrontier, cfi))); chunks[ci].getParent().setLabel(Parser.BUILT); rightFrontier.set(attachNodeIndex,frontierNode.getParent()); Parse sister = currentChunks[ci]; if (debug) System.err.println("sister attach a=" + attachNode.getType() + ":" + attachNode + " s=" + sister + " ap=" + attachNode.getParent() + " com=" + lastChild(chunks[ci], rightFrontier.get(attachNodeIndex))); Parse newParent = attachNode.getParent().adjoin(sister,rules); newParent.setParent(attachNode.getParent()); attachNode.setParent(newParent); sister.setParent(newParent);
if (chunks[ci].getParent() == null) { chunks[ci].show(); if (lastChild(chunks[ci], chunks[ci].getParent(),rules.getPunctuationTags())) { while (reduceStart >= 0 && chunks[reduceStart].getParent() == chunks[ci].getParent()) { reduceStart--; chunks = ParserEventStream.reduceChunks(chunks,ci,chunks[ci].getParent()); ci = reduceStart; if (chunks.length != 0) {
private Parse getContainingNounPhrase(Parse token) { Parse parent = token.getParent(); if (parent.getType().equals("NP")) { return parent; } return null; }
public opennlp.tools.coref.mention.Parse getParent() { Parse parent = parse.getParent(); if (parent == null) { return null; } else { return new DefaultParse(parent,sentenceNumber); } }
public opennlp.tools.coref.mention.Parse getParent() { Parse parent = parse.getParent(); if (parent == null) { return null; } else { return new DefaultParse(parent,sentenceNumber); } }
/** * Returns a set of parent nodes which consist of the immediate * parent of the specified node and any of its parent which * share the same syntactic type. * @param node The node whose parents are to be returned. * @return a set of parent nodes. */ private Map<Parse, Integer> getNonAdjoinedParent(Parse node) { Map<Parse, Integer> parents = new HashMap<>(); Parse parent = node.getParent(); int index = indexOf(node,parent); parents.put(parent, index); while (parent.getType().equals(node.getType())) { node = parent; parent = parent.getParent(); index = indexOf(node,parent); parents.put(parent, index); } return parents; }
private void codeTree(Parse p,int[] levels) { Parse[] kids = p.getChildren(); StringBuilder levelsBuff = new StringBuilder(); levelsBuff.append("["); int[] nlevels = new int[levels.length + 1]; for (int li = 0; li < levels.length; li++) { nlevels[li] = levels[li]; levelsBuff.append(levels[li]).append("."); } for (int ki = 0; ki < kids.length; ki++) { nlevels[levels.length] = ki; System.out.println(levelsBuff.toString() + ki + "] " + kids[ki].getType() + " " + kids[ki].hashCode() + " -> " + kids[ki].getParent().hashCode() + " " + kids[ki].getParent().getType() + " " + kids[ki].getCoveredText()); codeTree(kids[ki],nlevels); } }
private void codeTree(Parse p,int[] levels) { Parse[] kids = p.getChildren(); StringBuilder levelsBuff = new StringBuilder(); levelsBuff.append("["); int[] nlevels = new int[levels.length + 1]; for (int li = 0; li < levels.length; li++) { nlevels[li] = levels[li]; levelsBuff.append(levels[li]).append("."); } for (int ki = 0; ki < kids.length; ki++) { nlevels[levels.length] = ki; System.out.println(levelsBuff.toString() + ki + "] " + kids[ki].getType() + " " + kids[ki].hashCode() + " -> " + kids[ki].getParent().hashCode() + " " + kids[ki].getParent().getType() + " " + kids[ki].getCoveredText()); codeTree(kids[ki],nlevels); } }
@Override protected boolean lastChild(Parse child, Parse parent) { boolean lc = super.lastChild(child, parent); while (!lc) { Parse cp = child.getParent(); if (cp != parent && cp.getType().equals(child.getType())) { lc = super.lastChild(cp,parent); child = cp; } else { break; } } return lc; }
@Override protected boolean lastChild(Parse child, Parse parent) { boolean lc = super.lastChild(child, parent); while (!lc) { Parse cp = child.getParent(); if (cp != parent && cp.getType().equals(child.getType())) { lc = super.lastChild(cp,parent); child = cp; } else { break; } } return lc; }