package clear.experiment; import clear.dep.DepNode; import clear.dep.DepTree; import clear.dep.srl.SRLHead; import clear.reader.SRLReader; import com.carrotsearch.hppc.IntOpenHashSet; import java.io.IOException; import java.util.Arrays; public class DepAnalyze { public DepAnalyze(String inputFile) { SRLReader reader = new SRLReader(inputFile, true); DepTree tree; while ((tree = reader.nextTree()) != null) { analyze(tree); } } public void analyze(DepTree tree) { DepNode pred, node, lm; IntOpenHashSet sVC; int predId = 0, lmId, i, j; tree.setSubcat(); for (i = 0; (predId = tree.nextPredicateId(predId)) < tree.size(); i++) { pred = tree.get(predId); sVC = tree.getVCIdSet(predId); lm = pred.leftMostDep; if (lm != null) { lmId = (lm.id < pred.headId) ? lm.id : pred.headId; } else if (pred.headId < pred.id) { lmId = pred.headId; } else { continue; } lm = tree.get(lmId); outer: for (j = lm.id - 1; j > 0; j--) { node = tree.get(j); if (!node.isArgOf(predId)) { continue; } if (sVC.contains(node.headId)) { continue; } for (int id : sVC.toArray()) { if (tree.get(id).headId == node.id) { continue outer; } } for (SRLHead head : node.srlInfo.heads) { if (head.headId < predId) { continue outer; } } System.out.println(node.id + " " + predId + " " + Arrays.toString(sVC.toArray())); System.out.println(tree.toString()); try { System.in.read(); } catch (IOException e) { } } } } public static void main(String[] args) { new DepAnalyze(args[0]); } }