public WebClassifierResultSet(DocumentSetClasses _setClassCollection, experimentExecutionContext _context, IFVExtractorSettings _extractorSettings) { setClassCollection = _setClassCollection; featureVectors = new WebSiteClassifierResult(_setClassCollection, _extractorSettings); items.Add(INPUTSET_NAME, featureVectors); List <IWebPostClassifier> classifiers = new List <IWebPostClassifier>(); for (int i = 0; i < _context.setup.classifiers.Count; i++) { classifiers.Add(_context.setup.classifiers[i]); } Thread.Sleep(100); if (classifiers.Count < _context.setup.classifiers.Count) { aceLog.log("::: MULTITHREADING --- CLASSIFIERS COUNT MISTMATCHED --- AUTOCORRECTION APPLIED :::"); for (int i = classifiers.Count - 1; i < _context.setup.classifiers.Count; i++) { classifiers.Add(_context.setup.classifiers[i]); } } foreach (var cs in classifiers) { items.Add(cs.name, new WebSiteClassifierResult(_setClassCollection, _extractorSettings)); } }
public WebSiteClassifierResult(DocumentSetClasses _setClassCollection, IFVExtractorSettings _settings) { setClassCollection = _setClassCollection; foreach (var pair in setClassCollection.GetClasses()) { WebSiteResultForClass resUnit = new WebSiteResultForClass(_settings.featureVectors); resUnit.classID = pair.classID; this.Add(pair.classID, resUnit); } }
public kFoldValidationCase GetDiagnosticCase(DocumentSetClasses classes) { kFoldValidationCase valCase = new kFoldValidationCase(); valCase.name = "Diagnostic"; valCase.id = items.Count; DeployCase(valCase); foreach (IDocumentSetClass c in classes.GetClasses()) { valCase.trainingCases[c.classID].AddRange(c.WebSiteSample); valCase.evaluationCases[c.classID].AddRange(c.WebSiteSample); } return(valCase); }
/// <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; } }