/// <summary> /// Queries term density score for term /// </summary> /// <param name="term">The term.</param> /// <returns></returns> public FeatureCWPAnalysisSiteMetrics QueryForTerm(String term) { FeatureCWPAnalysisSiteMetrics output = new FeatureCWPAnalysisSiteMetrics(term); Int32 C = Children.Count; foreach (SpaceDocumentStatsModel child in Children) { Double n_ck = child.GetChildWithTermCount(term); Double N_ck = child.Children.Count; Double cs_d = n_ck.GetRatio(N_ck); output.Add(child.name, cs_d); } output.Compute(C); return(output); }
//public Dictionary<string, Dictionary<string, Dictionary<string, Space.SpaceDocumentModel>>> nested_dict { get; set; } protected void SetMetrics(FeatureCWPAnalysisSiteMetrics metrics) { if (metrics.score == 0) { return; } if (metrics.commonality_score > settings.Commonality) { if (metrics.mean_score > settings.HighFrequency) { metrics.featureClass = FeatureCWPTermClass.commonHighFrequency; } else if (metrics.mean_score < settings.LowFrequency) { metrics.featureClass = FeatureCWPTermClass.particularForAspect; } else { metrics.featureClass = FeatureCWPTermClass.normal; } } else { } if (metrics.particularity_score > settings.Particularity) { metrics.featureClass = FeatureCWPTermClass.particularForEntry; } else { } }
/// <summary> /// Analysises the specified notes. /// </summary> /// <param name="model">The model.</param> /// <param name="folder">The folder.</param> /// <param name="log">The log.</param> /// <returns></returns> protected FeatureCWPAnalysisEntryReport SubAnalysis(SpaceDocumentStatsModel model, folderNode folder, ILogBuilder log) { FeatureCWPAnalysisEntryReport entryReport = new FeatureCWPAnalysisEntryReport(model.name, "Feature analysis for dataset branch [" + model.name + "]", folder, settings.purpose); foreach (var term in model.terms.GetTokens()) { FeatureCWPAnalysisSiteMetrics metrics = model.QueryForTerm(term); SetMetrics(metrics); entryReport.Append(metrics, false); } return(entryReport); }
/// <summary> /// Analysises the specified folder. /// </summary> /// <param name="folder">The folder.</param> /// <param name="log">The log.</param> public void Analysis(folderNode folder, ILogBuilder log) { if (globalReport == null && settings.RequiredScopes.HasFlag(CWPAnalysisScopeEnum.globalLevel)) { if (log != null) { log.log("Making global report"); } FeatureCWPAnalysisEntryReport entryReport = null; entryReport = new FeatureCWPAnalysisEntryReport("Global", "Feature analysis for complete dataset ", folder?.Add("_global", "Global", "GlobalReport"), settings.purpose); if (log != null) { log.log("Making global dataset report"); } foreach (var term in datasetStatsModel.terms.GetTokens()) { FeatureCWPAnalysisSiteMetrics metrics = datasetStatsModel.QueryForTerm(term); // QueryTermGlobalLevel(term); SetMetrics(metrics); entryReport.Append(metrics, false); } entryReport.Save(log); globalReport = entryReport; } if (!categoryReports.Any() && settings.RequiredScopes.HasFlag(CWPAnalysisScopeEnum.categoryLevel)) { if (folder != null) { foreach (SpaceDocumentStatsModel category in datasetStatsModel.Children) { folder.Add(category.name, category.name, ""); } } if (log != null) { log.log("Making category level dataset reports"); } foreach (var category in datasetStatsModel.Children) { FeatureCWPAnalysisEntryReport rp = null; if (folder != null) { rp = SubAnalysis(category, folder[category.name], log); } else { rp = SubAnalysis(category, null, log); } rp.Save(log, false); categoryReports.Add(rp); } } if (datasetReport == null && settings.RequiredScopes.HasFlag(CWPAnalysisScopeEnum.mainLevel)) { if (log != null) { log.log("Making main level report"); } datasetReport = new FeatureCWPAnalysisDatasetReport("Dataset", "Final report on the dataset", folder?.Add("_main", "main", ""), categoryReports); datasetReport.Save(log); } if (unitaryReport == null && settings.RequiredScopes.HasFlag(CWPAnalysisScopeEnum.unitaryLevel)) { if (log != null) { log.log("Making unitary report"); } unitaryReport = new FeatureCWPAnalysisEntryReport("Fusioned report", "Cross category report with MAX(particularity) and MAX(commonality)", folder?.Add("_unitary", "Unitary", ""), settings.purpose); foreach (var pair in categoryReports) { foreach (System.Collections.Generic.KeyValuePair <string, FeatureCWPAnalysisSiteMetrics> e in pair) { SetMetrics(e.Value); unitaryReport.AddMerge(e.Value, false); } } unitaryReport.PostMerge(); unitaryReport.Save(log, false); } if (frequencies == null && settings.RequiredScopes.HasFlag(CWPAnalysisScopeEnum.rawLevel)) { if (log != null) { log.log("Making raw report"); } frequencies = new FeatureCWPFrequencyDictionary(); frequencies.Deploy(datasetStatsModel); frequencies.PublishTableBlocks(folder.Add("_freq", "Frequencies", "Absolute frequencies by scope")); } if (flatReport == null && settings.RequiredScopes.HasFlag(CWPAnalysisScopeEnum.flatSiteLevel)) { if (log != null) { log.log("Making flat report"); } flatReport = new FeatureCWPAnalysisEntryReport("Flat report", "Report produced as if all sites are in single cateogry", folder?.Add("_flat", "Flat", ""), settings.purpose); flatReport = SubAnalysis(flatDataSetStatsModel, flatReport.folder, log); flatReport.Save(log, false); } }