Example #1
0
        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));
            }
        }
Example #2
0
        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);
        }
Example #4
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;
            }
        }