public async Task Classify() { var problemFactory = new ProblemFactory(threeClassDataset); SvmTraining training = new SvmTraining(problemFactory, threeClassDataset); var parameters = training.SelectParameters(TrainingHeader.CreateDefault(), CancellationToken.None); var results = await training.Train(parameters).ConfigureAwait(false); results.Model.Write(Path.Combine(TestContext.CurrentContext.TestDirectory, "classify.dat")); var testSet = ArffDataSet.Create <PositivityType>("Test"); testSet.UseTotal = true; var positive = testSet.AddDocument(); positive.AddRecord("Good"); var negative = testSet.AddDocument(); negative.AddRecord("Bad"); SvmTesting testing = new SvmTesting(results.Model, problemFactory); testing.Classify(testSet); Assert.AreEqual(PositivityType.Positive, positive.Class.Value); Assert.AreEqual(PositivityType.Negative, negative.Class.Value); }
public void Setup() { mockArffDataSet = ArffDataSet.Create <PositivityType>("Test"); instance = CreateProcessArff(); document = new Document("Test"); document.Sentences.Add(new SentenceItem("Test")); document.Sentences[0].Words.Add( WordExFactory.Construct( new TestWordItem("Good") { Stemmed = "Good", IsSentiment = true })); document.Sentences[0].Words.Add( WordExFactory.Construct( new TestWordItem("Two") { Stemmed = "Two" })); document.Sentences[0].Words.Add( WordExFactory.Construct( new TestWordItem("#Three") { Stemmed = "#Three" })); var factory = ActualWordsHandler.InstanceSimple.Container.Resolve <Func <Document, IParsedReviewManager> >()(document); review = factory.Create(); }
public void Setup() { threeClassDataset = ArffDataSet.Create <PositivityType>("Test"); threeClassDataset.UseTotal = true; twoClassDataset = ArffDataSet.CreateSimple("Test"); twoClassDataset.UseTotal = true; twoClassDataset.Header.RegisterNominalClass("Positive", "Negative"); for (int i = 0; i < 20; i++) { var positive = threeClassDataset.AddDocument(); positive.Class.Value = PositivityType.Positive; positive.AddRecord("Good"); positive = twoClassDataset.AddDocument(); positive.Class.Value = "Positive"; positive.AddRecord("Good"); var negative = threeClassDataset.AddDocument(); negative.Class.Value = PositivityType.Negative; negative.AddRecord("Bad"); negative = twoClassDataset.AddDocument(); negative.Class.Value = "Negative"; negative.AddRecord("Bad"); } }
public void Save(string path) { if (string.IsNullOrWhiteSpace(path)) { throw new ArgumentException("Value cannot be null or whitespace.", nameof(path)); } log.LogInformation("Saving {0}...", path); var fileName = $"{Word.Text.CreatePureLetterText()}.arff"; path = Path.Combine(path, fileName); IArffDataSet arff = ArffDataSet.Create <PositivityType>(Word.Text); arff.UseTotal = true; foreach (WordsContext vector in Vectors) { IArffDataRow review = arff.AddDocument(); review.Class.Value = vector.SentimentValue > 0 ? PositivityType.Positive : PositivityType.Negative; foreach (WordEx wordItem in vector.Words) { if (!wordItem.IsAspect && wordItem.Value == 0) { continue; } DataRecord addedWord = review.AddRecord(wordItem.Text); addedWord.Value = addedWord.Total; } } arff.Save(path); log.LogInformation("Saving {0} Completed.", path); }