Files
JavaScriptServices/samples/angular/MusicStore/Apis/Models/SentimentAnalysis.cs
2016-03-01 01:10:43 +00:00

39 lines
1.5 KiB
C#

using System.Linq;
using System.Text.RegularExpressions;
namespace MusicStore.Models
{
// Obviously this is not a serious sentiment analyser. It is only here to provide an amusing demonstration of cross-property
// validation in AlbumsApiController.
public static class SentimentAnalysis
{
private static string[] positiveSentimentWords = new[] { "happy", "fun", "joy", "love", "delight", "bunny", "bunnies", "asp.net" };
private static string[] negativeSentimentWords = new[] { "sad", "pain", "despair", "hate", "scorn", "death", "package management" };
public static SentimentResult GetSentiment(string text) {
var numPositiveWords = CountWordOccurrences(text, positiveSentimentWords);
var numNegativeWords = CountWordOccurrences(text, negativeSentimentWords);
if (numPositiveWords > numNegativeWords) {
return SentimentResult.Positive;
} else if (numNegativeWords > numPositiveWords) {
return SentimentResult.Negative;
} else {
return SentimentResult.Neutral;
}
}
private static int CountWordOccurrences(string text, string[] words)
{
// Very simplistic matching technique for this sample. Not scalable and not really even correct.
return new Regex(string.Join("|", words), RegexOptions.IgnoreCase).Matches(text).Count;
}
public enum SentimentResult {
Negative,
Neutral,
Positive,
}
}
}