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());
}