package clear.experiment;
import clear.dep.DepNode;
import clear.dep.DepTree;
import clear.reader.SRLReader;
import clear.util.JMap;
import clear.util.tuple.JObjectIntTuple;
import com.carrotsearch.hppc.ObjectIntOpenHashMap;
import java.io.IOException;
import java.util.ArrayList;
public class ExtractDeps {
public ExtractDeps(String inputFile) {
extractRBs(inputFile);
/*
* SRLReader reader = new SRLReader(inputFile, true); DepTree tree;
*
* ObjectIntOpenHashMap<String> map = new
* ObjectIntOpenHashMap<String>();
*
* while ((tree = reader.nextTree()) != null) { extractRBs(tree, map); }
*
* ArrayList<JObjectIntTuple<String>> list =
* JMap.<String>getSortedTuples(map);
*
* for (JObjectIntTuple<String> tup : list)
System.out.println(tup.object+"\t"+tup.integer);
*/
}
public void extractRBs(String inputFile) {
SRLReader reader = new SRLReader(inputFile, true);
DepTree tree;
ObjectIntOpenHashMap<String> map = new ObjectIntOpenHashMap<>();
while ((tree = reader.nextTree()) != null) {
extractCONJPs(tree, map);
}
ArrayList<JObjectIntTuple<String>> list = JMap.<String>getSortedTuples(map);
for (JObjectIntTuple<String> tup : list) {
System.out.println(tup.object + "\t" + tup.integer);
}
}
void extractCONJPs(DepTree tree, ObjectIntOpenHashMap<String> map) {
DepNode curr, head;
String pos;
int i, j, size = tree.size();
for (i = 1; i < size; i++) {
curr = tree.get(i);
head = tree.get(curr.headId);
if (curr.isPredicate() && head.isPos("TO") && curr.isDeprel("IM")) {
for (j = head.id + 1; j < curr.id; j++) {
pos = tree.get(j).pos;
map.put(pos, map.get(pos) + 1);
if (pos.equals("DT")) {
System.out.println(curr.id + " " + head.id + " " + tree);
try {
System.in.read();
} catch (IOException e) {
}
}
}
}
}
// try {System.in.read();} catch (IOException e) {}
}
public static void main(String[] args) {
ExtractDeps extractDeps = new ExtractDeps(args[0]);
}
}