// Start at node 1, since node 0 is considered the head of the sentence
for (int i = 1; i < tree.size(); i++) {
// Every ClearParser parserNode will contain an srlInfo field.
DepNode parserNode = tree.get(i);
BaseToken token = tokens.get(i - 1);
if (parserNode.srlInfo == null) {
continue;
}
if (parserNode.srlInfo.isPredicate()) {
int headId = i;
if (!headIdToPredicate.containsKey(headId)) {
// We have not encountered this predicate yet, so create it
Predicate pred = this.createPredicate(jCas, parserNode.srlInfo.rolesetId, token);
headIdToPredicate.put(headId, pred);
pred.setRelations(new EmptyFSList(jCas));
}
} else {
for (SRLHead head : parserNode.srlInfo.heads) {
Predicate predicate;
// Determine which predicate this argument belongs to
if (!headIdToPredicate.containsKey(head.headId)) {
// The predicate hasn't been encountered, so create it
BaseToken headToken = tokens.get(head.headId - 1);
predicate = this.createPredicate(jCas, parserNode.srlInfo.rolesetId, headToken);
headIdToPredicate.put(head.headId, predicate);
} else {
predicate = headIdToPredicate.get(head.headId);
}