package joshua.discriminative.variational_decoder; import joshua.discriminative.FileUtilityOld; import joshua.discriminative.training.risk_annealer.nbest.NbestMinRiskDAMert; public class VariationalDecoderMinRiskMert extends NbestMinRiskDAMert { VariationalDecoder p_decoder; String f_dev_items; String f_dev_rules; int num_dev_sents; public static void main(String[] args) { if(args.length<5){ System.out.println("Wrong number of parameters, it must have at least four parameters: java NbestMinRiskAnnealer use_shortest_ref f_config gain_factor f_dev_src f_nbest_prefix f_dev_ref1 f_dev_ref2...."); System.exit(1); } //long start_time = System.currentTimeMillis(); boolean use_shortest_ref = new Boolean(args[0].trim()); String f_config=args[1].trim(); String f_dev_hg_prefix=args[2].trim(); String f_nbest_prefix=args[3].trim(); String[] f_dev_refs = new String[args.length-4]; for(int i=4; i< args.length; i++) f_dev_refs[i-4]= args[i].trim(); int num_sent_in_dev_set = FileUtilityOld.numberLinesInFile(f_dev_refs[0]); String f_dev_items = f_dev_hg_prefix +".items"; String f_dev_rules = f_dev_hg_prefix +".rules"; NbestMinRiskDAMert p_trainer= new VariationalDecoderMinRiskMert(use_shortest_ref, f_config, f_dev_items, f_dev_rules, num_sent_in_dev_set, f_dev_refs, f_nbest_prefix); p_trainer.mainLoop(); } public VariationalDecoderMinRiskMert(boolean use_shortest_ref_, String f_config_, String f_dev_items_, String f_dev_rules_, int number_sent_, String[] f_dev_refs_, String f_nbest_prefix_){ super(use_shortest_ref_, f_config_, number_sent_, f_dev_refs_, f_nbest_prefix_); //initiallize //????????????? num_dev_sents = number_sent_; f_dev_items = f_dev_items_; f_dev_rules = f_dev_rules_; p_decoder = new VariationalDecoder(); p_decoder.initializeDecoder(configFile); } public void decodingTestSet(double[] weights, String f_nbest) { p_decoder.changeFeatureWeightVector(weights); p_decoder.decodingTestSet(f_dev_items, f_dev_rules, num_dev_sents, f_nbest); //call decoder to produce an nbest using the new weight vector } public void writeConfigFile(double[] weights, String f_config_template, String f_config_out) { p_decoder.writeConfigFile(weights, f_config_template, f_config_out); } }