protected void preamble (TransducerTrainer tt) { int iteration = tt.getIteration(); String filename = filenamePrefix + "." + iteration + ".bin"; try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename)); oos.writeObject(tt.getTransducer()); logger.info("Trained model saved: " + filename + ", iter: " + iteration); } catch (FileNotFoundException fnfe) { logger.warning("Could not save model: " + filename + ", iter: " + iteration); fnfe.printStackTrace(); } catch (IOException ioe) { logger.warning("Could not save model: " + filename + ", iter: " + iteration); ioe.printStackTrace(); } }
protected void preamble (TransducerTrainer tt) { int iteration = tt.getIteration(); String filename = filenamePrefix + "." + iteration + ".bin"; try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename)); oos.writeObject(tt.getTransducer()); logger.info("Trained model saved: " + filename + ", iter: " + iteration); } catch (FileNotFoundException fnfe) { logger.warning("Could not save model: " + filename + ", iter: " + iteration); fnfe.printStackTrace(); } catch (IOException ioe) { logger.warning("Could not save model: " + filename + ", iter: " + iteration); ioe.printStackTrace(); } }
protected void preamble (TransducerTrainer tt) { int iteration = tt.getIteration(); String filename = filenamePrefix + "." + iteration + ".bin"; try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename)); oos.writeObject(tt.getTransducer()); logger.info("Trained model saved: " + filename + ", iter: " + iteration); } catch (FileNotFoundException fnfe) { logger.warning("Could not save model: " + filename + ", iter: " + iteration); fnfe.printStackTrace(); } catch (IOException ioe) { logger.warning("Could not save model: " + filename + ", iter: " + iteration); ioe.printStackTrace(); } }
public void writeModel(File target) throws IOException { CRF crf = (CRF) lastTrainer.getTransducer(); ReadWrite.writeTo(new PhonemeCrfModel(crf), target); log.info("Wrote for whole data"); }
public StressModel train(List<Alignment> aligns) { log.info("About to train the stress predictor..."); InstanceList examples = makeExamplesFromAligns(aligns); Pipe pipe = examples.getPipe(); log.info("Training test-time syll chain tagger on whole data..."); TransducerTrainer trainer = trainOnce(pipe, examples); return new StressModel((CRF) trainer.getTransducer()); }
public SyllChainModel train(List<Alignment> aligns) { log.info("About to train the syll chain..."); InstanceList examples = makeExamplesFromAligns(aligns); Pipe pipe = examples.getPipe(); log.info("Training test-time syll chain tagger on whole data..."); TransducerTrainer trainer = trainOnce(pipe, examples); return new SyllChainModel((CRF) trainer.getTransducer()); }
public AlignTagModel train(Collection<Alignment> inputs) { InstanceList examples = makeExamplesFromAligns(inputs); Pipe pipe = examples.getPipe(); log.info("Training test-time aligner on whole data..."); TransducerTrainer trainer = trainOnce(pipe, examples); return new AlignTagModel((CRF) trainer.getTransducer()); }
public PhoneSyllTagModel train(Collection<SWord> inputs) { InstanceList examples = makeExamplesFromAligns(inputs); Pipe pipe = examples.getPipe(); log.info("Training test-time syll phone tagger on whole data..."); TransducerTrainer trainer = trainOnce(pipe, examples); return new PhoneSyllTagModel((CRF) trainer.getTransducer()); }
public void evaluateInstanceList (TransducerTrainer tt, InstanceList data, String description) Transducer model = tt.getTransducer(); Alphabet dict = model.getInputPipe().getTargetAlphabet(); int numLabels = dict.size();
public void evaluateInstanceList (TransducerTrainer tt, InstanceList data, String description) Transducer model = tt.getTransducer(); Alphabet dict = model.getInputPipe().getTargetAlphabet(); int numLabels = dict.size();
public void evaluateInstanceList (TransducerTrainer trainer, InstanceList instances, String description) { int numCorrectTokens; int totalTokens; Transducer transducer = trainer.getTransducer(); totalTokens = numCorrectTokens = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); //System.err.println ("TokenAccuracyEvaluator "+i+" length="+input.size()); Sequence predOutput = transducer.transduce (input); assert (predOutput.size() == trueOutput.size()); for (int j = 0; j < trueOutput.size(); j++) { totalTokens++; if (trueOutput.get(j).equals(predOutput.get(j))) numCorrectTokens++; } //System.err.println ("TokenAccuracyEvaluator "+i+" numCorrectTokens="+numCorrectTokens+" totalTokens="+totalTokens+" accuracy="+((double)numCorrectTokens)/totalTokens); } double acc = ((double)numCorrectTokens)/totalTokens; //System.err.println ("TokenAccuracyEvaluator accuracy="+acc); accuracy.put(description, acc); logger.info (description +" accuracy="+acc); }
public void evaluateInstanceList (TransducerTrainer tt, InstanceList data, String description) { int correct = 0; for (int i = 0; i < data.size(); i++) { Instance instance = data.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); Sequence predOutput = tt.getTransducer().transduce (input); assert (predOutput.size() == trueOutput.size()); if (sequencesMatch (trueOutput, predOutput)) correct++; } double acc = ((double)correct) / data.size(); accuracy.put(description, acc); logger.info (description+" Num instances = "+data.size()+" Num correct = "+correct+" Per-instance accuracy = "+acc); }
public void evaluateInstanceList (TransducerTrainer tt, InstanceList data, String description) { int correct = 0; for (int i = 0; i < data.size(); i++) { Instance instance = data.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); Sequence predOutput = tt.getTransducer().transduce (input); assert (predOutput.size() == trueOutput.size()); if (sequencesMatch (trueOutput, predOutput)) correct++; } double acc = ((double)correct) / data.size(); accuracy.put(description, acc); logger.info (description+" Num instances = "+data.size()+" Num correct = "+correct+" Per-instance accuracy = "+acc); }
public void evaluateInstanceList (TransducerTrainer tt, InstanceList data, String description) { int correct = 0; for (int i = 0; i < data.size(); i++) { Instance instance = data.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); Sequence predOutput = tt.getTransducer().transduce (input); assert (predOutput.size() == trueOutput.size()); if (sequencesMatch (trueOutput, predOutput)) correct++; } double acc = ((double)correct) / data.size(); accuracy.put(description, acc); logger.info (description+" Num instances = "+data.size()+" Num correct = "+correct+" Per-instance accuracy = "+acc); }
public void evaluateInstanceList (TransducerTrainer trainer, InstanceList instances, String description) { int numCorrectTokens; int totalTokens; Transducer transducer = trainer.getTransducer(); totalTokens = numCorrectTokens = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); //System.err.println ("TokenAccuracyEvaluator "+i+" length="+input.size()); Sequence predOutput = transducer.transduce (input); assert (predOutput.size() == trueOutput.size()); for (int j = 0; j < trueOutput.size(); j++) { totalTokens++; if (trueOutput.get(j).equals(predOutput.get(j))) numCorrectTokens++; } //System.err.println ("TokenAccuracyEvaluator "+i+" numCorrectTokens="+numCorrectTokens+" totalTokens="+totalTokens+" accuracy="+((double)numCorrectTokens)/totalTokens); } double acc = ((double)numCorrectTokens)/totalTokens; //System.err.println ("TokenAccuracyEvaluator accuracy="+acc); accuracy.put(description, acc); logger.info (description +" accuracy="+acc); }
public void evaluateInstanceList (TransducerTrainer trainer, InstanceList instances, String description) { int numCorrectTokens; int totalTokens; Transducer transducer = trainer.getTransducer(); totalTokens = numCorrectTokens = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); //System.err.println ("TokenAccuracyEvaluator "+i+" length="+input.size()); Sequence predOutput = transducer.transduce (input); assert (predOutput.size() == trueOutput.size()); for (int j = 0; j < trueOutput.size(); j++) { totalTokens++; if (trueOutput.get(j).equals(predOutput.get(j))) numCorrectTokens++; } //System.err.println ("TokenAccuracyEvaluator "+i+" numCorrectTokens="+numCorrectTokens+" totalTokens="+totalTokens+" accuracy="+((double)numCorrectTokens)/totalTokens); } double acc = ((double)numCorrectTokens)/totalTokens; //System.err.println ("TokenAccuracyEvaluator accuracy="+acc); accuracy.put(description, acc); logger.info (description +" accuracy="+acc); }
public SyllTagModel train(Collection<Alignment> trainInputs, Collection<Alignment> testInputs, boolean eval) { Pipe pipe = makePipe(); InstanceList trainExamples = makeExamplesFromAlignsWithPipe(trainInputs, pipe); InstanceList testExamples = null; if (testInputs != null) { testExamples = makeExamplesFromAlignsWithPipe(testInputs, pipe); } log.info("Training test-time syll aligner on whole data..."); TransducerTrainer trainer = trainOnce(pipe, trainExamples); if (eval) { TokenAccuracyEvaluator evaler = new TokenAccuracyEvaluator(trainExamples, "traindata"); evaler.evaluate(trainer); double trainAcc = evaler.getAccuracy("traindata"); double testAcc = 0.0; if (testExamples != null) { TokenAccuracyEvaluator evaler2 = new TokenAccuracyEvaluator(testExamples, "testdata"); evaler2.evaluate(trainer); testAcc = evaler2.getAccuracy("testdata"); } log.info("Train data accuracy = " + trainAcc + ", test data accuracy = " + testAcc); } return new SyllTagModel((CRF) trainer.getTransducer()); }
@Override public void evaluateInstanceList(TransducerTrainer transducer, InstanceList instances, String description) { double[] predCounts = new double[instances.getTargetAlphabet().size()]; double[] trueCounts = new double[instances.getTargetAlphabet().size()]; int total = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence trueOutput = (Sequence) instance.getTarget(); Sequence predOutput = (Sequence) transducer.getTransducer().transduce((Sequence)instance.getData()); for (int j = 0; j < predOutput.size(); j++) { total++; predCounts[instances.getTargetAlphabet().lookupIndex(predOutput.get(j))]++; trueCounts[instances.getTargetAlphabet().lookupIndex(trueOutput.get(j))]++; } } NumberFormat formatter = NumberFormat.getInstance(); formatter.setMaximumFractionDigits(4); for (int li = 0; li < predCounts.length; li++) { double ppred = predCounts[li] / total; double ptrue = trueCounts[li] / total; logger.info(description + " " + instances.getTargetAlphabet().lookupObject(li) + " predicted: " + formatter.format(ppred) + " - true: " + formatter.format(ptrue)); } } }
@Override public void evaluateInstanceList(TransducerTrainer transducer, InstanceList instances, String description) { double[] predCounts = new double[instances.getTargetAlphabet().size()]; double[] trueCounts = new double[instances.getTargetAlphabet().size()]; int total = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence trueOutput = (Sequence) instance.getTarget(); Sequence predOutput = (Sequence) transducer.getTransducer().transduce((Sequence)instance.getData()); for (int j = 0; j < predOutput.size(); j++) { total++; predCounts[instances.getTargetAlphabet().lookupIndex(predOutput.get(j))]++; trueCounts[instances.getTargetAlphabet().lookupIndex(trueOutput.get(j))]++; } } NumberFormat formatter = NumberFormat.getInstance(); formatter.setMaximumFractionDigits(4); for (int li = 0; li < predCounts.length; li++) { double ppred = predCounts[li] / total; double ptrue = trueCounts[li] / total; logger.info(description + " " + instances.getTargetAlphabet().lookupObject(li) + " predicted: " + formatter.format(ppred) + " - true: " + formatter.format(ptrue)); } } }
@Override public void evaluateInstanceList(TransducerTrainer transducer, InstanceList instances, String description) { double[] predCounts = new double[instances.getTargetAlphabet().size()]; double[] trueCounts = new double[instances.getTargetAlphabet().size()]; int total = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence trueOutput = (Sequence) instance.getTarget(); Sequence predOutput = (Sequence) transducer.getTransducer().transduce((Sequence)instance.getData()); for (int j = 0; j < predOutput.size(); j++) { total++; predCounts[instances.getTargetAlphabet().lookupIndex(predOutput.get(j))]++; trueCounts[instances.getTargetAlphabet().lookupIndex(trueOutput.get(j))]++; } } NumberFormat formatter = NumberFormat.getInstance(); formatter.setMaximumFractionDigits(4); for (int li = 0; li < predCounts.length; li++) { double ppred = predCounts[li] / total; double ptrue = trueCounts[li] / total; logger.info(description + " " + instances.getTargetAlphabet().lookupObject(li) + " predicted: " + formatter.format(ppred) + " - true: " + formatter.format(ptrue)); } } }