В данной статье мы будем анализировать эмоциональный окрас текста, используя для этого C# и сервис Amazon Comprehend.
В приложении мы будем передавать текст и в результате выдавать конечную эмоцию, а также выводить список всех эмоций с числовым значением её вероятности.
Давайте создадим простое консольное приложение. После его создания необходимо будет установить через NuGet библиотеку AWSSDK.Comprehend.
В приложении необходимо будет указать Access key и secret key. Их вы можете взять из своего аккаунта AWS по этой ссылке в секции Access keys. Если у вас нет аккаунта AWS, то на момент написания статьи вы можете создать его бесплатно, а также использовать сервис Amazon Comprehend без оплаты, но с некоторыми ограничениями. Вы можете проверить эту информацию на сайте AWS.
Прокомментированный программный код с реализацией:
using Amazon; using Amazon.Comprehend; using Amazon.Comprehend.Model; using Amazon.Runtime; using System; namespace DetectSentiment { class Program { static void Main(string[] args) { Console.Title = ""; // указываем данные аккаунта AWS BasicAWSCredentials credentials = new BasicAWSCredentials("AccessKeyID", "SecretAccessKey"); // создаём объект для работы с сервисом Amazon Comprehend // в параметрах указываем данные аккаунта и используемый регион AmazonComprehendClient amazonComprehendClient = new AmazonComprehendClient(credentials, RegionEndpoint.EUCentral1); // создаём объект запроса DetectSentimentRequest detectSentimentRequest = MakeDetectSentimentRequest(); // получаем ответ DetectSentimentResponse detectSentimentResponse = amazonComprehendClient.DetectSentiment(detectSentimentRequest); // выводим исходный текст Console.WriteLine(detectSentimentRequest.Text); // выводим ключевую эмоцию Console.WriteLine(detectSentimentResponse.Sentiment); // выводим список эмоций с вероятностным числовым значением ShowScopesDetectSentiment(detectSentimentResponse.SentimentScore); Console.ReadKey(); } // метод создания запроса для анализа эмоциональности текста private static DetectSentimentRequest MakeDetectSentimentRequest() { // создаём объект запроса DetectSentimentRequest detectSentimentRequest = new DetectSentimentRequest(); // передаём необходимый текст detectSentimentRequest.Text = "Everything is done right."; // указываем код языка, который мы передаём в запросе detectSentimentRequest.LanguageCode = LanguageCode.En; return detectSentimentRequest; } // метод вывода списка эмоций со значением вероятности для каждого типа private static void ShowScopesDetectSentiment(SentimentScore sentimentScore) { Console.WriteLine("\nScopes:"); ShowSingleScopeDetectSentiment(nameof(sentimentScore.Mixed), sentimentScore.Mixed); ShowSingleScopeDetectSentiment(nameof(sentimentScore.Positive), sentimentScore.Positive); ShowSingleScopeDetectSentiment(nameof(sentimentScore.Neutral), sentimentScore.Neutral); ShowSingleScopeDetectSentiment(nameof(sentimentScore.Negative), sentimentScore.Negative); } private static void ShowSingleScopeDetectSentiment(string sentiment, float value) { Console.WriteLine("{0} - {1}", sentiment, value); } } }
Результат работы:
На данный момент сервис Amazon Comprehend не работает с русским языком, но вы можете использовать это решение совместно с сервисом Amazon Translate. Работа с ним описана тут.