use of edu.stanford.nlp.ling.CategoryWordTag in project CoreNLP by stanfordnlp.
the class PostSplitter method transformTreeHelper.
public Tree transformTreeHelper(Tree t, Tree root, TreeFactory tf) {
Tree result;
Tree parent;
String parentStr;
String grandParentStr;
if (root == null || t.equals(root)) {
parent = null;
parentStr = "";
} else {
parent = t.parent(root);
parentStr = parent.label().value();
}
if (parent == null || parent.equals(root)) {
grandParentStr = "";
} else {
Tree grandParent = parent.parent(root);
grandParentStr = grandParent.label().value();
}
String cat = t.label().value();
String baseParentStr = tlpParams.treebankLanguagePack().basicCategory(parentStr);
String baseGrandParentStr = tlpParams.treebankLanguagePack().basicCategory(grandParentStr);
if (t.isLeaf()) {
return tf.newLeaf(new Word(t.label().value()));
}
String word = t.headTerminal(hf).value();
if (t.isPreTerminal()) {
nonTerms.incrementCount(t.label().value());
} else {
nonTerms.incrementCount(t.label().value());
if (trainOptions.postPA && !trainOptions.smoothing && baseParentStr.length() > 0) {
String cat2;
if (trainOptions.postSplitWithBaseCategory) {
cat2 = cat + '^' + baseParentStr;
} else {
cat2 = cat + '^' + parentStr;
}
if (!trainOptions.selectivePostSplit || trainOptions.postSplitters.contains(cat2)) {
cat = cat2;
}
}
if (trainOptions.postGPA && !trainOptions.smoothing && grandParentStr.length() > 0) {
String cat2;
if (trainOptions.postSplitWithBaseCategory) {
cat2 = cat + '~' + baseGrandParentStr;
} else {
cat2 = cat + '~' + grandParentStr;
}
if (trainOptions.selectivePostSplit) {
if (cat.contains("^") && trainOptions.postSplitters.contains(cat2)) {
cat = cat2;
}
} else {
cat = cat2;
}
}
}
result = tf.newTreeNode(new CategoryWordTag(cat, word, cat), Collections.<Tree>emptyList());
ArrayList<Tree> newKids = new ArrayList<>();
Tree[] kids = t.children();
for (Tree kid : kids) {
newKids.add(transformTreeHelper(kid, root, tf));
}
result.setChildren(newKids);
return result;
}
Aggregations