public async Task NgramSentiment() { ActualWordsHandler.InstanceOpen.Container.Context.DisableFeatureSentiment = true; var words = Path.Combine(TestContext.CurrentContext.TestDirectory, @"Adjustment/words.csv"); ISentimentDataHolder lexicon = SentimentDataHolder.Load(words); var loader = SentimentDataHolder.Load(new[] { "veto it really" }.Select(item => new WordSentimentValueData( item, new SentimentValueData(2)))); lexicon.Merge(loader); var text = "I Veto it really"; var result = await ActualWordsHandler.InstanceOpen.TextSplitter.Process(new ParseRequest(text)).ConfigureAwait(false); var document = result.Construct(ActualWordsHandler.InstanceOpen.WordFactory); ActualWordsHandler.InstanceOpen.Container.Context.Lexicon = lexicon; Text.Data.IParsedReview review = ActualWordsHandler.InstanceOpen.Container.Resolve <Func <Document, IParsedReviewManager> >()(document).Create(); Assert.AreEqual(1, review.CalculateRawRating().StarsRating); ActualWordsHandler.InstanceOpen.Container.Context.NGram = 3; review = ActualWordsHandler.InstanceOpen.Container.Resolve <Func <Document, IParsedReviewManager> >()(document).Create(); Assert.AreEqual(5, review.CalculateRawRating().StarsRating); IRatingAdjustment adjustment = RatingAdjustment.Create(review, null); var resultDocument = new DocumentFromReviewFactory(ActualWordsHandler.InstanceOpen.Container.Resolve <INRCDictionary>()).ReparseDocument(adjustment); Assert.AreEqual(5, resultDocument.Stars); Assert.AreEqual("I Veto it really", resultDocument.Text); }
public async Task TestBasic(string text, int rating, int totalSentiments, bool disableInvertor) { ActualWordsHandler.InstanceSimple.Container.Context.DisableFeatureSentiment = disableInvertor; var request = await textSplitter.Process(new ParseRequest(text)).ConfigureAwait(false); var document = request.Construct(ActualWordsHandler.InstanceSimple.WordFactory); Text.Data.IParsedReview review = ActualWordsHandler.InstanceSimple.Container.Resolve <Func <Document, IParsedReviewManager> >()(document).Create(); Assert.AreEqual(rating, (int)review.CalculateRawRating().StarsRating); SentimentValue[] sentiments = review.GetAllSentiments(); Assert.AreEqual(totalSentiments, sentiments.Length); IRatingAdjustment adjustment = RatingAdjustment.Create(review, new NullMachineSentiment()); Assert.AreEqual(rating, (int)adjustment.Rating.StarsRating); }
public async Task TestAttributes() { ActualWordsHandler.InstanceOpen.Container.Context.ExtractAttributes = true; var result = await ActualWordsHandler.InstanceOpen.TextSplitter.Process(new ParseRequest("In the forest I like perfect dinner")).ConfigureAwait(false); var document = result.Construct(ActualWordsHandler.InstanceOpen.WordFactory); Text.Data.IParsedReview review = ActualWordsHandler.InstanceOpen.Container.Resolve <Func <Document, IParsedReviewManager> >()(document).Create(); Assert.AreEqual(4, review.ImportantWords.Count()); var reparse = new DocumentFromReviewFactory(ActualWordsHandler.InstanceOpen.Container.Resolve <INRCDictionary>()); IRatingAdjustment adjustment = RatingAdjustment.Create(review, null); document = reparse.ReparseDocument(adjustment); Assert.AreEqual(8, document.Attributes.Count); Assert.AreEqual(7, document.Words.Count(item => item.Attributes.Length > 0)); Assert.AreEqual(2, document.Words.Count(item => item.Emotions?.Length > 0)); ActualWordsHandler.InstanceOpen.Container.Context.ExtractAttributes = false; }