package joshua.discriminative.training.risk_annealer.nbest; import joshua.decoder.JoshuaDecoder; import joshua.discriminative.FileUtilityOld; /** * @author Zhifei Li, <zhifei.work@gmail.com> * @version $LastChangedDate: 2008-10-20 00:12:30 -0400 $ */ public class JoshuaNbestMinRiskDAMert extends NbestMinRiskDAMert{ JoshuaDecoder joshuaDecoder; String sourceTrainingFile; public JoshuaNbestMinRiskDAMert(boolean useShortestRef, String joshuaConfig, String devSrcFile, int numSentInDevSet, String[] refFiles, String nbestPrefix) { super(useShortestRef, joshuaConfig, numSentInDevSet, refFiles, nbestPrefix); //initiallize //????????????? sourceTrainingFile = devSrcFile; joshuaDecoder = JoshuaDecoder.getUninitalizedDecoder(); joshuaDecoder.initialize(configFile); } public void decodingTestSet(double[] weights, String nbestFile) { joshuaDecoder.changeBaselineFeatureWeights(weights); joshuaDecoder.decodeTestSet(sourceTrainingFile, nbestFile); //call Joshua decoder to produce an nbest using the new weight vector } public void writeConfigFile(double[] weights, String configTemplate, String outConfig){ JoshuaDecoder.writeConfigFile(weights, configTemplate, outConfig, null); } public static void main(String[] args) { /*String f_joshua_config="C:/data_disk/java_work_space/discriminative_at_clsp/edu/jhu/joshua/discriminative_training/lbfgs/example.config.javalm"; String f_dev_src="C:/data_disk/java_work_space/sf_trunk/example/example.test.in"; String f_nbest_prefix="C:/data_disk/java_work_space/discriminative_at_clsp/edu/jhu/joshua/discriminative_training/lbfgs/example.nbest.javalm.out"; String f_dev_ref="C:/data_disk/java_work_space/sf_trunk/example/example.test.ref.0"; */ if(args.length<5){ System.out.println("Wrong number of parameters, it must have at least four parameters: java NbestMinRiskAnnealer use_shortest_ref f_joshua_config gain_factor f_dev_src f_nbest_prefix f_dev_ref1 f_dev_ref2...."); System.exit(1); } //long start_time = System.currentTimeMillis(); boolean useShortestRef = new Boolean(args[0].trim()); String joshuaConfig=args[1].trim(); String devSrcFile=args[2].trim(); String nbestPrefix=args[3].trim(); String[] refFiles = new String[args.length-4]; for(int i=4; i< args.length; i++) refFiles[i-4]= args[i].trim(); int numSentInDevSet = FileUtilityOld.numberLinesInFile(devSrcFile); NbestMinRiskDAMert trainer= new JoshuaNbestMinRiskDAMert(useShortestRef, joshuaConfig, devSrcFile, numSentInDevSet, refFiles, nbestPrefix); trainer.mainLoop(); } }