public static TokenFrequencyAndScoreDictionary ProjectPrimaryTermsToScores(ProjectionDictionary projection, DocumentSelectResult scores, ILogBuilder logger) { var scoreByAssignedID = scores.GetByAssignedID(logger); TokenFrequencyAndScoreDictionary tokenFrequencyAndScoreDictionary = new TokenFrequencyAndScoreDictionary(); foreach (var pair in projection) { DocumentSelectResultEntry entry = null; //drmContext.items.FirstOrDefault(x => x.AssignedID == pair.Key); if (scoreByAssignedID.ContainsKey(pair.Key)) { entry = scoreByAssignedID[pair.Key]; } if (entry != null) { Double score = entry.score; tokenFrequencyAndScoreDictionary.Add(pair.Value.primary.terms, score); } } return(tokenFrequencyAndScoreDictionary); }
public override ExperimentDataSetFoldContextPair <OperationContext> Execute(ILogBuilder logger, OperationContext executionContextMain = null, ExperimentModelExecutionContext executionContextExtra = null) { ExperimentDataSetFoldContextPair <OperationContext> output = new ExperimentDataSetFoldContextPair <OperationContext>(fold, executionContextMain); Open(); Boolean skip = false; // String fn = setup.OutputFilename; String p_m = WeightDictionary.GetDictionaryFilename(setup.OutputFilename, fold_notes.folder); //FeatureWeightModel.GetModelDefinitionFilename(setup.OutputFilename, fold_notes.folder); //String p_d = FeatureWeightModel.GetModelDataFilename(setup.OutputFilename, fold_notes.folder); if (setup.skipIfExisting) { if (File.Exists(p_m)) { logger.log("WeightTable [" + p_m + "] found, skipping the operation"); skip = true; } } if (!skip) { notes.log("Rendering primary view"); // ------------------- PRIMARY CONTEXT output.context.DeployDataSet(fold, logger); primaryEntityOperation.TextRendering(output.context, notes); //primaryEntityOperation.TextPreblendFilter(output.context, notes); //primaryEntityOperation.TextBlending(output.context, notes); corpusOperation.SpaceModelPopulation(output.context, notes); corpusOperation.SpaceModelCategories(output.context, notes); corpusOperation.FeatureSelection(output.context, notes, requirements.MayUseSelectedFeatures); OperationContext primaryContext = output.context; // ------------------- SECONDARY CONTEXT output.context = new OperationContext(); notes.log("Rendering secondary view"); output.context.DeployDataSet(fold, logger); secondaryEntityOperation.TextRendering(output.context, notes); // secondaryEntityOperation.TextPreblendFilter(output.context, notes); // secondaryEntityOperation.TextBlending(output.context, notes); corpusOperation.SpaceModelPopulation(output.context, notes); corpusOperation.SpaceModelCategories(output.context, notes); corpusOperation.FeatureSelection(output.context, notes, requirements.MayUseSelectedFeatures); OperationContext secondaryContext = output.context; ProjectionDictionary projectionPairs = DocumentRankingTools.ConstructPairDictionary(primaryContext.spaceModel.documents, secondaryContext.spaceModel.documents); DocumentSelectResult drmContext = output.context.PrepareContext(rankingOperation, fold_notes.folder, logger); drmContext = rankingOperation.ExecuteEvaluation(drmContext, logger); drmContext.description = "Document score assigned to the primary text render" + name; drmContext.saveObjectToXML(fold_notes.folder.pathFor("DS_" + name + "_projection_score.xml", imbSCI.Data.enums.getWritableFileMode.overwrite, "Projection within [" + name + "] operation")); TokenFrequencyAndScoreDictionary tokenFrequencyAndScoreDictionary = ProjectionTools.ProjectPrimaryTermsToScores(projectionPairs, drmContext, logger); WeightDictionary wt = tokenFrequencyAndScoreDictionary.ConstructWeightDictionary(); wt.name = setup.OutputFilename; wt.description = "Projected PrimaryView to ScoreTable - WeightTable, constructed from [" + projectionPairs.Count + "] render pairs. Document ranking: " + drmContext.description; wt.Save(fold_notes.folder, logger, setup.OutputFilename); // wt.saveObjectToXML(p_m); } Close(); return(output); }