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