/** * Indented list printing of a tree. The tree is printed in an * indented list notation, with node labels followed by node scores. * String parameters are used rather than integer levels for efficiency. * * @param indent The base {@code String} (normally just spaces) * to print before each line of tree * @param pad The additional {@code String} (normally just more * spaces) to add when going to a deeper level of {@code Tree}. * @param pw The PrintWriter to print the tree to * @param printScores Whether to print the scores (log probs) of tree nodes */ private void indentedListPrint(String indent, String pad, PrintWriter pw, boolean printScores) { StringBuilder sb = new StringBuilder(indent); Label label = label(); if (label != null) { sb.append(label); } if (printScores) { sb.append(" "); sb.append(score()); } pw.println(sb); Tree[] children = children(); String newIndent = indent + pad; for (Tree child : children) { child.indentedListPrint(newIndent, pad, pw, printScores); } }
if (printScores) { sb.append(" score="); sb.append(score());
protected Tree transformTreeHelper(Tree t) { if (t.isLeaf()) { Tree leaf = tf.newLeaf(t.label()); leaf.setScore(t.score()); return leaf; } List<Tree> newChildren = new ArrayList<>(); for (int childNum = 0, numKids = t.numChildren(); childNum < numKids; childNum++) { Tree child = t.getChild(childNum); Tree newChild = transformTreeHelper(child); if ((!newChild.isLeaf()) && newChild.label().value().indexOf('@') >= 0) { newChildren.addAll(newChild.getChildrenAsList()); } else { newChildren.add(newChild); } } Tree node = tf.newTreeNode(t.label(), newChildren); node.setScore(t.score()); return node; }
(maxDepth < 0 || depth <= maxDepth)) { constituentsSet.add(cf.newConstituent(left, position - 1, label(), score()));
/** * Create a ParseTree proto from a Tree. If the Tree is a scored tree, the scores will * be preserved. * @param parseTree The parse tree to convert. * @return A protocol buffer message corresponding to this tree. */ public CoreNLPProtos.ParseTree toProto(Tree parseTree) { CoreNLPProtos.ParseTree.Builder builder = CoreNLPProtos.ParseTree.newBuilder(); // Required fields for (Tree child : parseTree.children()) { builder.addChild(toProto(child)); } // Optional fields IntPair span = parseTree.getSpan(); if (span != null) { builder.setYieldBeginIndex(span.getSource()); builder.setYieldEndIndex(span.getTarget()); } if (parseTree.label() != null) { builder.setValue(parseTree.label().value()); } if (!Double.isNaN(parseTree.score())) { builder.setScore(parseTree.score()); } Integer sentiment; if (parseTree.label() instanceof CoreMap && (sentiment = ((CoreMap) parseTree.label()).get(RNNCoreAnnotations.PredictedClass.class)) != null) { builder.setSentiment(CoreNLPProtos.Sentiment.forNumber(sentiment)); } // Return return builder.build(); }
tbd = subcategoryStripper.transformTree(tbd); pq.restoreOriginalWords(tbd); pwOut.println("PCFG Parse #" + iii + " with score " + tbd.score()); tbd.pennPrint(pwOut); Tree tbtr = collinizer.transformTree(tbd);
/** * Indented list printing of a tree. The tree is printed in an * indented list notation, with nodel labels followed by node scores. * String parameters are used rather than integer levels for efficiency. * * @param indent The base <code>String</code> (normally just spaces) * to print before each line of tree * @param pad The additional <code>String</code> (normally just more * spaces) to add when going to a deeper level of <code>Tree</code>. * @param pw The PrintWriter to print the tree to * @param printScores Whether to print the scores (log probs) of tree nodes */ private void indentedListPrint(String indent, String pad, PrintWriter pw, boolean printScores) { StringBuilder sb = new StringBuilder(indent); Label label = label(); if (label != null) { sb.append(label.toString()); } if (printScores) { sb.append(" "); sb.append(score()); } pw.println(sb.toString()); Tree[] children = children(); String newIndent = indent + pad; for (int i = 0, n = children.length; i < n; i++) { children[i].indentedListPrint(newIndent, pad, pw, printScores); } }
/** * Indented list printing of a tree. The tree is printed in an * indented list notation, with node labels followed by node scores. * String parameters are used rather than integer levels for efficiency. * * @param indent The base {@code String} (normally just spaces) * to print before each line of tree * @param pad The additional {@code String} (normally just more * spaces) to add when going to a deeper level of {@code Tree}. * @param pw The PrintWriter to print the tree to * @param printScores Whether to print the scores (log probs) of tree nodes */ private void indentedListPrint(String indent, String pad, PrintWriter pw, boolean printScores) { StringBuilder sb = new StringBuilder(indent); Label label = label(); if (label != null) { sb.append(label); } if (printScores) { sb.append(" "); sb.append(score()); } pw.println(sb); Tree[] children = children(); String newIndent = indent + pad; for (Tree child : children) { child.indentedListPrint(newIndent, pad, pw, printScores); } }
/** * Indented list printing of a tree. The tree is printed in an * indented list notation, with node labels followed by node scores. * String parameters are used rather than integer levels for efficiency. * * @param indent The base <code>String</code> (normally just spaces) * to print before each line of tree * @param pad The additional <code>String</code> (normally just more * spaces) to add when going to a deeper level of <code>Tree</code>. * @param pw The PrintWriter to print the tree to * @param printScores Whether to print the scores (log probs) of tree nodes */ private void indentedListPrint(String indent, String pad, PrintWriter pw, boolean printScores) { StringBuilder sb = new StringBuilder(indent); Label label = label(); if (label != null) { sb.append(label.toString()); } if (printScores) { sb.append(" "); sb.append(score()); } pw.println(sb.toString()); Tree[] children = children(); String newIndent = indent + pad; for (Tree child : children) { child.indentedListPrint(newIndent, pad, pw, printScores); } }
protected Tree transformTreeHelper(Tree t) { if (t.isLeaf()) { Tree leaf = tf.newLeaf(t.label()); leaf.setScore(t.score()); return leaf; } List<Tree> newChildren = new ArrayList<Tree>(); for (int childNum = 0, numKids = t.numChildren(); childNum < numKids; childNum++) { Tree child = t.getChild(childNum); Tree newChild = transformTreeHelper(child); if ((!newChild.isLeaf()) && newChild.label().value().indexOf('@') >= 0) { newChildren.addAll(newChild.getChildrenAsList()); } else { newChildren.add(newChild); } } Tree node = tf.newTreeNode(t.label(), newChildren); node.setScore(t.score()); return node; }
protected Tree transformTreeHelper(Tree t) { if (t.isLeaf()) { Tree leaf = tf.newLeaf(t.label()); leaf.setScore(t.score()); return leaf; } List<Tree> newChildren = new ArrayList<>(); for (int childNum = 0, numKids = t.numChildren(); childNum < numKids; childNum++) { Tree child = t.getChild(childNum); Tree newChild = transformTreeHelper(child); if ((!newChild.isLeaf()) && newChild.label().value().indexOf('@') >= 0) { newChildren.addAll(newChild.getChildrenAsList()); } else { newChildren.add(newChild); } } Tree node = tf.newTreeNode(t.label(), newChildren); node.setScore(t.score()); return node; }
protected Tree transformTreeHelper(Tree t) { if (t.isLeaf()) { Tree leaf = tf.newLeaf(t.label()); leaf.setScore(t.score()); return leaf; } List<Tree> newChildren = new ArrayList<Tree>(20); for (int childNum = 0, numKids = t.numChildren(); childNum < numKids; childNum++) { Tree child = t.getChild(childNum); Tree newChild = transformTreeHelper(child); if ((!newChild.isLeaf()) && newChild.label().value().indexOf('@') >= 0) { newChildren.addAll(newChild.getChildrenAsList()); } else { newChildren.add(newChild); } } Tree node = tf.newTreeNode(t.label(), newChildren); node.setScore(t.score()); return node; }
protected Tree transformTreeHelper(Tree t) { if (t.isLeaf()) { Tree leaf = tf.newLeaf(t.label()); leaf.setScore(t.score()); return leaf; } List<Tree> newChildren = new ArrayList<>(); for (int childNum = 0, numKids = t.numChildren(); childNum < numKids; childNum++) { Tree child = t.getChild(childNum); Tree newChild = transformTreeHelper(child); if ((!newChild.isLeaf()) && newChild.label().value().indexOf('@') >= 0) { newChildren.addAll(newChild.getChildrenAsList()); } else { newChildren.add(newChild); } } Tree node = tf.newTreeNode(t.label(), newChildren); node.setScore(t.score()); return node; }
public Tree transformTree(Tree tree) { Label lab = tree.label(); if (tree.isLeaf()) { Tree leaf = tf.newLeaf(lab); leaf.setScore(tree.score()); return leaf; } String s = lab.value(); s = treebankLanguagePack().basicCategory(s); s = treebankLanguagePack().stripGF(s); int numKids = tree.numChildren(); List<Tree> children = new ArrayList<Tree>(numKids); for (int cNum = 0; cNum < numKids; cNum++) { Tree child = tree.getChild(cNum); Tree newChild = transformTree(child); children.add(newChild); } CategoryWordTag newLabel = new CategoryWordTag(lab); newLabel.setCategory(s); if (lab instanceof HasTag) { String tag = ((HasTag) lab).tag(); tag = treebankLanguagePack().basicCategory(tag); tag = treebankLanguagePack().stripGF(tag); newLabel.setTag(tag); } Tree node = tf.newTreeNode(newLabel, children); node.setScore(tree.score()); return node; } } // end class RemoveGFSubcategoryStripper
/** * Create a ParseTree proto from a Tree. If the Tree is a scored tree, the scores will * be preserved. * @param parseTree The parse tree to convert. * @return A protocol buffer message corresponding to this tree. */ public CoreNLPProtos.ParseTree toProto(Tree parseTree) { CoreNLPProtos.ParseTree.Builder builder = CoreNLPProtos.ParseTree.newBuilder(); // Required fields for (Tree child : parseTree.children()) { builder.addChild(toProto(child)); } // Optional fields IntPair span = parseTree.getSpan(); if (span != null) { builder.setYieldBeginIndex(span.getSource()); builder.setYieldEndIndex(span.getTarget()); } if (parseTree.label() != null) { builder.setValue(parseTree.label().value()); } if (!Double.isNaN(parseTree.score())) { builder.setScore(parseTree.score()); } Integer sentiment; if (parseTree.label() instanceof CoreMap && (sentiment = ((CoreMap) parseTree.label()).get(RNNCoreAnnotations.PredictedClass.class)) != null) { builder.setSentiment(CoreNLPProtos.Sentiment.forNumber(sentiment)); } // Return return builder.build(); }