package com.antbrains.crf.hadoop; import gnu.trove.iterator.TObjectIntIterator; import gnu.trove.map.hash.TIntObjectHashMap; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import com.antbrains.crf.FeatureDict; import com.antbrains.crf.TrainingParams; import com.antbrains.crf.TrainingWeights; import de.ruedigermoeller.serialization.FSTObjectInput; import de.ruedigermoeller.serialization.FSTObjectOutput; public class ReverseFeatureDict { public static void main(String[] args) throws Exception { if (args.length != 2) { System.out.println("Usage <in> <out>"); System.exit(-1); } String featureFilename = args[0]; FSTObjectInput foi = null; FeatureDict dict = null; System.out.println("load featuredict from: " + featureFilename); try { foi = new FSTObjectInput(new FileInputStream(featureFilename)); dict = (FeatureDict) foi.readObject(); } finally { if (foi != null) { foi.close(); } } System.out.println(dict.size()); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(args[1]), "UTF8")); TObjectIntIterator<String> iter = dict.iterator(); int line = 0; while (iter.hasNext()) { iter.advance(); bw.write(iter.key() + "\t" + iter.value() + "\n"); line++; } System.out.println(line); bw.close(); } }