示例#1
0
        public void SetUp()
        {
            defaultWords = new List <string> {
                "di", "solid", "mocking", "unit", "to"
            };
            defaultHeights = Enumerable.Repeat(30, defaultWords.Count).ToList();

            wordsPreprocessor1 = A.Fake <IWordsPreprocessor>();
            wordsPreprocessor2 = A.Fake <IWordsPreprocessor>();
            wordsFilter1       = A.Fake <IWordsFilter>();
            wordsFilter2       = A.Fake <IWordsFilter>();
            wordsFramer        = A.Fake <IWordsHeighter>();
            layouter           = A.Fake <ICloudLayouter>();
            writer             = A.Fake <IWordsBitmapWriter>();

            A.CallTo(() => wordsPreprocessor1.Process(null)).WithAnyArguments().Returns(defaultWords);
            A.CallTo(() => wordsPreprocessor2.Process(null)).WithAnyArguments().Returns(defaultWords);
            A.CallTo(() => wordsFilter1.GetFiltered(null)).WithAnyArguments().Returns(defaultWords);
            A.CallTo(() => wordsFilter2.GetFiltered(null)).WithAnyArguments().Returns(defaultWords);
            A.CallTo(() => wordsFramer.GetWithHeights(null)).WithAnyArguments().Returns(defaultWords.Zip(defaultHeights, Tuple.Create));
            A.CallTo(() => layouter.PutNextRectangle(Size.Empty)).WithAnyArguments().Returns(Rectangle.Empty);
            A.CallTo(() => writer.Write(null)).WithAnyArguments().Returns(bitmapResult);

            container = new CloudContainer(
                new [] { wordsPreprocessor1, wordsPreprocessor2 },
                new [] { wordsFilter1, wordsFilter2 },
                wordsFramer,
                layouter,
                writer, ImageFormat.Bmp);
        }
示例#2
0
 public TextProcessor(
     IWordsPreprocessor wordsPreprocessor,
     IDictionaryUpdater dictionaryUpdater,
     ITextProvider textProvider)
 {
     this.wordsPreprocessor = wordsPreprocessor;
     this.dictionaryUpdater = dictionaryUpdater;
     this.textProvider      = textProvider;
 }
示例#3
0
 public DataProvider(ICloudSettings cloudSettings, ISourceTextReader textReader, IWordsPreprocessor wordsPreprocessor,
                     IAlgorithm algorithm, ILogger logger)
 {
     this.cloudSettings     = cloudSettings;
     this.textReader        = textReader;
     this.wordsPreprocessor = wordsPreprocessor;
     this.algorithm         = algorithm;
     this.logger            = logger;
 }
示例#4
0
 public SimpleCloudConfigurator(IWordsPreprocessor preprocessor)
 {
     wordsWithFrequency = preprocessor.GetWordsFrequency();
 }
示例#5
0
        private static Dictionary <string, int> ReadWords(IWordsDirectoryProvider wordsDirectoryProvider, IWordsPreprocessor preprocessor)
        {
            var words = File.ReadLines(wordsDirectoryProvider.WordsDirectory);

            return(preprocessor
                   .PreprocessWords(words)
                   .GroupBy(word => word)
                   .ToDictionary(wordGroup => wordGroup.Key, wordGroup => wordGroup.Count()));
        }
示例#6
0
 public WordsProvider(IWordsDirectoryProvider wordsDirectoryProvider, IWordsPreprocessor preprocessor)
 {
     wordToFrequency = ReadWords(wordsDirectoryProvider, preprocessor);
 }
 public BayesianSpamFilter(IProbabilityProvider probabilityProvider, IWordsExtractor wordsExtractor, IWordsPreprocessor wordsPreprocessor)
 {
     this.probabilityProvider = probabilityProvider;
     this.wordsExtractor      = wordsExtractor;
     this.wordsPreprocessor   = wordsPreprocessor;
 }
示例#8
0
        private static Dictionary <string, int> CalculateWordsCount(IEnumerable <FileInfo> msgFiles, IWordsExtractor wordsExtractor, IWordsPreprocessor wordsPreprocessor)
        {
            var wordToCountMessagesWithThisWord = new Dictionary <string, int>();

            foreach (var messageFile in msgFiles)
            {
                var rawWords          = wordsExtractor.ExtractWords(messageFile.OpenRead());
                var preprocessedWords = wordsPreprocessor.PreprocessWords(rawWords);

                foreach (var word in preprocessedWords.Distinct())
                {
                    if (!wordToCountMessagesWithThisWord.ContainsKey(word))
                    {
                        wordToCountMessagesWithThisWord[word] = 0;
                    }
                    wordToCountMessagesWithThisWord[word]++;
                }
            }

            return(wordToCountMessagesWithThisWord);
        }
示例#9
0
        public ProbabilityProvider(ITrainingSample trainingSample, IWordsExtractor wordsExtractor, IWordsPreprocessor wordsPreprocessor)
        {
            spamCountWithWord = CalculateWordsCount(trainingSample.SpamFiles, wordsExtractor, wordsPreprocessor);
            totalSpamCount    = trainingSample.SpamFiles.Count();

            hamCountWithWord = CalculateWordsCount(trainingSample.HamFiles, wordsExtractor, wordsPreprocessor);
            totalHamCount    = trainingSample.HamFiles.Count();
        }