using System.Collections.Generic;
public class SentimentAnalyzer
public static string ClassifyText(string text, Dictionary<string, Dictionary<string, int>> trainingData)
string[] words = text.Split(' ');
double positiveProbability = CalculateSentimentProbability("positive", words, trainingData);
double negativeProbability = CalculateSentimentProbability("negative", words, trainingData);
return positiveProbability >= negativeProbability ? "positive" : "negative";
private static double CalculateSentimentProbability(string sentiment, string[] words, Dictionary<string, Dictionary<string, int>> trainingData)
double probability = 1.0;
if (!trainingData.ContainsKey(sentiment))
Dictionary<string, int> wordCounts = trainingData[sentiment];
int totalWordsInSentiment = wordCounts.Values.Sum();
foreach (string word in words)
if (wordCounts.ContainsKey(word))
probability *= (double)wordCounts[word] / totalWordsInSentiment;
public static void Main(string[] args)
var trainingData = new Dictionary<string, Dictionary<string, int>>
"positive", new Dictionary<string, int>
"negative", new Dictionary<string, int>
string text1 = "good great awesome";
string sentiment1 = ClassifyText(text1, trainingData);
Console.WriteLine($"'{text1}' is classified as: {sentiment1}");
string text2 = "bad terrible awful";
string sentiment2 = ClassifyText(text2, trainingData);
Console.WriteLine($"'{text2}' is classified as: {sentiment2}");
string text3 = "good bad";
string sentiment3 = ClassifyText(text3, trainingData);
Console.WriteLine($"'{text3}' is classified as: {sentiment3}");
string text4 = "this is a test";
string sentiment4 = ClassifyText(text4, trainingData);
Console.WriteLine($"'{text4}' is classified as: {sentiment4}");
string text5 = "good bad awful great";
string sentiment5 = ClassifyText(text5, trainingData);
Console.WriteLine($"'{text5}' is classified as: {sentiment5}");