Использование API естественного языка с C#

1. Обзор

В этом практическом занятии вы сосредоточитесь на использовании API обработки естественного языка с C#. Вы научитесь выполнять анализ настроения, сущностей и синтаксиса.

API Google Cloud Natural Language предоставляет разработчикам технологии понимания естественного языка, включая анализ настроения, анализ сущностей и синтаксический анализ.

Что вы узнаете

  • Как использовать Cloud Shell
  • Как включить API обработки естественного языка
  • Как аутентифицировать запросы API
  • Как установить клиентскую библиотеку Google Cloud для C#
  • Как проводить анализ настроений
  • Как выполнить анализ сущностей
  • Как выполнить синтаксический анализ

Что вам понадобится

  • Проект Google Cloud Platform
  • Браузер, например Chrome или Firefox.
  • Знание языка C#

Опрос

Как вы будете использовать этот учебный материал?

Прочитайте только от начала до конца. Прочитайте текст и выполните упражнения.

Как бы вы оценили свой опыт работы с C#?

Новичок Средний Профессионал

Как бы вы оценили свой опыт использования сервисов Google Cloud Platform?

Новичок Средний Профессионал

2. Настройка и требования

Настройка среды для самостоятельного обучения

  1. Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Название проекта — это отображаемое имя участников данного проекта. Это строка символов, не используемая API Google. Вы всегда можете его изменить.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (его нельзя изменить после установки). Консоль Cloud автоматически генерирует уникальную строку; обычно вам неважно, какая она. В большинстве практических заданий вам потребуется указать идентификатор вашего проекта (обычно обозначается как PROJECT_ID ). Если сгенерированный идентификатор вас не устраивает, вы можете сгенерировать другой случайный идентификатор. В качестве альтернативы вы можете попробовать свой собственный и посмотреть, доступен ли он. После этого шага его нельзя изменить, и он сохраняется на протяжении всего проекта.
  • К вашему сведению, существует третье значение — номер проекта , которое используется некоторыми API. Подробнее обо всех трех значениях можно узнать в документации .
  1. Далее вам потребуется включить оплату в консоли Cloud для использования ресурсов/API Cloud. Выполнение этого практического задания не потребует больших затрат, если вообще потребует. Чтобы отключить ресурсы и избежать дополнительных расходов после завершения этого урока, вы можете удалить созданные ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.

Активировать Cloud Shell

  1. В консоли Cloud нажмите «Активировать Cloud Shell» . d1264ca30785e435.png .

cb81e7c8e34bc8d.png

Если вы запускаете Cloud Shell впервые, вам будет показан промежуточный экран с описанием его возможностей. Если вам был показан промежуточный экран, нажмите «Продолжить» .

d95252b003979716.png

Подготовка и подключение к Cloud Shell займут всего несколько минут.

7833d5e1c5d18f54.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог объемом 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Большая часть, если не вся, ваша работа в этом практическом задании может быть выполнена с помощью браузера.

После подключения к Cloud Shell вы увидите, что прошли аутентификацию и что проект настроен на ваш идентификатор проекта.

  1. Выполните следующую команду в Cloud Shell, чтобы подтвердить свою аутентификацию:
gcloud auth list

вывод команды

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте:
gcloud config list project

вывод команды

[core]
project = <PROJECT_ID>

Если это не так, вы можете установить это с помощью следующей команды:

gcloud config set project <PROJECT_ID>

вывод команды

Updated property [core/project].

3. Включите API обработки естественного языка.

Прежде чем начать использовать API обработки естественного языка, необходимо его включить. В Cloud Shell это можно сделать с помощью следующей команды:

gcloud services enable language.googleapis.com

4. Установите клиентскую библиотеку Google Cloud Natural Language API для C#.

Для начала создайте простое консольное приложение на C#, которое вы будете использовать для запуска примеров использования Natural Language API:

dotnet new console -n NaturalLanguageApiDemo

Вы должны увидеть, что приложение создано и зависимости разрешены:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

Далее перейдите в папку NaturalLanguageApiDemo :

cd NaturalLanguageApiDemo/

И добавьте в проект пакет NuGet Google.Cloud.Language.V1 :

dotnet add package Google.Cloud.Language.V1
info : Adding PackageReference for package 'Google.Cloud.Language.V1' into project '/home/atameldev/NaturalLanguageApiDemo/NaturalLanguageApiDemo.csproj'.
log  : Restoring packages for /home/atameldev/NaturalLanguageApiDemo/NaturalLanguageApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Language.V1' version '1.1.0' added to file '/home/atameldev/NaturalLanguageApiDemo/NaturalLanguageApiDemo.csproj'.

Теперь вы готовы использовать API обработки естественного языка!

5. Анализ настроений

В этом разделе вы выполните анализ тональности строки и определите оценку и величину, используя API обработки естественного языка.

Оценка эмоционального состояния варьируется от -1,0 (отрицательное) до 1,0 (положительное) и соответствует общему эмоциональному состоянию, сформированному на основе предоставленной информации.

Величина эмоционального отклика варьируется от 0,0 до +бесконечности и указывает на общую силу эмоционального воздействия, основанную на предоставленной информации. Чем больше информации предоставлено, тем выше величина отклика.

Откройте редактор кода в правом верхнем углу Cloud Shell:

fd3fc1303e63572.png

Перейдите к файлу Program.cs в папке NaturalLanguageApiDemo и замените следующий код:

using System;
using Google.Cloud.Language.V1;

namespace NaturalLanguageApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var text = "Yukihiro Matsumoto is great!";
            var client = LanguageServiceClient.Create();
            var response = client.AnalyzeSentiment(Document.FromPlainText(text));
            var sentiment = response.DocumentSentiment;
            Console.WriteLine($"Score: {sentiment.Score}");
            Console.WriteLine($"Magnitude: {sentiment.Magnitude}");
        }
    }
}

Уделите минуту-две изучению кода и посмотрите, как этот фрагмент кода используется для проведения анализа тональности строки "Юкихиро Мацумото — великий!".

Вернувшись в Cloud Shell, запустите приложение:

dotnet run

Вы должны увидеть следующий результат:

Score: 0.9
Magnitude: 0.9

Краткое содержание

На этом этапе вы смогли выполнить анализ настроения текста и распечатать полученное значение и величину тональности. Подробнее об анализе настроения можно прочитать здесь.

6. Анализ сущностей

Анализ сущностей проверяет предоставленную информацию на наличие сущностей, осуществляя поиск имен собственных, таких как общественные деятели, достопримечательности и т. д., и возвращает информацию об этих сущностях.

Для выполнения анализа сущностей перейдите к файлу Program.cs в папке NaturalLanguageApiDemo и замените следующий код:

using System;
using Google.Cloud.Language.V1;

namespace NaturalLanguageApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var text = "Yukihiro Matsumoto is great!";
            var client = LanguageServiceClient.Create();
            var response = client.AnalyzeEntitySentiment(Document.FromPlainText(text));

            foreach (var entity in response.Entities)
            {
                Console.WriteLine($"Entity: \"{entity.Name}\" ({entity.Type})");
                if (entity.Metadata.ContainsKey("wikipedia_url"))
                {
                    Console.WriteLine($"URL: {entity.Metadata["wikipedia_url"]}");
                }
            }
        }
    }
}

Уделите минуту-две изучению кода и посмотрите, как фрагмент кода используется для выполнения анализа сущности в строке "Юкихиро Мацумото — великий!" .

Вернувшись в Cloud Shell, запустите приложение:

dotnet run

Вы должны увидеть следующий результат:

Entity: "Yukihiro Matsumoto" (Person)
URL: https://en.wikipedia.org/wiki/Yukihiro_Matsumoto

Краткое содержание

На этом этапе вы смогли выполнить анализ сущностей над текстовой строкой и вывести содержащиеся в ней сущности. Подробнее об анализе сущностей можно прочитать здесь.

7. Синтаксический анализ

Синтаксический анализ извлекает лингвистическую информацию, разбивая заданный текст на ряд предложений и лексем (как правило, границ слов), и проводит дальнейший анализ этих лексем.

В этом примере будет выведено количество предложений, лексем и указана часть речи для каждой лексемы.

Для выполнения синтаксического анализа перейдите к файлу Program.cs в папке NaturalLanguageApiDemo и замените код следующим:

using System;
using Google.Cloud.Language.V1;
using static Google.Cloud.Language.V1.AnnotateTextRequest.Types;

namespace NaturalLanguageApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var text = "Yukihiro Matsumoto is great!";
            var client = LanguageServiceClient.Create();
            var response = client.AnnotateText(Document.FromPlainText(text), 
                new Features { ExtractSyntax = true });

            var sentences = response.Sentences;
            var tokens = response.Tokens;

            Console.WriteLine($"Sentences: {sentences.Count}");
            Console.WriteLine($"Tokens: {tokens.Count}");

            foreach (var token in tokens)
            {
                Console.WriteLine($"{token.PartOfSpeech.Tag} {token.Text.Content}");
            }
        }
    }
}

Уделите минуту-две изучению кода и посмотрите, как этот фрагмент кода используется для выполнения синтаксического анализа строки "Yukihiro Matsumoto is great!" .

Вернувшись в Cloud Shell, запустите приложение:

dotnet run

Вы должны увидеть следующий результат:

Sentences: 1
Tokens: 5
Noun Yukihiro
Noun Matsumoto
Verb is
Adj great
Punct !

Визуальное объяснение представлено ниже.

297dbabf1a723bad.png

Краткое содержание

На этом этапе вы смогли выполнить синтаксический анализ простой текстовой строки и вывести количество предложений, количество токенов и лингвистическую информацию для каждого токена. Подробнее о синтаксическом анализе можно прочитать здесь.

8. Поздравляем!

Вы научились использовать API обработки естественного языка на языке C# для проведения различных видов анализа информации!

Уборка

Чтобы избежать списания средств с вашего счета Google Cloud Platform за ресурсы, использованные в этом кратком руководстве:

  • Перейдите в консоль облачной платформы .
  • Выберите проект, который хотите закрыть, затем нажмите кнопку «Удалить» вверху: это запланирует удаление проекта.

Узнать больше

Лицензия

Данная работа распространяется под лицензией Creative Commons Attribution 2.0 Generic.