Search in sources :

Example 6 with CategoryWordTag

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;
}
Also used : Word(edu.stanford.nlp.ling.Word) Tree(edu.stanford.nlp.trees.Tree) CategoryWordTag(edu.stanford.nlp.ling.CategoryWordTag)

Aggregations

CategoryWordTag (edu.stanford.nlp.ling.CategoryWordTag)6 CoreLabel (edu.stanford.nlp.ling.CoreLabel)3 Label (edu.stanford.nlp.ling.Label)3 Word (edu.stanford.nlp.ling.Word)3 Tree (edu.stanford.nlp.trees.Tree)3 HasWord (edu.stanford.nlp.ling.HasWord)1 NegraLabel (edu.stanford.nlp.trees.international.negra.NegraLabel)1