package joshua.discriminative.training.structured_lm_em; import joshua.decoder.ff.tm.Grammar; import joshua.discriminative.monolingual_parser.MonolingualJoshuaDecoder; import joshua.discriminative.training.learning_algorithm.DefaultEM; /** * @author Zhifei Li, <zhifei.work@gmail.com> * @version $LastChangedDate: 2008-10-20 00:12:30 -0400 $ */ public class StructuredLMEM extends DefaultEM { MonolingualJoshuaDecoder p_decoder; String trainingFile; String outGrammarPrefix; String decoderConfigFile; Grammar trainingGrammar; public StructuredLMEM(int maxNumIter_, double relativeLikelihoodThreshold_, int maxConvergeNum_, String decoderConfigFile_, String trainingFile_, String outGrammarPrefix_) { super( maxNumIter_, relativeLikelihoodThreshold_, maxConvergeNum_); //initiallize trainingFile = trainingFile_; decoderConfigFile = decoderConfigFile_; outGrammarPrefix = outGrammarPrefix_; p_decoder = new MonolingualJoshuaDecoder(); p_decoder.initialize(decoderConfigFile); } @Override public void runOneEMStep(int iterNum) { p_decoder.decodingTestSet(trainingFile, outGrammarPrefix+"."+iterNum); //call decoder to run EM } @Override public double getLastLikelihood() { // TODO Auto-generated method stub return 0; } @Override public boolean isEMConverged() { // TODO Auto-generated method stub return false; } @Override public void printStatistics(int iter_num) { // TODO Auto-generated method stub } //=============================== main method =============================== 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<4){ System.out.println("Wrong number of parameters, it must have at least two parameters: java StructuredLMEM f_joshua_config f_train"); System.exit(1); } String f_joshua_config=args[0].trim(); String f_dev_src=args[1].trim(); String outGrammarPrefix=args[2].trim(); int maxNumIter = new Integer(args[3].trim()); double relativeLikelihoodThreshold = 1e-5; int maxConvergeNum = 10000; DefaultEM p_trainer= new StructuredLMEM(maxNumIter, relativeLikelihoodThreshold, maxConvergeNum, f_joshua_config, f_dev_src, outGrammarPrefix); p_trainer.runEM(); } }