Ejemplo n.º 1
0
        private static void Main(string[] args)
        {
            var serviceProvider = DependencyResolver.GetServices().BuildServiceProvider();

            documentDataBusinessLogic = serviceProvider.GetService <IDocumentDataBusinessLogic>();
            topicPredictorEvaluator   = serviceProvider.GetService <ITopicPredictorEvaluator>();

            var selectedDirectory = HandleDirectorySelection();
            var selectedRunCount  = HandleRunCountSelection();
            var documentDataList  = HandleDocumentDataListProcessing(selectedDirectory);
            var accuracies        = new ConcurrentBag <double>();

            Parallel.For(0, selectedRunCount, new ParallelOptions {
                MaxDegreeOfParallelism = 3
            }, (runNumber) =>
            {
                var featureSelector = serviceProvider.GetService <IFeatureSelector>();
                var topicPredictor  = new KNearestNeighborsTopicPredictor();

                var lists             = SplitListIntoTwoSeparateLists(documentDataList, 70);
                var listForTraining   = lists.Item1;
                var listForValidation = lists.Item2;

                var datasetRepresentationTraining = listForTraining.ToDatasetRepresentation();
                datasetRepresentationTraining     = datasetRepresentationTraining.ReconstructByEliminatingWordsBelowAndAboveThresholds(5, 95);

                var features = featureSelector.GetMostImportantWords(datasetRepresentationTraining);
                datasetRepresentationTraining = datasetRepresentationTraining.ReconstructByKeepingOnlyTheseWords(features);

                topicPredictor.Train(datasetRepresentationTraining);
                var evaluationResults = topicPredictorEvaluator.EvaluateTopicPredictor(topicPredictor, listForValidation);

                double total = listForValidation.Count;
                var successfullyPredicted = 0;

                foreach (var documentData in listForValidation)
                {
                    var predictedTopic = topicPredictor.PredictTopic(documentData);

                    if (documentData.Topics.Contains(predictedTopic))
                    {
                        successfullyPredicted++;
                    }
                }

                var accuracy = successfullyPredicted / total * 100;
                accuracies.Add(accuracy);
                ConsoleWriteLineWithColor($"Accuracy for run {runNumber}: {accuracy}");
            });

            ConsoleWriteLineWithColor("----------------------------------------------------------");
            ConsoleWriteLineWithColor($"Average accuracy = {accuracies.Sum() / accuracies.Count}");
        }
        public DocumentDataExtractionUserControl()
        {
            InitializeComponent();

            var serviceProvider = DependencyResolver.GetServices().BuildServiceProvider();

            documentDataBusinessLogic = serviceProvider.GetService <IDocumentDataBusinessLogic>();
            resultFormatter           = serviceProvider.GetService <IResultFormatter>();

            documentDataDisplayUserControl = new DocumentDataDisplayUserControl();
            panelDocumentDataDisplayUserControl.Controls.Add(documentDataDisplayUserControl);

            UpdateRunButtonEnabledProperty();
            SetStatusLabel("Waiting for input", Color.DodgerBlue);
        }
        public GlobalDocumentDataBuilderUserControl()
        {
            InitializeComponent();

            var serviceProvider = DependencyResolver.GetServices().BuildServiceProvider();

            documentDataBusinessLogic = serviceProvider.GetService <IDocumentDataBusinessLogic>();
            featureSelector           = serviceProvider.GetService <IFeatureSelector>();
            topicPredictor            = serviceProvider.GetService <ITopicPredictor>();

            documentDataDisplayUserControl = new DocumentDataDisplayUserControl();
            panelDocumentDataDisplayUserControl.Controls.Add(documentDataDisplayUserControl);

            UpdateRunButtonEnabledProperty();
            SetStatusLabel("Waiting for input", Color.DodgerBlue);

            filepathsToUseForDocumentData = new List <string>();
        }
Ejemplo n.º 4
0
        public void Setup()
        {
            var serviceProvider = DependencyResolver.GetServices().BuildServiceProvider();

            stopWordsProviderMock     = new Mock <IStopWordProvider>();
            documentDataBusinessLogic = new DocumentDataBusinessLogic(new DocumentDataProvider(stopWordsProviderMock.Object, serviceProvider.GetService <IXmlService>(), serviceProvider.GetService <ITextAnalyzer>()));

            filepath = $"{Environment.CurrentDirectory}\\{Constants.TestFileName}";
            Tests.Common.Setup.CreateFileWithText(filepath, Constants.XmlFileText);
            compareLogic = new CompareLogic
            {
                Config = new ComparisonConfig
                {
                    IgnoreCollectionOrder = true
                }
            };

            stopWordsProviderMock
            .Setup(x => x.GetStopWords())
            .Returns(new List <string>());
        }