Example usage for edu.stanford.nlp.trees HeadFinder determineHead

List of usage examples for edu.stanford.nlp.trees HeadFinder determineHead

Introduction

In this page you can find the example usage for edu.stanford.nlp.trees HeadFinder determineHead.

Prototype

public Tree determineHead(Tree t);

Source Link

Document

Determine which daughter of the current parse tree is the head.

Usage

From source file:edu.jhu.hlt.concrete.stanford.PreNERCoreMapWrapper.java

License:Open Source License

/**
*
* @param root//from w w w.  j a  v  a 2s.  c o  m
* @param left
* @param right
* @param n
*          is the length of the sentence is tokens.
* @param p
* @param tokenizationUUID
* @return The constituent ID
* @throws AnalyticException
*/
private static int constructConstituent(Tree root, int left, int right, int n, Parse p, UUID tokenizationUUID,
        HeadFinder hf) throws AnalyticException {

    Constituent constituent = new Constituent();
    constituent.setId(p.getConstituentListSize());
    constituent.setTag(root.value());
    constituent.setStart(left);
    constituent.setEnding(right);
    p.addToConstituentList(constituent);
    Tree headTree = null;
    if (!root.isLeaf()) {
        try {
            headTree = hf.determineHead(root);
        } catch (java.lang.IllegalArgumentException iae) {
            LOGGER.warn("Failed to find head, falling back on rightmost constituent.");
            headTree = root.children()[root.numChildren() - 1];
        }
    }
    int i = 0, headTreeIdx = -1;

    int leftPtr = left;
    for (Tree child : root.getChildrenAsList()) {
        int width = child.getLeaves().size();
        int childId = constructConstituent(child, leftPtr, leftPtr + width, n, p, tokenizationUUID, hf);
        constituent.addToChildList(childId);

        leftPtr += width;
        if (headTree != null && child == headTree) {
            assert (headTreeIdx < 0);
            headTreeIdx = i;
        }
        i++;
    }

    if (headTreeIdx >= 0)
        constituent.setHeadChildIndex(headTreeIdx);

    if (!constituent.isSetChildList())
        constituent.setChildList(new ArrayList<Integer>());
    return constituent.getId();
}