using BotSharp.NLP.Classify; using BotSharp.NLP.Corpus; using BotSharp.NLP.Tokenize; using Microsoft.Extensions.Configuration; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; using System.IO; using System.Text; namespace BotSharp.NLP.UnitTest { [TestClass] public class NaiveBayesClassifierTest : TestEssential { [TestMethod] public void GenderTest() { var options = new ClassifyOptions { TrainingCorpusDir = Path.Combine(Configuration.GetValue("MachineLearning:dataDir"), "Gender") }; var classifier = new ClassifierFactory(options, SupportedLanguage.English); var corpus = GetLabeledCorpus(options); var tokenizer = new TokenizerFactory(new TokenizationOptions { Pattern = RegexTokenizer.WORD_PUNC }, SupportedLanguage.English); corpus.ForEach(x => x.Words = tokenizer.Tokenize(x.Text)); classifier.Train(corpus); string text = "Aamir"; classifier.Classify(new Sentence { Text = text, Words = tokenizer.Tokenize(text) }); } private List GetLabeledCorpus(ClassifyOptions options) { var reader = new LabeledPerFileNameReader(); var genders = new List(); var female = reader.Read(new ReaderOptions { DataDir = options.TrainingCorpusDir, FileName = "female.txt" }); genders.AddRange(female); var male = reader.Read(new ReaderOptions { DataDir = options.TrainingCorpusDir, FileName = "male.txt" }); genders.AddRange(male); return genders; } } }