package clear.experiment; import clear.treebank.TBReader; import clear.treebank.TBTree; import clear.util.IOUtil; import clear.util.tuple.JIntIntTuple; import java.io.File; import java.io.PrintStream; import java.util.ArrayList; import java.util.Arrays; public class PennMap { PrintStream fout; public PennMap(String treeDir, String mapFile) { String[] filenames = new File(treeDir).list(); Arrays.sort(filenames); fout = IOUtil.createPrintFileStream(mapFile); for (String filename : filenames) { if (filename.endsWith(".mrg")) { printMap(treeDir, filename); } } fout.close(); } void printMap(String treeDir, String filename) { TBReader reader = new TBReader(treeDir + File.separator + filename); String key = filename + "_"; JIntIntTuple tup; TBTree tree; for (int treeId = 0; (tree = reader.nextTree()) != null; treeId++) { StringBuilder build = new StringBuilder(); build.append(key); build.append(treeId); build.append("\t"); build.append(tree.formsWithoutSpace()); build.append("\t"); ArrayList<JIntIntTuple> map = tree.getCharIdToTerminalIdMap(); tup = map.get(0); build.append(tup.int1); build.append(":"); build.append(tup.int2); for (int j = 1; j < map.size(); j++) { tup = map.get(j); build.append(" "); build.append(tup.int1); build.append(":"); build.append(tup.int2); } fout.println(build.toString()); } } static public void main(String[] args) { String treeDir = args[0]; String mapFile = args[1]; new PennMap(treeDir, mapFile); } }