public IPlaneContext ExecutePlaneMethod(IPlaneContext inputContext, ExperimentModelExecutionContext generalContext, ILogBuilder logger) { //if (generalContext == null) //{ // generalContext = new PlanesMethodContext(); //} IEntityPlaneContext entityInputContext = inputContext as IEntityPlaneContext; ICorpusPlaneContext entityContext = EntityMethod.ExecutePlaneMethod(inputContext, generalContext, logger) as ICorpusPlaneContext; IVectorPlaneContext corpusContext = CorpusMethod.ExecutePlaneMethod(entityContext, generalContext, logger) as IVectorPlaneContext; IFeaturePlaneContext vectorContext = VectorMethod.ExecutePlaneMethod(corpusContext, generalContext, logger) as IFeaturePlaneContext; IFeaturePlaneContext featureContext = FeatureMethod.ExecutePlaneMethod(vectorContext, generalContext, logger) as IFeaturePlaneContext; // --- the results reporting var evaluationMetrics = generalContext.truthTable.EvaluateTestResultsToMetricSet(featureContext.testResults, generalContext.runName + "-" + notes.folder.name, logger); DataTableTypeExtended <classificationEval> inclassEvalTable = new DataTableTypeExtended <classificationEval>("inclass_evaluation", "Test results, per class"); evaluationMetrics.GetAllEntries().ForEach(x => inclassEvalTable.AddRow(x)); inclassEvalTable.AddRow(evaluationMetrics.GetSummary("Sum")); notes.SaveDataTable(inclassEvalTable, notes.folder_classification); classificationReport averagedReport = new classificationReport(evaluationMetrics, generalContext.averagingMethod); averagedReport.Classifier = FeatureMethod.classifier.name; averagedReport.saveObjectToXML(notes.folder_classification.pathFor(averagedReport.Name + ".xml", imbSCI.Data.enums.getWritableFileMode.overwrite, "Serialized classification evaluation results summary")); generalContext.testSummaries.Add(averagedReport); averagedReport.ReportToLog(notes); featureContext.provider.Dispose(); EntityMethod.CacheProvider.Dispose(); return(generalContext); }
/// <summary> /// Generates feature vectors /// </summary> /// <param name="inputContext">The input context - related to this plane.</param> /// <param name="generalContext">General execution context, attached to the <see cref="T:imbNLP.Toolkit.Planes.PlanesMethodDesign" /></param> /// <param name="logger">The logger.</param> /// <returns> /// Retur /// </returns> public IPlaneContext ExecutePlaneMethod(IPlaneContext inputContext, ExperimentModelExecutionContext generalContext, ILogBuilder logger) { notes.logStartPhase("[3] Vector Plane - execution", ""); IVectorPlaneContext context = (IVectorPlaneContext)inputContext; FeaturePlaneContext finalContext = new FeaturePlaneContext(); finalContext.provider.StoreAndReceive(context); ICorpusPlaneContext corpusContext = finalContext.provider.GetContext <CorpusPlaneContext>(); // deploying feature vector space constructor featureSpaceConstructor.Deploy(constructorSettings, context.vectorSpace); featureSpaceConstructor.Deploy(constructorSettings, corpusContext.SelectedFeatures); Dictionary <string, FeatureVector> docByName = new Dictionary <string, FeatureVector>(); notes.log(":: Constructing feature vectors"); // constructing the feature vectors foreach (IVector vector in context.vectorSpace.documents) { var fv = featureSpaceConstructor.ConstructFeatureVector(vector); docByName.Add(fv.name, fv); finalContext.featureSpace.documents.Add(fv); } foreach (var link in context.LabelToDocumentLinks.links) { finalContext.featureSpace.labelToDocumentAssociations.Add(docByName[link.NodeB.name], link.NodeA, 1); } if (generalContext.reportOptions.HasFlag(PlanesReportOptions.report_featureVectors)) { var dt = finalContext.featureSpace.MakeTable(featureSpaceConstructor, "FeatureSpace", "Feature space"); notes.SaveDataTable(dt, notes.folder_feature); } notes.logEndPhase(); return(finalContext); }