/** Adds dependency heads. */
private void addDEPHeads(DEPTree dTree, CTTree cTree)
{
int currId, headId, size = dTree.size(), rootCount = 0;
CTNode cNode, ante;
DEPNode dNode;
String label;
for (currId=1; currId<size; currId++)
{
dNode = dTree.get(currId);
cNode = cTree.getToken(currId-1);
headId = cNode.c2d.d_head.getTokenId() + 1;
if (currId == headId) // root
{
dNode.setHead(dTree.get(DEPLib.ROOT_ID), DEPLibEn.DEP_ROOT);
rootCount++;
}
else
{
label = cNode.c2d.s_label;
if (cNode.isPTagAny(CTLibEn.POS_IN, CTLibEn.POS_TO, CTLibEn.POS_DT) && cNode.getParent().isPTag(CTLibEn.PTAG_SBAR) && !label.equals(DEPLibEn.DEP_COMPLM))
label = DEPLibEn.DEP_MARK;
dNode.setHead(dTree.get(headId), label);
}
if ((ante = cNode.getAntecedent()) != null)
dNode.addXHead(getDEPNode(dTree, ante), DEPLibEn.DEP_REF);
}
if (rootCount > 1) System.err.println("Warning: multiple roots exist");
}