// build
System.err.println("Training builder");
ObjectStream<Event> bes = new ParserEventStream(parseSamples, rules, ParserEventTypeEnum.BUILD, mdict);
Map<String, String> buildReportMap = new HashMap<String, String>();
MaxentModel buildModel = TrainUtil.train(bes, mlParams.getSettings("build"), buildReportMap);
mergeReportIntoManifest(manifestInfoEntries, buildReportMap, "build");
parseSamples.reset();
// tag
POSModel posModel = POSTaggerME.train(languageCode, new PosSampleStream(parseSamples),
mlParams.getParameters("tagger"), null, null);
parseSamples.reset();
// chunk
ChunkerModel chunkModel = ChunkerME.train(languageCode,
new ChunkSampleStream(parseSamples),
new ChunkContextGenerator(), mlParams.getParameters("chunker"));
parseSamples.reset();
// check
System.err.println("Training checker");
ObjectStream<Event> kes = new ParserEventStream(parseSamples, rules, ParserEventTypeEnum.CHECK);
Map<String, String> checkReportMap = new HashMap<String, String>();
MaxentModel checkModel = TrainUtil.train(kes, mlParams.getSettings("check"), checkReportMap);
mergeReportIntoManifest(manifestInfoEntries, checkReportMap, "check");
// TODO: Remove cast for HeadRules
return new ParserModel(languageCode, buildModel, checkModel,
posModel, chunkModel, (opennlp.tools.parser.HeadRules) rules,