new CRFTrainerByLabelLikelihood(crf); trainer.setGaussianPriorVariance(10.0); trainer.addEvaluator(new PerClassAccuracyEvaluator(testingInstances, "testing")); trainer.addEvaluator(new TokenAccuracyEvaluator(testingInstances, "testing")); trainer.train(trainingInstances);
private static CRFTrainerByLabelLikelihood makeNewTrainerSingleThreaded(CRF crf) { CRFTrainerByLabelLikelihood trainer = new CRFTrainerByLabelLikelihood(crf); trainer.setGaussianPriorVariance(2); // trainer.setUseHyperbolicPrior(true); trainer.setAddNoFactors(true); trainer.setUseSomeUnsupportedTrick(false); return trainer; }
double getLikelihood(CRF crf, InstanceList data) { CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); Optimizable.ByGradientValue mcrf = crft.getOptimizableCRF(data); // Do this elaborate thing so that crf.cachedValueStale is forced true double[] params = new double[mcrf.getNumParameters()]; mcrf.getParameters(params); mcrf.setParameters(params); return mcrf.getValue(); }
assert (trainingSet.size() > 0); getOptimizableCRF(trainingSet); // This will set this.mcrf if necessary getOptimizer(trainingSet); // This will set this.opt if necessary iterationCount++; logger.info ("CRF finished one iteration of maximizer, i="+i); runEvaluators(); } catch (IllegalArgumentException e) { e.printStackTrace();
CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood (crf); crft.setUseHyperbolicPrior (true); crft.setHyperbolicPriorSlope (hyperbolicSlopeOption.value); crft.setHyperbolicPriorSharpness (hyperbolicSharpnessOption.value); } else { crft.setGaussianPriorVariance (gaussianVarianceOption.value); crft.trainWithFeatureInduction (trainingData, null, testingData, eval, 99999, 10, 99, 200, 0.5, true, new double[] {.1, .2, .5, .7}); else crft.trainWithFeatureInduction (trainingData, null, testingData, eval, 99999, 10, 99, 1000, 0.5, false, double[] trainingProportions = new double[] {.1, .2, .5, .7}; for (int i = 0; i < trainingProportions.length; i++) { crft.train(trainingData, 3, new double[] {trainingProportions[i]}); eval.evaluate(crft); vw.evaluate(crft); while (crft.train(trainingData, 3)) { eval.evaluate(crft); vw.evaluate(crft);
CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood (crf); crft.setGaussianPriorVariance(var); crft.setUseSparseWeights(false); crft.setUseSomeUnsupportedTrick(false); crft.setUseSparseWeights(true); crft.setUseSomeUnsupportedTrick(true); crft.setUseSparseWeights(true); crft.setUseSomeUnsupportedTrick(false); crft.trainWithFeatureInduction(training, null, testing, eval, iterations, 10, 20, 500, 0.5, false, null); } else { boolean converged; for (int i = 1; i <= iterations; i++) { converged = crft.train (training, 1); if (i % 1 == 0 && eval != null) { // Change the 1 to higher integer to evaluate less often eval.evaluate(crft);
CRF crf = new CRF(p.getDataAlphabet(), p.getTargetAlphabet()); crf.addFullyConnectedStatesForLabels(); CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); crft.setUseSparseWeights(useSparseWeights); if (testValueAndGradient) { Optimizable.ByGradientValue minable = crft .getOptimizableCRF(lists[0]); TestOptimizable.testValueAndGradient(minable); } else { savedCRF = crf; System.out.println("Training serialized crf."); crft.trainIncremental(lists[0]); double preTrainAcc = crf.averageTokenAccuracy(lists[0]); double preTestAcc = crf.averageTokenAccuracy(lists[1]); + crft.getUseHyperbolicPriorSlope() + ". hyperbolicPriorSharpness: " + crft.getUseHyperbolicPriorSharpness() + ". gaussianPriorVariance: " + crft.getGaussianPriorVariance());
CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood (crf); crft.setGaussianPriorVariance (100.0); crft.train (ilists[0], 5, new double[] {.1, .2, .5, .7}); while (!crft.trainIncremental(ilists[0])) { eval.evaluate(crft); if (crft.getIteration() % 5 == 0) new ViterbiWriter (args[2], ilists[0], "train", ilists[1], "test");
CRFTrainerByLabelLikelihood trainer = new CRFTrainerByLabelLikelihood(crf); trainer.setAddNoFactors(true); trainer.setGaussianPriorVariance(gpv); trainer.train(trainingSet,supIterations);
public void testSpaceViewer () throws FileNotFoundException { Pipe pipe = TestMEMM.makeSpacePredictionPipe (); String[] data0 = { TestCRF.data[0] }; String[] data1 = { TestCRF.data[1] }; InstanceList training = new InstanceList (pipe); training.addThruPipe (new ArrayIterator (data0)); InstanceList testing = new InstanceList (pipe); testing.addThruPipe (new ArrayIterator (data1)); CRF crf = new CRF (pipe, null); crf.addFullyConnectedStatesForLabels (); CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood (crf); crft.trainIncremental (training); CRFExtractor extor = hackCrfExtor (crf); Extraction extration = extor.extract (new ArrayIterator (data1)); PrintStream out = new PrintStream (new FileOutputStream (htmlFile)); LatticeViewer.extraction2html (extration, extor, out); out.close(); out = new PrintStream (new FileOutputStream (latticeFile)); LatticeViewer.extraction2html (extration, extor, out, true); out.close(); }
/** * do the training * * @param instList * @param myPipe */ void train(final InstanceList instList, final Pipe myPipe) { final long s1 = System.currentTimeMillis(); // set up model model = new CRF(myPipe, null); model.addStatesForLabelsConnectedAsIn(instList); // get trainer final CRFTrainerByLabelLikelihood crfTrainer = new CRFTrainerByLabelLikelihood( model); // do the training with unlimited amount of iterations // --> refrained from using modified version of mallet; // it's now the original source final boolean b = crfTrainer.train(instList); LOGGER.info("Tokenizer training: model converged: " + b); final long s2 = System.currentTimeMillis(); // stop growth and set trained model.getInputPipe().getDataAlphabet().stopGrowth(); trained = true; LOGGER.debug("train() - training time: " + ((s2 - s1) / 1000) + " sec"); }
public void testDenseFeatureSelection() { Pipe p = makeSpacePredictionPipe(); InstanceList instances = new InstanceList(p); instances.addThruPipe(new ArrayIterator(data)); // Test that dense observations wights aren't added for // "default-feature" edges. CRF crf1 = new CRF(p, null); crf1.addOrderNStates(instances, new int[] { 0 }, null, "start", null, null, true); CRFTrainerByLabelLikelihood crft1 = new CRFTrainerByLabelLikelihood( crf1); crft1.setUseSparseWeights(false); crft1.train(instances, 1); // Set weights dimension int nParams1 = crft1.getOptimizableCRF(instances).getNumParameters(); CRF crf2 = new CRF(p, null); crf2.addOrderNStates(instances, new int[] { 0, 1 }, new boolean[] { false, true }, "start", null, null, true); CRFTrainerByLabelLikelihood crft2 = new CRFTrainerByLabelLikelihood( crf2); crft2.setUseSparseWeights(false); crft2.train(instances, 1); // Set weights dimension int nParams2 = crft2.getOptimizableCRF(instances).getNumParameters(); assertEquals(nParams2, nParams1 + 4); }
CRFTrainerByLabelLikelihood crft1 = new CRFTrainerByLabelLikelihood( crf1); crft1.trainIncremental(instances); CRFTrainerByLabelLikelihood crft2 = new CRFTrainerByLabelLikelihood( crf2); crft2.trainIncremental(instances); .getOptimizableCRF(instances); Optimizable.ByGradientValue optable2 = crft2 .getOptimizableCRF(instances); double val1 = optable1.getValue(); double val2 = optable2.getValue();
final CRFTrainerByLabelLikelihood crfTrainer = new CRFTrainerByLabelLikelihood((CRF) model); b = crfTrainer.trainOptimized(data); LOGGER.info("JNET training: model converged: " + b); } else { crfTrainer.train(data, number_iterations); LOGGER.info("JNET training: with iterations = " + number_iterations);
public void testTokenAccuracy() { Pipe p = makeSpacePredictionPipe(); InstanceList instances = new InstanceList(p); instances.addThruPipe(new ArrayIterator(data)); InstanceList[] lists = instances.split(new Random(777), new double[] { .5, .5 }); CRF crf = new CRF(p.getDataAlphabet(), p.getTargetAlphabet()); crf.addFullyConnectedStatesForLabels(); CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); crft.setUseSparseWeights(true); crft.trainIncremental(lists[0]); TokenAccuracyEvaluator eval = new TokenAccuracyEvaluator(lists, new String[] { "Train", "Test" }); eval.evaluateInstanceList(crft, lists[1], "Test"); assertEquals(0.9409, eval.getAccuracy("Test"), 0.001); }
public boolean trainIncremental (InstanceList training) { return train (training, Integer.MAX_VALUE); }
double[] trainingProportions) return trainWithFeatureInduction (trainingData, validationData, testingData, eval, numIterations, numIterationsBetweenFeatureInductions, numFeatureInductions, numFeaturesPerFeatureInduction, if (featureInductionIteration != 0) converged = this.train (theTrainingData, numIterationsBetweenFeatureInductions); trainingIteration += numIterationsBetweenFeatureInductions; return this.train (trainingData, numIterations - trainingIteration);
public Optimizer getOptimizer (InstanceList trainingSet) { getOptimizableCRF(trainingSet); // this will set this.mcrf if necessary if (opt == null || ocrf != opt.getOptimizable()) opt = new LimitedMemoryBFGS(ocrf); // Alternative: opt = new ConjugateGradient (0.001); return opt; }
CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood (crf); crft.setUseHyperbolicPrior (true); crft.setHyperbolicPriorSlope (hyperbolicSlopeOption.value); crft.setHyperbolicPriorSharpness (hyperbolicSharpnessOption.value); } else { crft.setGaussianPriorVariance (gaussianVarianceOption.value); crft.trainWithFeatureInduction (trainingData, null, testingData, eval, 99999, 10, 99, 200, 0.5, true, new double[] {.1, .2, .5, .7}); else crft.trainWithFeatureInduction (trainingData, null, testingData, eval, 99999, 10, 99, 1000, 0.5, false, double[] trainingProportions = new double[] {.1, .2, .5, .7}; for (int i = 0; i < trainingProportions.length; i++) { crft.train(trainingData, 3, new double[] {trainingProportions[i]}); eval.evaluate(crft); vw.evaluate(crft); while (crft.train(trainingData, 3)) { eval.evaluate(crft); vw.evaluate(crft);
CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood (crf); crft.setGaussianPriorVariance(var); crft.setUseSparseWeights(false); crft.setUseSomeUnsupportedTrick(false); crft.setUseSparseWeights(true); crft.setUseSomeUnsupportedTrick(true); crft.setUseSparseWeights(true); crft.setUseSomeUnsupportedTrick(false); crft.trainWithFeatureInduction(training, null, testing, eval, iterations, 10, 20, 500, 0.5, false, null); } else { boolean converged; for (int i = 1; i <= iterations; i++) { converged = crft.train (training, 1); if (i % 1 == 0 && eval != null) { // Change the 1 to higher integer to evaluate less often eval.evaluate(crft);