Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        //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
            {
            }
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
            }
        }