/// <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")); } }
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); }
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); }
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); }
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; }
/// <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; } }