示例#1
0
        public void TrainerShouldNotHaveAnyPokemonLeftToBattle()
        {
            ITrainer trainer = TrainerFactory.CreateTrainer <Player>();

            trainer?.PokemonTeam?.ForEach(pkmn => pkmn?.SetAsFainted());
            Assert.False(trainer?.HasAvailablePokemon());
        }
示例#2
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);
        }
示例#3
0
        public void ShouldSetChosenPokemonAsCurrent()
        {
            ITrainer trainer = TrainerFactory.CreateTrainer <Blue>();

            trainer?.PokemonTeam?.FirstOrDefault()?.SetAsCurrent();
            Assert.True(trainer.PokemonTeam?.FirstOrDefault()?.Current);
        }
示例#4
0
文件: Parser.cs 项目: qooba/SharpNL
        /// <summary>
        /// Trains a parser model with the given parameters.
        /// </summary>
        /// <param name="monitor">
        /// A evaluation monitor that can be used to listen the messages during the training or it can cancel the training operation.
        /// This argument can be a <c>null</c> value.
        /// </param>
        /// <param name="languageCode">The language code.</param>
        /// <param name="samples">The data samples.</param>
        /// <param name="rules">The head rules.</param>
        /// <param name="parameters">The machine learnable parameters.</param>
        /// <returns>The trained <see cref="ParserModel" /> object.</returns>
        public static ParserModel Train(
            Monitor monitor,
            string languageCode,
            IObjectStream <Parse> samples,
            AbstractHeadRules rules,
            TrainingParameters parameters)
        {
            var dict = BuildDictionary(samples, rules, parameters);

            samples.Reset();

            var manifestInfoEntries = new Dictionary <string, string>();

            // build
            //System.err.println("Training builder");
            var bes            = new ParserEventStream(samples, rules, ParserEventTypeEnum.Build, dict);
            var buildReportMap = new Dictionary <string, string>();
            var buildTrainer   = TrainerFactory.GetEventTrainer(parameters.GetNamespace("build"), buildReportMap, monitor);


            var buildModel = buildTrainer.Train(bes);

            MergeReportIntoManifest(manifestInfoEntries, buildReportMap, "build");

            samples.Reset();

            // tag
            var posTaggerParams = parameters.GetNamespace("tagger");

            if (!posTaggerParams.Contains(Parameters.BeamSize))
            {
                posTaggerParams.Set(Parameters.BeamSize, "10");
            }


            var posModel = POSTaggerME.Train(languageCode, new PosSampleStream(samples),
                                             parameters.GetNamespace("tagger"), new POSTaggerFactory());

            samples.Reset();

            // chunk
            var chunkModel = ChunkerME.Train(languageCode,
                                             new ChunkSampleStream(samples),
                                             parameters.GetNamespace("chunker"),
                                             new ParserChunkerFactory());

            samples.Reset();

            // check
            //System.err.println("Training checker");
            var kes            = new ParserEventStream(samples, rules, ParserEventTypeEnum.Check);
            var checkReportMap = new Dictionary <string, string>();
            var checkTrainer   = TrainerFactory.GetEventTrainer(parameters.GetNamespace("check"), checkReportMap, monitor);

            var checkModel = checkTrainer.Train(kes);

            MergeReportIntoManifest(manifestInfoEntries, checkReportMap, "check");

            return(new ParserModel(languageCode, buildModel, checkModel, posModel, chunkModel, rules, manifestInfoEntries));
        }
示例#5
0
        //Restore button
        private void restoreToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Do you really want to restore data from XML? Almost all online data will be lost.", "Restore",
                                MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                LockerFactory                        lockerFactory        = new LockerFactory();
                LockerGateway <Locker>               lg                   = (LockerGateway <Locker>)lockerFactory.GetLocker();
                TrainingFactory                      trainingFactory      = new TrainingFactory();
                TrainingGateway <Training>           tg                   = (TrainingGateway <Training>)trainingFactory.GetTraining();
                PurchaseFactory                      purchaseFactory      = new PurchaseFactory();
                PurchaseGateway <Purchase>           pg                   = (PurchaseGateway <Purchase>)purchaseFactory.GetPurchase();
                TrainerFactory                       trainerFactory       = new TrainerFactory();
                TrainerGateway <Trainer>             trainerg             = (TrainerGateway <Trainer>)trainerFactory.GetTrainer();
                TrainerRatingFactory                 trainerRatingFactory = new TrainerRatingFactory();
                TrainerRatingGateway <TrainerRating> tr                   = (TrainerRatingGateway <TrainerRating>)trainerRatingFactory.GetTrainerRating();
                TicketFactory                        ticketFactory        = new TicketFactory();
                TicketGateway <Ticket>               ticketg              = (TicketGateway <Ticket>)ticketFactory.GetTicket();

                tg.Delete();
                pg.Delete();
                tr.Delete();
                trainerg.Delete();
                lg.Delete();
                ticketg.Delete();


                foreach (var locker in lg.Select())
                {
                    lg.Insert(locker);
                }

                foreach (var ticket in TicketXMLGateway <Ticket> .Instance.Select())
                {
                    TicketXMLGateway <Ticket> .Instance.Insert(ticket);
                }

                foreach (var trainer in TrainerXMLGateway <Trainer> .Instance.Select())
                {
                    TrainerXMLGateway <Trainer> .Instance.Insert(trainer);
                }

                foreach (var purchase in PurchaseXMLGateway <Purchase> .Instance.Select())
                {
                    PurchaseXMLGateway <Purchase> .Instance.Insert(purchase);
                }

                foreach (var training in TrainingXMLGateway <Training> .Instance.Select())
                {
                    TrainingXMLGateway <Training> .Instance.Insert(training);
                }

                foreach (var rating in TrainerRatingXMLGateway <TrainerRating> .Instance.Select())
                {
                    TrainerRatingXMLGateway <TrainerRating> .Instance.Insert(rating);
                }

                MessageBox.Show("Data restored!");
            }
        }
示例#6
0
        /// <summary>
        /// Trains a name finder model with the given parameters.
        /// </summary>
        /// <param name="languageCode">The language of the training data.</param>
        /// <param name="type">Overrides the type parameter in the provided samples. This value can be null.</param>
        /// <param name="samples">The training samples.</param>
        /// <param name="parameters">The machine learning train parameters.</param>
        /// <param name="factory">The name finder factory.</param>
        /// <param name="monitor">
        /// A evaluation monitor that can be used to listen the messages during the training or it can cancel the training operation.
        /// This argument can be a <c>null</c> value.</param>
        /// <returns>the newly <see cref="TokenNameFinderModel"/> trained model.</returns>
        public static TokenNameFinderModel Train(string languageCode, string type, IObjectStream <NameSample> samples, TrainingParameters parameters, TokenNameFinderFactory factory, Monitor monitor)
        {
            var beamSize            = parameters.Get(Parameters.BeamSize, DefaultBeamSize);
            var manifestInfoEntries = new Dictionary <string, string>();
            var trainerType         = TrainerFactory.GetTrainerType(parameters);

            IMaxentModel meModel = null;

            ML.Model.ISequenceClassificationModel <string> scModel = null;

            switch (trainerType)
            {
            case TrainerType.EventModelTrainer:
                var eventStream = new NameFinderEventStream(samples, type, factory.CreateContextGenerator(),
                                                            factory.CreateSequenceCodec());
                var nfTrainer = TrainerFactory.GetEventTrainer(parameters, manifestInfoEntries, monitor);

                meModel = nfTrainer.Train(eventStream);
                break;

            case TrainerType.EventModelSequenceTrainer:
                var sampleStream = new NameSampleSequenceStream(samples, factory.CreateContextGenerator());
                var nsTrainer    = TrainerFactory.GetEventModelSequenceTrainer(parameters, manifestInfoEntries, monitor);

                meModel = nsTrainer.Train(sampleStream);
                break;

            case TrainerType.SequenceTrainer:
                var sequenceStream = new NameSampleSequenceStream(samples, factory.CreateContextGenerator());
                var sqTrainer      = TrainerFactory.GetSequenceModelTrainer(parameters, manifestInfoEntries, monitor);


                scModel = sqTrainer.Train(sequenceStream);
                break;

            default:
                throw new InvalidOperationException("Unexpected trainer type!");
            }

            if (scModel != null)
            {
                return(new TokenNameFinderModel(
                           languageCode,
                           scModel,
                           factory.FeatureGenerator,
                           factory.Resources,
                           manifestInfoEntries,
                           factory.SequenceCodec));
            }

            return(new TokenNameFinderModel(
                       languageCode,
                       meModel,
                       beamSize,
                       factory.FeatureGenerator,
                       factory.Resources,
                       manifestInfoEntries,
                       factory.SequenceCodec));
        }
示例#7
0
        public void PlayerShouldNotHaveDialogues()
        {
            ITrainer player = TrainerFactory.CreateTrainer <Player>();

            Assert.Throws <NotImplementedException>(() => player?.ShowTrainerDialogue());
            Assert.Throws <NotImplementedException>(() => player?.ShowFinalDialogueForLoss());
            Assert.Throws <NotImplementedException>(() => player?.ShowFinalDialogueForVictory());
        }
        public void Setup()
        {
            mlParams = new TrainingParameters();
            mlParams.Set(Parameters.Algorithm, Parameters.Algorithms.MaxEnt);
            mlParams.Set(Parameters.Iterations, "10");
            mlParams.Set(Parameters.Cutoff, "5");

            TrainerFactory.RegisterTrainer("Dummy", typeof(DummyTrainer));
        }
示例#9
0
        /// <summary>
        /// Trains document categorizer model with the given parameters.
        /// </summary>
        /// <param name="languageCode">The language code.</param>
        /// <param name="samples">The data samples.</param>
        /// <param name="parameters">The machine learnable parameters.</param>
        /// <param name="factory">The document categorizer factory.</param>
        /// <param name="monitor">
        /// A evaluation monitor that can be used to listen the messages during the training or it can cancel the training operation.
        /// This argument can be a <c>null</c> value.
        /// </param>
        /// <returns>The trained <see cref="DocumentCategorizerModel"/> model.</returns>
        public static DocumentCategorizerModel Train(string languageCode, IObjectStream <DocumentSample> samples, TrainingParameters parameters, DocumentCategorizerFactory factory, Monitor monitor)
        {
            var manifestInfoEntries = new Dictionary <string, string>();

            var eventStream = new DocumentCategorizerEventStream(samples, factory.FeatureGenerators);
            var trainer     = TrainerFactory.GetEventTrainer(parameters, manifestInfoEntries, monitor);
            var model       = trainer.Train(eventStream);

            return(new DocumentCategorizerModel(languageCode, model, manifestInfoEntries, factory));
        }
示例#10
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);
        }
示例#11
0
        /// <summary>
        /// Trains a model for the <see cref="TokenizerME"/>.
        /// </summary>
        /// <param name="samples">The samples used for the training.</param>
        /// <param name="factory">A <see cref="TokenizerFactory"/> to get resources from.</param>
        /// <param name="parameters">The machine learning train parameters.</param>
        /// <param name="monitor">
        /// A evaluation monitor that can be used to listen the messages during the training or it can cancel the training operation.
        /// This argument can be a <c>null</c> value.
        /// </param>
        /// <returns>The trained <see cref="TokenizerModel"/>.</returns>
        public static TokenizerModel Train(IObjectStream <TokenSample> samples, TokenizerFactory factory, TrainingParameters parameters, Monitor monitor)
        {
            var manifestInfoEntries = new Dictionary <string, string>();

            var eventStream = new TokSpanEventStream(samples, factory.UseAlphaNumericOptimization,
                                                     factory.AlphaNumericPattern, factory.ContextGenerator);

            var trainer = TrainerFactory.GetEventTrainer(parameters, manifestInfoEntries, monitor);
            var model   = trainer.Train(eventStream);

            return(new TokenizerModel(model, manifestInfoEntries, factory));
        }
示例#12
0
        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);
        }
示例#13
0
 static void Main()
 {
     try
     {
         ITrainer player    = TrainerFactory.CreateTrainer <Player>();
         var      mainStory = new MainStory(player);
         mainStory.BeginStory();
     }
     catch (Exception ex)
     {
         Console.WriteLine($"Something bad happened in the game! Please report the error. Error: {ex.Message} \n Error's StackTrace: {ex.StackTrace}");
     }
 }
示例#14
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);
        }
示例#15
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);
        }
示例#16
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);
        }
示例#17
0
        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);
        }
示例#18
0
        /// <summary>
        /// Trains a lemmatizer model with the given parameters.
        /// </summary>
        /// <param name="languageCode">The language code.</param>
        /// <param name="samples">The data samples.</param>
        /// <param name="parameters">The machine learnable parameters.</param>
        /// <param name="factory">The sentence detector factory.</param>
        /// <param name="monitor">
        /// A evaluation monitor that can be used to listen the messages during the training or it can cancel the training
        /// operation.
        /// This argument can be a <c>null</c> value.
        /// </param>
        /// <returns>The trained <see cref="LemmatizerModel" /> object.</returns>
        /// <exception cref="System.InvalidOperationException">The trainer was not specified.</exception>
        /// <exception cref="System.NotSupportedException">Trainer type is not supported.</exception>
        public static LemmatizerModel Train(string languageCode, IObjectStream <LemmaSample> samples, TrainingParameters parameters, LemmatizerFactory factory, Monitor monitor)
        {
            var manifestInfoEntries = new Dictionary <string, string>();
            var beamSize            = parameters.Get(Parameters.BeamSize, DefaultBeamSize);
            var cg = factory.GetContextGenerator();


            var trainerType = TrainerFactory.GetTrainerType(parameters);

            if (!trainerType.HasValue)
            {
                throw new InvalidOperationException("The trainer was not specified.");
            }


            IMaxentModel model = null;

            ML.Model.ISequenceClassificationModel <string> seqModel = null;

            switch (trainerType)
            {
            case TrainerType.EventModelTrainer:
                var s1 = new LemmaSampleEventStream(samples, cg);
                var t1 = TrainerFactory.GetEventTrainer(parameters, manifestInfoEntries, monitor);

                model = t1.Train(s1);
                break;

            case TrainerType.EventModelSequenceTrainer:
                var s2 = new LemmaSampleSequenceStream(samples, cg);
                var t2 = TrainerFactory.GetEventModelSequenceTrainer(parameters, manifestInfoEntries, monitor);

                model = t2.Train(s2);
                break;

            case TrainerType.SequenceTrainer:
                var s3 = new LemmaSampleSequenceStream(samples, cg);
                var t3 = TrainerFactory.GetSequenceModelTrainer(parameters, manifestInfoEntries, monitor);

                seqModel = t3.Train(s3);
                break;

            default:
                throw new NotSupportedException("Trainer type is not supported.");
            }

            return(model != null
                ? new LemmatizerModel(languageCode, model, beamSize, manifestInfoEntries, factory)
                : new LemmatizerModel(languageCode, seqModel, manifestInfoEntries, factory));
        }
示例#19
0
        /// <summary>
        /// Trains sentence detection model with the given parameters.
        /// </summary>
        /// <param name="languageCode">The language code.</param>
        /// <param name="samples">The data samples.</param>
        /// <param name="factory">The sentence detector factory.</param>
        /// <param name="parameters">The machine learnable parameters.</param>
        /// <param name="monitor">
        /// A evaluation monitor that can be used to listen the messages during the training or it can cancel the training operation.
        /// This argument can be a <c>null</c> value.
        /// </param>
        /// <returns>The trained <see cref="SentenceModel"/> object.</returns>
        public static SentenceModel Train(string languageCode, IObjectStream <SentenceSample> samples, SentenceDetectorFactory factory, TrainingParameters parameters, Monitor monitor)
        {
            var manifestInfoEntries = new Dictionary <string, string>();

            // TODO: Fix the EventStream to throw exceptions when training goes wrong
            var eventStream = new SentenceEventStream(
                samples,
                factory.GetContextGenerator(),
                factory.GetEndOfSentenceScanner());

            var trainer = TrainerFactory.GetEventTrainer(parameters, manifestInfoEntries, monitor);
            var model   = trainer.Train(eventStream);

            return(new SentenceModel(languageCode, model, manifestInfoEntries, factory));
        }
示例#20
0
        /// <summary>
        /// Trains a Part of Speech model with the given parameters.
        /// </summary>
        /// <param name="languageCode">The language code.</param>
        /// <param name="samples">The data samples.</param>
        /// <param name="parameters">The machine learnable parameters.</param>
        /// <param name="factory">The sentence detector factory.</param>
        /// <param name="monitor">
        /// A evaluation monitor that can be used to listen the messages during the training or it can cancel the training operation.
        /// This argument can be a <c>null</c> value.
        /// </param>
        /// <returns>The trained <see cref="POSModel"/> object.</returns>
        /// <exception cref="System.NotSupportedException">Trainer type is not supported.</exception>
        public static POSModel Train(string languageCode, IObjectStream <POSSample> samples, TrainingParameters parameters, POSTaggerFactory factory, Monitor monitor)
        {
            //int beamSize = trainParams.Get(Parameters.BeamSize, NameFinderME.DefaultBeamSize);

            var contextGenerator    = factory.GetPOSContextGenerator();
            var manifestInfoEntries = new Dictionary <string, string>();

            var trainerType = TrainerFactory.GetTrainerType(parameters);

            IMaxentModel posModel = null;

            ML.Model.ISequenceClassificationModel <string> seqPosModel = null;
            switch (trainerType)
            {
            case TrainerType.EventModelTrainer:
                var es      = new POSSampleEventStream(samples, contextGenerator);
                var trainer = TrainerFactory.GetEventTrainer(parameters, manifestInfoEntries, monitor);

                posModel = trainer.Train(es);
                break;

            case TrainerType.EventModelSequenceTrainer:
                var ss       = new POSSampleSequenceStream(samples, contextGenerator);
                var trainer2 = TrainerFactory.GetEventModelSequenceTrainer(parameters, manifestInfoEntries, monitor);

                posModel = trainer2.Train(ss);
                break;

            case TrainerType.SequenceTrainer:
                var trainer3 = TrainerFactory.GetSequenceModelTrainer(parameters, manifestInfoEntries, monitor);

                // TODO: This will probably cause issue, since the feature generator uses the outcomes array

                var ss2 = new POSSampleSequenceStream(samples, contextGenerator);
                seqPosModel = trainer3.Train(ss2);
                break;

            default:
                throw new NotSupportedException("Trainer type is not supported.");
            }

            if (posModel != null)
            {
                return(new POSModel(languageCode, posModel, manifestInfoEntries, factory));
            }

            return(new POSModel(languageCode, seqPosModel, manifestInfoEntries, factory));
        }
示例#21
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);
        }
示例#22
0
        /// <summary>
        /// Trains a chunker model with the given parameters.
        /// </summary>
        /// <param name="languageCode">The language code.</param>
        /// <param name="samples">The data samples.</param>
        /// <param name="parameters">The machine learnable parameters.</param>
        /// <param name="factory">The sentence detector factory.</param>
        /// <param name="monitor">
        /// A evaluation monitor that can be used to listen the messages during the training or it can cancel the training operation.
        /// This argument can be a <c>null</c> value.</param>
        /// <returns>The trained <see cref="ChunkerModel"/> object.</returns>
        /// <exception cref="System.InvalidOperationException">The trainer was not specified.</exception>
        /// <exception cref="System.NotSupportedException">Trainer type is not supported.</exception>
        public static ChunkerModel Train(string languageCode, IObjectStream <ChunkSample> samples, TrainingParameters parameters, ChunkerFactory factory, Monitor monitor)
        {
            var trainerType = TrainerFactory.GetTrainerType(parameters);

            if (!trainerType.HasValue)
            {
                throw new InvalidOperationException("The trainer was not specified.");
            }

            var manifestInfoEntries = new Dictionary <string, string>();



            IMaxentModel chunkerModel = null;

            ML.Model.ISequenceClassificationModel <string> seqChunkerModel = null;

            switch (trainerType)
            {
            case TrainerType.SequenceTrainer:
                var st = TrainerFactory.GetSequenceModelTrainer(parameters, manifestInfoEntries, monitor);

                // TODO: This will probably cause issue, since the feature generator uses the outcomes array

                var ss = new ChunkSampleSequenceStream(samples, factory.GetContextGenerator());

                seqChunkerModel = st.Train(ss);
                break;

            case TrainerType.EventModelTrainer:
                var es = new ChunkerEventStream(samples, factory.GetContextGenerator());
                var et = TrainerFactory.GetEventTrainer(parameters, manifestInfoEntries, monitor);

                chunkerModel = et.Train(es);
                break;

            default:
                throw new NotSupportedException("Trainer type is not supported.");
            }

            var beamSize = parameters.Get(Parameters.BeamSize, DefaultBeamSize);

            return(chunkerModel != null
                ? new ChunkerModel(languageCode, chunkerModel, beamSize, manifestInfoEntries, factory)
                : new ChunkerModel(languageCode, seqChunkerModel, manifestInfoEntries, factory));
        }
示例#23
0
        public void firstInitialize()
        {
            ClientFactory            clientFactory  = new ClientFactory();
            ClientGateway <Client>   cg             = (ClientGateway <Client>)clientFactory.GetClient();
            TrainerFactory           trainerFactory = new TrainerFactory();
            TrainerGateway <Trainer> trainerg       = (TrainerGateway <Trainer>)trainerFactory.GetTrainer();
            LockerFactory            lockerFactory  = new LockerFactory();
            LockerGateway <Locker>   lg             = (LockerGateway <Locker>)lockerFactory.GetLocker();

            clients  = cg.SelectForTrainingStartEnd(true);
            trainers = trainerg.Select();
            lockers  = lg.Select();

            Collection <string> clientNames = new Collection <string>();

            foreach (Client c in clients)
            {
                clientNames.Add(c.ToString());
            }
            comboClient.DataSource = clientNames;

            Collection <Locker> filteredLockers = new Collection <Locker>();
            Collection <string> lockerNames     = new Collection <string>();

            foreach (Locker l in lockers)
            {
                if (l.Status != "taken")
                {
                    filteredLockers.Add(l);
                }
            }
            foreach (Locker l in filteredLockers)
            {
                lockerNames.Add(l.ToString());
            }
            comboLocker.DataSource = lockerNames;

            Collection <string> trainerNames = new Collection <string>();

            foreach (Trainer t in trainers)
            {
                trainerNames.Add(t.ToString());
            }
            comboTrainer.DataSource = trainerNames;
        }
示例#24
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);
        }
        protected void RefreshData()
        {
            TrainingFactory            trainingFactory = new TrainingFactory();
            TrainingGateway <Training> tg           = (TrainingGateway <Training>)trainingFactory.GetTraining();
            TicketFactory            ticketFactory  = new TicketFactory();
            TicketGateway <Ticket>   ticketg        = (TicketGateway <Ticket>)ticketFactory.GetTicket();
            ClientFactory            clientFactory  = new ClientFactory();
            ClientGateway <Client>   cg             = (ClientGateway <Client>)clientFactory.GetClient();
            TrainerFactory           trainerFactory = new TrainerFactory();
            TrainerGateway <Trainer> trainerg       = (TrainerGateway <Trainer>)trainerFactory.GetTrainer();

            Collection <Training>  trainings = tg.Select();
            Collection <TrainGrid> trainGrid = new Collection <TrainGrid>();

            foreach (Training t in trainings)
            {
                TrainGrid tgrid = new TrainGrid();
                tgrid.LockerId = t.LockerId;
                tgrid.ToGender = t.ToGender;
                tgrid.Start    = t.TimeFrom;
                tgrid.End      = t.TimeTo;
                // using factory to get data

                Client c = cg.Select(t.ClientId);
                tgrid.ClientName = c.Name + " " + c.Surname;
                int tempId;
                if (t.TrainerId.HasValue)
                {
                    tempId = t.TrainerId.Value;
                    Trainer tr = trainerg.Select(tempId);
                    tgrid.TrainerName = tr.Name + " " + tr.Surname;
                }
                else
                {
                    tgrid.TrainerName = "";
                }
                trainGrid.Add(tgrid);
            }

            BindingList <TrainGrid> bindingList = new BindingList <TrainGrid>(trainGrid);

            trainingsGrid.AutoGenerateColumns = false;
            trainingsGrid.DataSource          = bindingList;
        }
示例#26
0
        public ConnectionistFactory(ILinearAlgebraProvider lap, bool stochastic = true)
        {
            _lap           = lap;
            _stochastic    = stochastic;
            _trainer       = new TrainerFactory(lap);
            _weightUpdater = new UpdaterFactory(lap);

            _activation.Add(ActivationType.Relu, new Relu());
            _activation.Add(ActivationType.LeakyRelu, new LeakyRelu());
            _activation.Add(ActivationType.Sigmoid, new Sigmoid());
            _activation.Add(ActivationType.Tanh, new Tanh());
            //_activation.Add(ActivationType.Softmax, new Softmax());
            _activation.Add(ActivationType.None, null);

            _weightInitialisation.Add(WeightInitialisationType.Gaussian, new Gaussian(stochastic));
            _weightInitialisation.Add(WeightInitialisationType.Xavier, new Xavier(stochastic));
            _weightInitialisation.Add(WeightInitialisationType.Identity, new Identity());
            _weightInitialisation.Add(WeightInitialisationType.Identity1, new Identity(0.1f));
            _weightInitialisation.Add(WeightInitialisationType.Identity01, new Identity(0.01f));
            _weightInitialisation.Add(WeightInitialisationType.Identity001, new Identity(0.001f));
        }
示例#27
0
        /// <summary>
        /// Trains a parser model with the given parameters.
        /// </summary>
        /// <param name="languageCode">The language code.</param>
        /// <param name="samples">The data samples.</param>
        /// <param name="rules">The head rules.</param>
        /// <param name="parameters">The machine learnable parameters.</param>
        /// <param name="monitor">
        /// A evaluation monitor that can be used to listen the messages during the training or it can cancel the training operation.
        /// This argument can be a <c>null</c> value.
        /// </param>
        /// <returns>The trained <see cref="ParserModel"/> object.</returns>
        /// <exception cref="System.NotSupportedException">Trainer type is not supported.</exception>
        public static ParserModel Train(
            string languageCode,
            IObjectStream <Parse> samples,
            AbstractHeadRules rules,
            TrainingParameters parameters,
            Monitor monitor)
        {
            var manifestInfoEntries = new Dictionary <string, string>();

            System.Diagnostics.Debug.Print("Building dictionary");

            var dictionary = BuildDictionary(samples, rules, parameters);

            samples.Reset();

            // tag
            var posModel = POSTaggerME.Train(
                languageCode,
                new PosSampleStream(samples),
                parameters.GetNamespace("tagger"),
                new POSTaggerFactory(), monitor);

            samples.Reset();

            // chunk
            var chunkModel = ChunkerME.Train(
                languageCode,
                new ChunkSampleStream(samples),
                parameters.GetNamespace("chunker"),
                new ChunkerFactory(), monitor);

            samples.Reset();

            // build
            System.Diagnostics.Debug.Print("Training builder");
            var bes            = new ParserEventStream(samples, rules, ParserEventTypeEnum.Build, dictionary);
            var buildReportMap = new Dictionary <string, string>();
            var buildTrainer   = TrainerFactory.GetEventTrainer(parameters.GetNamespace("build"), buildReportMap, monitor);

            var buildModel = buildTrainer.Train(bes);

            Chunking.Parser.MergeReportIntoManifest(manifestInfoEntries, buildReportMap, "build");

            samples.Reset();

            // check
            System.Diagnostics.Debug.Print("Training checker");
            var kes            = new ParserEventStream(samples, rules, ParserEventTypeEnum.Check);
            var checkReportMap = new Dictionary <string, string>();

            var checkTrainer = TrainerFactory.GetEventTrainer(parameters.GetNamespace("check"), checkReportMap, monitor);

            var checkModel = checkTrainer.Train(kes);

            Chunking.Parser.MergeReportIntoManifest(manifestInfoEntries, checkReportMap, "check");

            samples.Reset();

            // attach
            System.Diagnostics.Debug.Print("Training attacher");
            var attachEvents    = new ParserEventStream(samples, rules, ParserEventTypeEnum.Attach);
            var attachReportMap = new Dictionary <string, string>();

            var attachTrainer = TrainerFactory.GetEventTrainer(parameters.GetNamespace("attach"), attachReportMap, monitor);

            var attachModel = attachTrainer.Train(attachEvents);

            Chunking.Parser.MergeReportIntoManifest(manifestInfoEntries, attachReportMap, "attach");

            return(new ParserModel(
                       languageCode,
                       buildModel,
                       checkModel,
                       attachModel,
                       posModel,
                       chunkModel,
                       rules,
                       ParserType.TreeInsert,
                       manifestInfoEntries));
        }
 public void TestCustomTrainer3()
 {
     Assert.Throws <InvalidOperationException> (() => {
         TrainerFactory.RegisterTrainer("Nothing", typeof(object));
     });
 }
        protected void Page_Load(object sender, EventArgs e)
        {
            TrainerFactory           trainerFactory = new TrainerFactory();
            TrainerGateway <Trainer> trainerg       = (TrainerGateway <Trainer>)trainerFactory.GetTrainer();

            if (Session["ID"] == null)
            {
                Response.Redirect("~/Login.aspx");
            }

            trainers = trainerg.Select();
            Collection <string> trainerNames = new Collection <string>();

            foreach (Trainer tr in trainers)
            {
                trainerNames.Add(tr.ToString());
            }

            starNumbers = new Collection <string> {
                "1",
                "2",
                "3",
                "4",
                "5"
            };

            if (!IsPostBack)
            {
                trainerStars.DataSource = starNumbers;
                trainerStars.DataBind();

                trainerDropdownId.DataSource = trainerNames;
                trainerDropdownId.DataBind();
            }

            if (Session["rated"] != null)
            {
                ratedTrainerText.Attributes.Add("class", "blocked");
                ratedTrainer.Style.Add("display", "inline-block");
                thankRating.Style.Add("display", "inline-block");
                theDiv.Style.Add("display", "none");
                averageRating.Style.Add("display", "inline-block");
                averageRatingText.Style.Add("display", "inline-block");
                clientsRatedTop.Style.Add("display", "inline-block");

                ratedTrainer.Text = Session["ratedTrainer"].ToString();
                var temp = trainerg.SelectAVG(int.Parse(Session["ratedTrainerId"].ToString()));
                averageRating.Text        = temp[0].ToString();
                clientsRated.Text         = temp[1].ToString();
                Session["rated"]          = null;
                Session["ratedTrainer"]   = null;
                Session["ratedTrainerId"] = null;
            }
            else
            {
                ratedTrainerText.Style.Add("display", "none");
                ratedTrainer.Style.Add("display", "none");
                thankRating.Style.Add("display", "none");
                averageRating.Style.Add("display", "none");
                averageRatingText.Style.Add("display", "none");
                clientsRatedTop.Style.Add("display", "none");
            }
        }
 public void TestInvalidTrainer()
 {
     mlParams.Set(Parameters.Algorithm, "Nop");
     Assert.False(TrainerFactory.IsValid(mlParams));
 }