package clear.experiment;
import clear.dep.DepNode;
import clear.dep.DepTree;
import clear.reader.DepReader;
import clear.util.IOUtil;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
public class ExtractArgs {
HashMap<String, HashSet<String>> m_obj;
PrintStream f_out;
public ExtractArgs(String inputFile, String outputFile) {
m_obj = new HashMap<>();
f_out = IOUtil.createPrintFileStream(outputFile);
DepReader reader = new DepReader(inputFile, true);
DepTree tree;
while ((tree = reader.nextTree()) != null) {
retrieve(tree);
}
print();
}
void retrieve(DepTree tree) {
HashSet<String> set;
for (int i = 1; i < tree.size(); i++) {
DepNode node = tree.get(i);
DepNode head = tree.get(node.headId);
if (node.isDeprel("OBJ") && node.isPosx("NN.*") && head.isPosx("VB.*")) {
if (m_obj.containsKey(head.lemma)) {
set = m_obj.get(head.lemma);
} else {
set = new HashSet<>();
m_obj.put(head.lemma, set);
}
set.add(node.lemma);
}
}
}
void print() {
ArrayList<String> keys = new ArrayList<>(m_obj.keySet());
ArrayList<String> values;
Collections.sort(keys);
for (String key : keys) {
values = new ArrayList<>(m_obj.get(key));
Collections.sort(values);
StringBuilder build = new StringBuilder();
build.append(key);
for (String item : values) {
build.append(" ");
build.append(item);
}
f_out.println(build.toString());
}
f_out.close();
}
static public void main(String[] args) {
ExtractArgs extractArgs = new ExtractArgs(args[0], args[1]);
}
}