Friday, July 19, 2013

Stanford tool

The tree structure created by Stanford parser has some useful information:

offset: (If not, you need setSpan for the tree.)
Label label = tree.label();
int offset1 = ((HasOffset)label).beginPosition();
int offset2 = ((HasOffset)label).endPosition();


public static int setSpan(Tree t, int left){
        Label label = (Label)t.label();
        if (t.isPreTerminal()) {
            ((HasOffset)label).setBeginPosition(left);
            ((HasOffset)label).setEndPosition(left);
            String labelS = label.value();
            if(labelS.contains("-NONE-") || labelS.contains("-none-")){
                return left;
            }
            return (left + 1);
        }
        int position = left;

        // enumerate through daughter trees
        Tree[] kids = t.children();
        for (Tree kid : kids)
            position =setSpan( kid,position);

        //Parent span
        ((HasOffset)label).setBeginPosition(left);
        ((HasOffset)label).setEndPosition(position - 1);
        return position;
    }


It can get the head word of every node:

String headWord = ((HasWord)(tree.label())).word();

No comments:

Post a Comment