コード例 #1
0
ファイル: MaxentPrepAttachTest.cs プロジェクト: qooba/SharpNL
        public void TestMaxentOnPrepAttachData()
        {
            var model = new GISTrainer().TrainModel(100,
                                                    new TwoPassDataIndexer(PrepAttachDataUtility.CreateTrainingStream(), 1), 1);

            PrepAttachDataUtility.TestModel(model, 0.7997028967566229d);
        }
コード例 #2
0
        public void TestPerceptronOnPrepAttachData()
        {
            var model = new PerceptronTrainer().TrainModel(400,
                                                           new TwoPassDataIndexer(PrepAttachDataUtility.CreateTrainingStream(), 1, false), 1);

            PrepAttachDataUtility.TestModel(model, 0.7650408516959644);
        }
コード例 #3
0
        public void TestPerceptronOnPrepAttachDataWithStepSizeDecrease()
        {
            var trainParams = new TrainingParameters();

            trainParams.Set(Parameters.Algorithm, Parameters.Algorithms.Perceptron);
            trainParams.Set(Parameters.Cutoff, "1");
            trainParams.Set(Parameters.Iterations, "500");
            trainParams.Set(Parameters.StepSizeDecrease, "0.06");

            var trainer = TrainerFactory.GetEventTrainer(trainParams, null, null);
            var model   = trainer.Train(PrepAttachDataUtility.CreateTrainingStream());

            /*
             * The java test gives an error too, soo.... for now i'll assume that is correct :P
             *
             * java.lang.AssertionError: expected:<0.7756870512503095> but was:<0.7766773953948998>
             *  at org.junit.Assert.fail(Assert.java:91)
             *  at org.junit.Assert.failNotEquals(Assert.java:645)
             *  at org.junit.Assert.assertEquals(Assert.java:441)
             *  at org.junit.Assert.assertEquals(Assert.java:510)
             */
            //PrepAttachDataUtility.TestModel(model, 0.7756870512503095); < OpenNLP value

            PrepAttachDataUtility.TestModel(model, 0.77742015350334237);
        }
コード例 #4
0
        public void TestQnOnPrepAttachData()
        {
            var model = new QNTrainer().TrainModel(100,
                                                   new TwoPassDataIndexer(PrepAttachDataUtility.CreateTrainingStream(), 1));

            TestModel(model, 0.8155484030700668);
        }
コード例 #5
0
        public void TestNaiveBayesOnPrepAttachData()
        {
            var model = NaiveBayesTests.TrainModel(PrepAttachDataUtility.CreateTrainingStream());

            Assert.NotNull(model);

            PrepAttachDataUtility.TestModel(model, 0.7897994553107205);
        }
コード例 #6
0
ファイル: MaxentPrepAttachTest.cs プロジェクト: qooba/SharpNL
        public void TestMaxentOnPrepAttachData2Threads()
        {
            var trainer = new GISTrainer();
            var di      = new TwoPassDataIndexer(PrepAttachDataUtility.CreateTrainingStream(), 1);

            var model = trainer.TrainModel(100, di, new UniformPrior(), 1, 2);

            PrepAttachDataUtility.TestModel(model, 0.7997028967566229d);
        }
コード例 #7
0
ファイル: MaxentPrepAttachTest.cs プロジェクト: qooba/SharpNL
        public void TestMaxentOnPrepAttachDataWithParamsDefault()
        {
            var reportMap   = new Dictionary <string, string>();
            var trainParams = new TrainingParameters();

            trainParams.Set(Parameters.Algorithm, Parameters.Algorithms.MaxEnt);

            var trainer = TrainerFactory.GetEventTrainer(trainParams, reportMap, null);
            var model   = trainer.Train(PrepAttachDataUtility.CreateTrainingStream());

            PrepAttachDataUtility.TestModel(model, 0.8086159940579352d);
        }
コード例 #8
0
        public void TestQnOnPrepAttachDataWithParamsDefault()
        {
            var trainParams = new TrainingParameters();

            trainParams.Set(Parameters.Algorithm, Parameters.Algorithms.MaxEntQn);

            var trainer = TrainerFactory.GetEventTrainer(trainParams, null, null);

            var model = trainer.Train(PrepAttachDataUtility.CreateTrainingStream());

            TestModel(model, 0.8115870264917059);
        }
コード例 #9
0
        public void TestPerceptronOnPrepAttachDataWithSkippedAveraging()
        {
            var trainParams = new TrainingParameters();

            trainParams.Set(Parameters.Algorithm, Parameters.Algorithms.Perceptron);
            trainParams.Set(Parameters.Cutoff, "1");
            trainParams.Set(Parameters.UseSkippedAveraging, "true");

            var trainer = TrainerFactory.GetEventTrainer(trainParams, null, null);
            var model   = trainer.Train(PrepAttachDataUtility.CreateTrainingStream());

            PrepAttachDataUtility.TestModel(model, 0.773706362961129);
        }
コード例 #10
0
ファイル: MaxentPrepAttachTest.cs プロジェクト: qooba/SharpNL
        public void TestMaxentOnPrepAttachDataWithParams()
        {
            var reportMap   = new Dictionary <string, string>();
            var trainParams = new TrainingParameters();

            trainParams.Set(Parameters.Algorithm, Parameters.Algorithms.MaxEnt);
            trainParams.Set(Parameters.DataIndexer, Parameters.DataIndexers.TwoPass);
            trainParams.Set(Parameters.Cutoff, "1");

            var trainer = TrainerFactory.GetEventTrainer(trainParams, reportMap, null);
            var model   = trainer.Train(PrepAttachDataUtility.CreateTrainingStream());

            PrepAttachDataUtility.TestModel(model, 0.7997028967566229d);
        }
コード例 #11
0
        public void TestPerceptronOnPrepAttachDataWithTolerance()
        {
            var trainParams = new TrainingParameters();

            trainParams.Set(Parameters.Algorithm, Parameters.Algorithms.Perceptron);
            trainParams.Set(Parameters.Cutoff, "1");
            trainParams.Set(Parameters.Iterations, "500");
            trainParams.Set(Parameters.Tolerance, "0.0001");

            var trainer = TrainerFactory.GetEventTrainer(trainParams, null, null);
            var model   = trainer.Train(PrepAttachDataUtility.CreateTrainingStream());

            PrepAttachDataUtility.TestModel(model, 0.7677642980935875);
        }
コード例 #12
0
        public void TestQnOnPrepAttachDataInParallel()
        {
            var trainParams = new TrainingParameters();

            trainParams.Set(Parameters.Algorithm, Parameters.Algorithms.MaxEntQn);
            //trainParams.Set(Parameters.Iterations, "100");
            trainParams.Set(Parameters.Threads, "2");

            var trainer = TrainerFactory.GetEventTrainer(trainParams, null, null);

            var model = trainer.Train(PrepAttachDataUtility.CreateTrainingStream());

            TestModel(model, 0.8115870264917059);
        }
コード例 #13
0
        public void TestQnOnPrepAttachDataWithL2Params()
        {
            var trainParams = new TrainingParameters();

            trainParams.Set(Parameters.Algorithm, Parameters.Algorithms.MaxEntQn);
            trainParams.Set(Parameters.DataIndexer, Parameters.DataIndexers.TwoPass);
            trainParams.Set(Parameters.Cutoff, "1");
            trainParams.Set(Parameters.L1Cost, "0");
            trainParams.Set(Parameters.L2Cost, "1.0");

            var trainer = TrainerFactory.GetEventTrainer(trainParams, null, null);

            var model = trainer.Train(PrepAttachDataUtility.CreateTrainingStream());

            TestModel(model, 0.8227283981183461);
        }
コード例 #14
0
        public void TestNaiveBayesOnPrepAttachDataUsingTrainUtilWithCutoff5()
        {
            var parameters = TrainingParameters.DefaultParameters();

            parameters.Set(Parameters.Algorithm, Parameters.Algorithms.NaiveBayes);
            parameters.Set(Parameters.Cutoff, "5");

            var trainer = TrainerFactory.GetEventTrainer(parameters, null, null);

            Assert.NotNull(trainer);
            Assert.IsInstanceOf <NaiveBayesTrainer>(trainer);

            var model = trainer.Train(PrepAttachDataUtility.CreateTrainingStream());

            Assert.NotNull(model);

            PrepAttachDataUtility.TestModel(model, 0.7945035899975241);
        }
コード例 #15
0
        private static void TestModel(IMaxentModel model, double expectedAccuracy)
        {
            var devEvents = PrepAttachDataUtility.ReadPpaFile(@"devset");

            var total   = 0;
            var correct = 0;

            foreach (var ev in devEvents)
            {
                var targetLabel = ev.Outcome;
                var ocs         = model.Eval(ev.Context);

                var best = 0;
                for (var i = 1; i < ocs.Length; i++)
                {
                    if (ocs[i] > ocs[best])
                    {
                        best = i;
                    }
                }

                var predictedLabel = model.GetOutcome(best);

                if (targetLabel.Equals(predictedLabel))
                {
                    correct++;
                }

                total++;
            }

            var accuracy = correct / (double)total;

            Debug.WriteLine("Accuracy on PPA devset: (" + correct + "/" + total + ") " + accuracy);

            Assert.AreEqual(expectedAccuracy, accuracy, .00001);
        }