ParsingState state = new ParsingState(instance,factory);
while (!state.isFinalState()) {
// 左右焦点词在句子中的位置
int[] lr = state.getFocusIndices();
HashSparseVector features = state.getFeatures();
ParsingState.Action action = getAction(lr[0], lr[1],
heads);
state.next(action);
if (action == ParsingState.Action.LEFT)
heads[lr[1]] = -1;
if (action == ParsingState.Action.RIGHT)
heads[lr[0]] = -1;
// writer.write(String.valueOf(instance.postags[lr[0]]));
String pos = instance.getTagAt(lr[0]);
postagAlphabet.lookupIndex(pos);
writer.write(pos);
writer.write(" ");
switch (action) {
case LEFT:
writer.write("L");
break;
case RIGHT:
writer.write("R");
break;
default:
writer.write("S");
}
writer.write(" ");
int[] idx = features.indices();
Arrays.sort(idx);
for (int i = 0; i < idx.length; i++) {
writer.write(String.valueOf(idx[i]));
writer.write(" ");
}