public void checkTweetRating(List <Tweet> tweets) { AnalyisContainer analyisContainer = new AnalyisContainer(); foreach (Tweet tweet in tweets) { float rating = 0f; string expectedRating = getExpectedRating(tweet.testRating); string actualRating = getActualRating(tweet.positiveRating, tweet.negativeRating, ref rating); analyseResult(expectedRating, actualRating, ref analyisContainer); printAnalysisInfo(tweet, expectedRating, actualRating, rating); } int correctTotal = analyisContainer.correctPositive + analyisContainer.correctNegative + analyisContainer.correctNeutral; float correctPercentage = ((float)correctTotal) / tweets.Count * 100; int totalPositive = tweets.Count(t => t.testRating == 4f); float totalPositivePercentage = ((float)analyisContainer.correctPositive) / totalPositive * 100; int totalNegative = tweets.Count(t => t.testRating == 0f); float totalNegativePercentage = ((float)analyisContainer.correctNegative) / totalNegative * 100; int totalNeutral = tweets.Count(t => t.testRating == 2f); float totalNeutralPercentage = ((float)analyisContainer.correctNeutral) / totalNeutral * 100; Console.WriteLine("######################################################################"); Console.WriteLine($"{correctTotal} of {tweets.Count} ({correctPercentage}%) correct."); Console.WriteLine($"Positive: {analyisContainer.correctPositive} of {totalPositive} ({totalPositivePercentage}%)"); Console.WriteLine($"Negative: {analyisContainer.correctNegative} of {totalNegative} ({totalNegativePercentage}%)"); Console.WriteLine($"Neutral: {analyisContainer.correctNeutral} of {totalNeutral} ({totalNeutralPercentage}%)"); Console.WriteLine($"False positives: {analyisContainer.falsePositive}"); Console.WriteLine($"\t- should be negative: {analyisContainer.shouldNegativeButIsPositive}"); Console.WriteLine($"\t- should be neutral: {analyisContainer.shouldNeutralButIsPositive}"); Console.WriteLine($"False negatives: {analyisContainer.falseNegative}"); Console.WriteLine($"\t- should be positive: {analyisContainer.shouldPositiveButIsNegative}"); Console.WriteLine($"\t- should be neutral: {analyisContainer.shouldNeutralButIsNegative}"); Console.WriteLine($"False neutrals: {analyisContainer.falseNeutral}"); Console.WriteLine($"\t- should be positive: {analyisContainer.shouldPositiveButIsNeutral}"); Console.WriteLine($"\t- should be negative: {analyisContainer.shouldNegativeButIsNeutral}"); Console.WriteLine($"Indecisive: {analyisContainer.indecisive}"); Console.WriteLine($"\t- should be positive: {analyisContainer.shouldPositiveButIsEqual}"); Console.WriteLine($"\t- should be negative: {analyisContainer.shouldNegativeButIsEqual}"); Console.WriteLine($"\t- should be neutral: {analyisContainer.shouldNeutralButIsEqual}"); Console.WriteLine("######################################################################"); }
private void analyseResult(string expectedRating, string actualRating, ref AnalyisContainer analyisContainer) { if (expectedRating == actualRating) { if (actualRating == Positive) { analyisContainer.correctPositive++; } else if (actualRating == Negative) { analyisContainer.correctNegative++; } else { analyisContainer.correctNeutral++; } } else if (actualRating == Positive) { analyisContainer.falsePositive++; if (expectedRating == Negative) { analyisContainer.shouldNegativeButIsPositive++; } else if (expectedRating == Neutral) { analyisContainer.shouldNeutralButIsPositive++; } } else if (actualRating == Negative) { analyisContainer.falseNegative++; if (expectedRating == Positive) { analyisContainer.shouldPositiveButIsNegative++; } else if (expectedRating == Positive) { analyisContainer.shouldPositiveButIsNegative++; } } else if (actualRating == Neutral) { analyisContainer.falseNeutral++; if (expectedRating == Positive) { analyisContainer.shouldPositiveButIsNeutral++; } else if (expectedRating == Negative) { analyisContainer.shouldNegativeButIsNeutral++; } } else if (actualRating == Equal) { analyisContainer.indecisive++; if (expectedRating == Positive) { analyisContainer.shouldPositiveButIsEqual++; } else if (expectedRating == Negative) { analyisContainer.shouldNegativeButIsEqual++; } else { analyisContainer.shouldNeutralButIsEqual++; } } }