Ejemplo n.º 1
0
        /// <summary>
        /// Checks the defaults.
        /// </summary>
        public void checkDefaults()
        {
            experimentSetup setup = experimentSetup.GetDefaultExperimentSetup();



            if (folderForClassifierSets.findFile(NAMEFORDEFAULT).isNullOrEmpty())
            {
                setup      = experimentSetup.GetDefaultExperimentSetup();
                setup.name = "default";
                setup.featureVectorExtractors_semantic.Clear();

                objectSerialization.saveObjectToXML(setup, folderForClassifierSets.pathFor(NAMEFORDEFAULT, imbSCI.Data.enums.getWritableFileMode.overwrite, "Default set of classifiers"));
            }

            if (folderForFeatureVectorExtractors.findFile(NAMEFORDEFAULT).isNullOrEmpty())
            {
                setup      = experimentSetup.GetDefaultExperimentSetup();
                setup.name = "default";
                setup.classifiers_settings.Clear();
                objectSerialization.saveObjectToXML(setup.featureVectorExtractors_semantic.First(), folderForFeatureVectorExtractors.pathFor(NAMEFORDEFAULT, imbSCI.Data.enums.getWritableFileMode.overwrite, "Default FVE"));
            }

            setup = experimentSetup.GetDefaultExperimentSetup();

            setup.classifiers.Clear();
            setup.classifiers_settings.Clear();
            setup.featureVectorExtractors_semantic.Clear();


            if (folderForExperimentShells.findFile(NAMEFORDEFAULT).isNullOrEmpty())
            {
                objectSerialization.saveObjectToXML(setup, folderForExperimentShells.pathFor(NAMEFORDEFAULT, imbSCI.Data.enums.getWritableFileMode.overwrite, "Default setup schell"));
            }
        }
Ejemplo n.º 2
0
        public semanticFVExtractor CreateExperiment(experimentSetup model, ILogBuilder output)
        {
            if (model == null)
            {
                model = blueprint;
            }

            semanticFVExtractor fve = model.models.First() as semanticFVExtractor;

            String serializedModel = objectSerialization.ObjectToXML(model);

            foreach (experimentTemplateVariable variable in replacements)
            {
                String newModelXML = serializedModel;
                serializedModel = serializedModel.Replace(variable.needle, variable.replace);

                semanticFVExtractor newModel = objectSerialization.ObjectFromXML <semanticFVExtractor>(newModelXML);
                newModel.name        = newModel.GetShortName(name);
                newModel.description = newModel.GetShortDescription();
                output.log("-- created model: " + newModel.name);
                //experiment.featureVectorExtractors_semantic.Add(newModel);
            }



            //for (INt32 i = start; i < end; i++)
            //{
            //    String newModelXML = serializedModel;
            //    newModelXML = newModelXML.Replace(needle, "<caseTermExpansionSteps>" + i + "</caseTermExpansionSteps>");


            //}

            return(fve);
        }
Ejemplo n.º 3
0
        public static experimentSetup GetDefaultExperimentSetup()
        {
            experimentSetup setup = new experimentSetup();


            setup.classifiers_settings.Add(new WebPostClassifierSettings(WebPostClassifierType.kNearestNeighbors, "kNN"));
            setup.classifiers_settings.Add(new WebPostClassifierSettings(WebPostClassifierType.multiClassSVM, "mSVM"));
            setup.classifiers_settings.Add(new WebPostClassifierSettings(WebPostClassifierType.naiveBayes, "nBayes"));
            setup.classifiers_settings.Add(new WebPostClassifierSettings(WebPostClassifierType.backPropagationActivationNeuralNetwork, "bpANN"));

            //= new List<pos_type> { pos_type.A, pos_type.N };
            var tfe = new semanticFVExtractor();

            tfe.termTableConstructor.settings.allowedLemmaTypes.AddUnique(pos_type.A);
            tfe.termTableConstructor.settings.allowedLemmaTypes.AddUnique(pos_type.N);


            var sfe = new semanticFVExtractor();

            sfe.termTableConstructor.settings.allowedLemmaTypes.AddUnique(pos_type.A);
            sfe.termTableConstructor.settings.allowedLemmaTypes.AddUnique(pos_type.N);

            setup.featureVectorExtractors_semantic.Add(tfe);
            setup.featureVectorExtractors_semantic.Add(sfe);

            setup.validationSetup.name = setup.name;
            setup.validationSetup.k    = 5;

            setup.setClassifiers();

            return(setup);
        }
Ejemplo n.º 4
0
 protected void DeployBlueprint(experimentSetup _blueprint)
 {
     blueprint = _blueprint;
     if (blueprint.featureVectorExtractors_semantic.Any())
     {
         blueprint.featureVectorExtractors_semantic.RemoveRange(1, blueprint.featureVectorExtractors_semantic.Count - 1);
     }
 }
        public experimentTemplate MakeTemplate([Description("Name of the experiment to process")] experimentSetup experiment,
                                               [Description("Starting value for Stx")] Int32 start = 3,
                                               [Description("Ending value for Sts")] Int32 end     = 8,
                                               [Description("3 or 4 letter code indicating how the settings are different then in other experiments")] String name = "",
                                               [Description("Comment line for experiment header")] String comment = "",
                                               experimentTemplateOption option = experimentTemplateOption.STX)
        {
            experimentTemplate output = new experimentTemplate();

            output.DeriveBlueprint(experiment, name);
            output.comment = comment;

            semanticFVExtractor model = experiment.models.First() as semanticFVExtractor;

            experiment.RemoveAllModelsExcept();

            String currentValue   = "";
            String xmlElementName = "";

            switch (option)
            {
            case experimentTemplateOption.LPF:
                currentValue   = model.settings.semanticCloudFilter.lowPassFilter.ToString();
                xmlElementName = "lowPassFilter";
                break;

            case experimentTemplateOption.none:
                break;

            case experimentTemplateOption.REPEAT:
                break;

            case experimentTemplateOption.STX:
                currentValue   = model.settings.caseTermExpansionSteps.ToString();
                xmlElementName = "caseTermExpansionSteps";
                break;

            case experimentTemplateOption.TC:
                break;
            }

            for (int i = start; i < end; i++)
            {
                var exp = new experimentTemplateVariable();
                exp.needle  = "<" + xmlElementName + ">" + currentValue + "</" + xmlElementName + ">";
                exp.replace = "<" + xmlElementName + ">" + i + "</" + xmlElementName + ">";
                exp.i       = i;
                output.replacements.Add(exp);
            }



            return(output);
        }
Ejemplo n.º 6
0
 public void DeriveBlueprint(experimentSetup _blueprint, String _name)
 {
     DeployBlueprint(_blueprint);
     DerivedFromName = blueprint.name;
     DerivedFromType = derivedFromType.fromAnExperiment;
     name            = blueprint.name.getCleanFilepath();
     UpdateDescription();
     if (_name.isNullOrEmpty())
     {
         _name = blueprint.name.getCleanFilepath() + "_child";
     }
     name = _name;
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Sets the execution context.
        /// </summary>
        /// <param name="_manager">The manager.</param>
        /// <param name="_setup">The setup.</param>
        /// <param name="_tools">The tools.</param>
        /// <param name="_classes">The classes.</param>
        /// <param name="sufix">The sufix.</param>
        /// <param name="chunker">The chunker.</param>
        /// <param name="_masterExtractor">The master extractor.</param>
        /// <param name="_logger">The logger.</param>
        public void SetExecutionContext(experimentManager _manager, experimentSetup _setup, classifierTools _tools, DocumentSetClasses _classes, String sufix, chunkComposerBasic chunker, semanticFVExtractor _masterExtractor, ILogBuilder _logger = null)
        {
            if (_logger == null)
            {
                _logger = new builderForLog();
                aceLog.consoleControl.setAsOutput(_logger, _setup.name);
            }
            logger        = _logger;
            chunkComposer = chunker;
            setup         = _setup;
            tools         = _tools;
            tools.context = this;
            classes       = _classes;
            // masterConstructor = _masterExtractor.termTableConstructor;



            masterExtractor   = _setup.featureVectorExtractors_semantic.First();
            masterConstructor = masterExtractor.termTableConstructor;
            manager           = _manager;
            String expContextName = "exp_" + setup.name.add(sufix, "_");

            folder           = manager.folder.Add(expContextName, "Experiment " + setup.name, "Directory with all information on the experiment [" + setup.name + "]");
            errorNotesFolder = folder.Add("errors", "Error logs", "Directory with error reports produced if an exception occours. Normally, if everything was ok this folder should have only two files inside: directory_readme.txt and empty: note.txt).");
            errorNotes       = new experimentNotes(errorNotesFolder, "Notes (logs) about critical and non-critical errors that happen during experiment execution. If everything was ok - this file should remain empty");

            notes = new experimentNotes(folder, "Notes on experiment setup and execution log");
            aceLog.consoleControl.setAsOutput(notes, "Notes");

            notes.log("Experiment [" + expContextName + "] initiated");
            notes.AppendLine("About: " + setup.description);

            notes.AppendHorizontalLine();



            notes.SaveNote();
            notes.AppendHeading("Feature extraction models");

            var lnsc = chunkComposer.DescribeSelf();

            lnsc.ForEach(x => notes.AppendLine(x));
            notes.AppendLine(" - ");


            List <String> mdn = new List <string>();

            foreach (var md in setup.models)
            {
                if (mdn.Contains(md.name))
                {
                    md.name += "_" + mdn.Count.ToString();
                }
                else
                {
                    mdn.Add(md.name);
                }
            }

            foreach (var md in setup.models)
            {
                String prefix = md.name;
                md.classes = classes;
                md.BuildFeatureVectorDefinition();

                var lns = md.DescribeSelf();
                lns.ForEach(x => notes.AppendLine(x));



                kFoldValidationCollection validationCases = classes.BuildValidationCases(prefix, setup.validationSetup.k, tools.DoDebug, logger, folder, setup.validationSetup.randomize);
                validationCases.pipelineCollection = pipelineCollection;

                validationCases.connectContext(this, md);

                validationCollections.Add(md.name, validationCases);


                //md.postClassifiers = setup.classifiers;
            }
        }