public void train(TextBlock textBlock) throws Exception { InstanceList trainingData = new InstanceList(getPipes()); for (TextSentence textSentence : textBlock) { Instance textInstance = new TextInstance(textSentence, getTargetAlphabet()); trainingData.addThruPipe(textInstance); } if (crf == null) { crf = new CRF(getPipes(), null); crf.addFullyConnectedStatesForLabels(); crf.setWeightsDimensionAsIn(trainingData, false); CRFOptimizableByLabelLikelihood optLabel = new CRFOptimizableByLabelLikelihood(crf, trainingData); Optimizable.ByGradientValue[] opts = new Optimizable.ByGradientValue[] { optLabel }; crfTrainer = new CRFTrainerByValueGradients(crf, opts); crfTrainer.setMaxResets(0); } crfTrainer.train(trainingData, Integer.MAX_VALUE); }