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>(); }
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>()); }