AWS, C# 20.01.2019 admin No comments

Анализ эмоциональности текста при помощи C# и Amazon Comprehend

В данной статье мы будем анализировать эмоциональный окрас текста, используя для этого 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. Работа с ним описана тут.


Расширение для Google Chrome для улучшения памяти от автора данного блога - Colorobrain.




1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...