public static List<TreebankNode> getNodeList(TopTreebankNode tree){ ArrayList<TreebankNode> list = new ArrayList<TreebankNode>(); list.add(tree); int ind = 0; while(ind < list.size()){ TreebankNode cur = list.get(ind); for(int i = 0; i < cur.getChildren().size(); i++){ list.add(cur.getChildren(i)); } ind++; } return list; }
public static List<TreebankNode> getNodeList(TopTreebankNode tree){ ArrayList<TreebankNode> list = new ArrayList<TreebankNode>(); list.add(tree); int ind = 0; while(ind < list.size()){ TreebankNode cur = list.get(ind); for(int i = 0; i < cur.getChildren().size(); i++){ list.add(cur.getChildren(i)); } ind++; } return list; }
public static void replaceChild(TreebankNode parent, TreebankNode oldTree, TreebankNode newTree) { // if parent is null that means we're already at the top -- no pointers to fix. if(parent != null){ for(int i = 0; i < parent.getChildren().size(); i++){ if(parent.getChildren(i) == oldTree){ parent.setChildren(i, newTree); } } } }
public static void replaceChild(TreebankNode parent, TreebankNode oldTree, TreebankNode newTree) { // if parent is null that means we're already at the top -- no pointers to fix. if(parent != null){ for(int i = 0; i < parent.getChildren().size(); i++){ if(parent.getChildren(i) == oldTree){ parent.setChildren(i, newTree); } } } }
public static Queue<TreebankNode> initializeQueue(TreebankNode X, TreebankNode Y){ Queue<TreebankNode> q = new LinkedList<TreebankNode>(); while(Y.getParent() != X){ Y = Y.getParent(); } for(int i = 0; i < X.getChildren().size(); i++){ TreebankNode n = X.getChildren(i); q.add(n); if(n == Y) break; } return q; }
public static Queue<TreebankNode> initializeQueue(TreebankNode X, TreebankNode Y){ Queue<TreebankNode> q = new LinkedList<TreebankNode>(); while(Y.getParent() != X){ Y = Y.getParent(); } for(int i = 0; i < X.getChildren().size(); i++){ TreebankNode n = X.getChildren(i); q.add(n); if(n == Y) break; } return q; }
public static int getHighestIndexTerm(TreebankNode inTree) { if(inTree instanceof TerminalTreebankNode){ return ((TerminalTreebankNode) inTree).getIndex(); } return getHighestIndexTerm(inTree.getChildren(inTree.getChildren().size()-1)); }
public static int getHighestIndexTerm(TreebankNode inTree) { if(inTree instanceof TerminalTreebankNode){ return ((TerminalTreebankNode) inTree).getIndex(); } return getHighestIndexTerm(inTree.getChildren(inTree.getChildren().size()-1)); }
public static String tree2str(TreebankNode pathTree){ StringBuffer buff = new StringBuffer(); buff.append("("); try{ buff.append(pathTree.getNodeType()); }catch(Exception e){ System.err.println("Caught NPE"); } if(pathTree.getLeaf()){ //pathTree.getChildren().size() == 1 && pathTree.getChildren(0).getLeaf()){ buff.append(" "); buff.append(pathTree.getNodeValue()); // buff.append(")"); }else{ for(int i = 0; i < pathTree.getChildren().size(); i++){ buff.append(" "); buff.append(tree2str(pathTree.getChildren(i))); } } buff.append(")"); return buff.toString(); }
public static String tree2str(TreebankNode pathTree){ StringBuffer buff = new StringBuffer(); buff.append("("); try{ buff.append(pathTree.getNodeType()); }catch(Exception e){ System.err.println("Caught NPE"); } if(pathTree.getLeaf()){ //pathTree.getChildren().size() == 1 && pathTree.getChildren(0).getLeaf()){ buff.append(" "); buff.append(pathTree.getNodeValue()); // buff.append(")"); }else{ for(int i = 0; i < pathTree.getChildren().size(); i++){ buff.append(" "); buff.append(tree2str(pathTree.getChildren(i))); } } buff.append(")"); return buff.toString(); }
private static TreebankNode findP (TreebankNode n, String phraseTag, int startingChild) { FSArray c = n.getChildren(); int i = startingChild; while (i < c.size()) { TreebankNode tn = (TreebankNode) c.get(i++); if (tn.getNodeType().equals(phraseTag) || tn.getNodeType().startsWith(phraseTag+"-")) return tn; } return null; }
private static TreebankNode findP (TreebankNode n, String phraseTag, int startingChild) { FSArray c = n.getChildren(); int i = startingChild; while (i < c.size()) { TreebankNode tn = (TreebankNode) c.get(i++); if (tn.getNodeType().equals(phraseTag) || tn.getNodeType().startsWith(phraseTag+"-")) return tn; } return null; }
public static SimpleTree getSimpleClone(TreebankNode node) { SimpleTree t = new SimpleTree(node.getNodeType()); if(node instanceof TerminalTreebankNode){ t.addChild(new SimpleTree(node.getNodeValue())); }else{ for(int i = 0; i < node.getChildren().size(); i++){ t.addChild(getSimpleClone(node.getChildren(i))); } } return t; }
private static MarkableProb processDem(Markable anaphor, List<Markable> anteList, JCas jcas){ double bestProb = 0.0; TreebankNode n = MarkableTreeUtils.markableNode(jcas, anaphor.getBegin(), anaphor.getEnd()); TreebankNode parent = (n != null ? n.getParent() : null); TreebankNode gparent = (parent != null ? parent.getParent() : null); Markable ante = null; for(Markable antecedent: anteList){ if(n!=null && parent != null && gparent != null && n.getNodeType().equals("WHNP") && parent.getNodeType().equals("SBAR") && gparent.getNodeType().equals("NP") && gparent.getChildren(1) == parent && gparent.getChildren(0).getNodeType().equals("NP")){ TreebankNode anteNode = gparent.getChildren(0); Markable trueAnte = MarkableTreeUtils.nodeMarkable(jcas, anteNode.getBegin(), anteNode.getEnd()); if(trueAnte == antecedent){ bestProb = 1.0; ante = antecedent; break; } } } return new MarkableProb(ante, bestProb); }
public static SimpleTree getSimpleClone(TreebankNode node) { SimpleTree t = new SimpleTree(node.getNodeType()); if(node instanceof TerminalTreebankNode){ t.addChild(new SimpleTree(node.getNodeValue())); }else{ for(int i = 0; i < node.getChildren().size(); i++){ t.addChild(getSimpleClone(node.getChildren(i))); } } return t; }
private static MarkableProb processDem(Markable anaphor, List<Markable> anteList, JCas jcas){ double bestProb = 0.0; TreebankNode n = MarkableTreeUtils.markableNode(jcas, anaphor.getBegin(), anaphor.getEnd()); TreebankNode parent = (n != null ? n.getParent() : null); TreebankNode gparent = (parent != null ? parent.getParent() : null); Markable ante = null; for(Markable antecedent: anteList){ if(n!=null && parent != null && gparent != null && n.getNodeType().equals("WHNP") && parent.getNodeType().equals("SBAR") && gparent.getNodeType().equals("NP") && gparent.getChildren(1) == parent && gparent.getChildren(0).getNodeType().equals("NP")){ TreebankNode anteNode = gparent.getChildren(0); Markable trueAnte = MarkableTreeUtils.nodeMarkable(jcas, anteNode.getBegin(), anteNode.getEnd()); if(trueAnte == antecedent){ bestProb = 1.0; ante = antecedent; break; } } } return new MarkableProb(ante, bestProb); }
private static SimpleTree buildSimpleClonePET(TreebankNode lca, TreebankNode t1, TreebankNode t2){ SimpleTree t = new SimpleTree(lca.getNodeType()); if(lca instanceof TerminalTreebankNode){ t.addChild(new SimpleTree(lca.getNodeValue())); }else{ for(int i = 0; i < lca.getChildren().size(); i++){ TreebankNode tn = lca.getChildren(i); if(tn.getEnd() > t1.getBegin() && tn.getBegin() < t2.getEnd()){ t.addChild(buildSimpleClonePET(lca.getChildren(i), t1, t2)); } } } return t; }
private static SimpleTree buildSimpleClonePET(TreebankNode lca, TreebankNode t1, TreebankNode t2){ SimpleTree t = new SimpleTree(lca.getNodeType()); if(lca instanceof TerminalTreebankNode){ t.addChild(new SimpleTree(lca.getNodeValue())); }else{ for(int i = 0; i < lca.getChildren().size(); i++){ TreebankNode tn = lca.getChildren(i); if(tn.getEnd() > t1.getBegin() && tn.getBegin() < t2.getEnd()){ t.addChild(buildSimpleClonePET(lca.getChildren(i), t1, t2)); } } } return t; }
public static TreebankNode getTreeCopy(JCas jcas, TreebankNode orig){ TreebankNode copy = null; if(orig instanceof TerminalTreebankNode){ copy = new TerminalTreebankNode(jcas); copy.setLeaf(true); copy.setChildren(null); }else{ copy = new TreebankNode(jcas); copy.setChildren(new FSArray(jcas, orig.getChildren().size())); for(int i = 0; i < orig.getChildren().size(); i++){ copy.setChildren(i, getTreeCopy(jcas, orig.getChildren(i))); copy.getChildren(i).setParent(copy); } } copy.setNodeType(orig.getNodeType()); copy.setNodeValue(orig.getNodeValue()); copy.setBegin(orig.getBegin()); copy.setEnd(orig.getEnd()); return copy; }
public static TreebankNode getTreeCopy(JCas jcas, TreebankNode orig){ TreebankNode copy = null; if(orig instanceof TerminalTreebankNode){ copy = new TerminalTreebankNode(jcas); copy.setLeaf(true); copy.setChildren(null); }else{ copy = new TreebankNode(jcas); copy.setChildren(new FSArray(jcas, orig.getChildren().size())); for(int i = 0; i < orig.getChildren().size(); i++){ copy.setChildren(i, getTreeCopy(jcas, orig.getChildren(i))); copy.getChildren(i).setParent(copy); } } copy.setNodeType(orig.getNodeType()); copy.setNodeValue(orig.getNodeValue()); copy.setBegin(orig.getBegin()); copy.setEnd(orig.getEnd()); return copy; }