Анализ новостных каналов с помощью аналитики практически в режиме реального времени с использованием обработки изображений и естественного языка

Azure Cosmos DB
Функции Azure
Служебная шина Azure
Текстовая служба "Переводчик Azure"
Распознавание лиц Azure

В этом примере сценария описывается конвейер для массового приема документов, поступающих из общедоступных новостных RSS-каналов, и анализа этих документов практически в режиме реального времени. В нем используются службы Azure Cognitive Services для формирования аналитических сведений на основе перевода текста, распознавания лиц и определения тональности. В частности, действия по обработке изображений и естественного языка объединяются в конвейере обмена сообщениями на основе служебной шины Azure. Выходные данные конвейера представляют собой уведомление, содержащее полезные сведения или анализ.

Архитектура

Схема архитектуры: прием и анализ RSS-каналов с помощью обработки изображений и текста и отправки уведомлений.Скачайте файл Visio с этой архитектурой.

Поток данных

Поток данных проходит через решение следующим образом.

  1. Новостной RSS-канал выступает в роли генератора, который получает данные из документа или статьи. Например, в статье данные обычно включают заголовок, сводку исходного текста новостной статьи и иногда изображения.

  2. Генератор или процесс приема вставляет статью и все связанные изображения в коллекцию Azure Cosmos DB.

  3. Уведомление активирует функцию приема в Функции Azure, которая сохраняет текст статьи в Azure Cosmos DB и изображения статей (если таковые есть) в Хранилище BLOB-объектов Azure. Затем статья передается в следующую очередь.

  4. Функция перевода активируется событием очереди. Она использует API перевода текста из Azure Cognitive Services для определения языка, перевода текста при необходимости и извлечения тональности, ключевых фраз и сущностей из текста статьи и заголовка. Затем она передает статью в следующую очередь.

  5. Функция обнаружения активируется из статьи, добавленной в очередь. Она использует службу Компьютерное зрение для обнаружения объектов, ориентиров и записанных слов на связанном изображении, а затем передает статью в следующую очередь.

  6. Функция распознавания лиц активируется из статьи, добавленной в очередь. Она использует службу API распознавания лиц Azure для обнаружения лиц и определения пола и возраста людей на связанном изображении, а затем передает статью в следующую очередь.

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

На каждом этапе обработки функция записывает результаты в Azure Cosmos DB. В конечном счете, данные могут использоваться желаемым образом. Например, их можно использовать для улучшения бизнес-процессов, поиска новых клиентов или выявления проблем с удовлетворенностью клиентов.

Компоненты

В этом примере используется следующий список компонентов Azure.

  • Служба хранилища Azure используется для хранения необработанных изображений и видеофайлов, связанных со статьей. Дополнительная учетная запись хранения создается в службе приложений Azure и используется для размещения кода и журналов Функций Azure.

  • Azure Cosmos DB содержит сведения о тексте статьи, изображениях и информацию об отслеживании видео. В этой службе также сохраняются результаты действий Cognitive Services.

  • Функции Azure выполняют код функции, который используется для реагирования на сообщения очереди и преобразования входящего содержимого. В Службе приложений Azure содержится код функции, и эта служба последовательно обрабатывает записи. Этот сценарий включает пять функций: прием, преобразование, обнаружение объектов, распознавание лиц и уведомление.

  • В служебной шине Azure размещаются очереди служебной шины Azure, используемые функциями.

  • Службы Azure Cognitive Services предоставляют ИИ для конвейера на основе реализаций службы Компьютерное зрение, API распознавания лиц и службы машинного перевода Перевод текста.

  • Azure Application Insights предоставляет аналитику, которая помогает диагностировать проблемы и проанализировать работу приложения.

Альтернативные варианты

  • Вместо шаблона на основе уведомлений очереди и Функций Azure можно использовать шаблон раздела и подписки для этого потока данных. Разделы служебной шины Azure можно использовать для параллельной обработки различных частей статьи в отличие от последовательной обработки, используемой в этом примере. Дополнительные сведения см. в разделе Сравнение очередей и разделов.

  • Используйте Azure Logic Apps для реализации кода функции и реализации блокировки на уровне записи, например, блокировки, предоставляемой алгоритмом Redlock (который необходим для параллельной обработки, пока Azure Cosmos DB не поддерживает частичные обновления документа). Дополнительные сведения см. в разделе Сравнение Функций и Logic Apps.

  • Реализуйте эту архитектуру с помощью настраиваемых компонентов ИИ вместо существующих служб Azure. Например, расширьте конвейер с помощью настраиваемой модели, которая обнаруживает определенных людей на изображении, в отличие от определения общего количества, пола и возраста людей, как в этом примере. Чтобы использовать настраиваемые модели машинного обучения или ИИ в этой архитектуре, создайте модели в качестве конечных точек RESTful, чтобы их можно было вызывать из Функций Azure.

  • Используйте другой механизм ввода данных вместо новостных RSS-каналов. Используйте несколько генераторов или процессов приема в качестве источника данных для Azure Cosmos DB и службы хранилища Azure.

  • Когнитивный поиск Azure — это функция искусственного интеллекта в службе "Поиск Azure", которую также можно использовать для извлечения текста из изображений, BLOB-объектов и других неструктурированных источников данных.

Сведения о сценарии

В этом сценарии содержатся примеры для новостных каналов на английском, русском и немецком языках, однако их можно легко использовать для других RSS-каналов и других языков. Для простоты развертывания за сбор, обработку и анализ данных полностью отвечают службы Azure.

Потенциальные варианты использования

Хотя этот сценарий основан на обработке RSS-каналов, он может быть применен к любому документу, веб-сайту или статье, в которых необходимо:

  • Переводить текст на выбранный язык.
  • Выполнять поиск ключевых фраз, сущностей и определять тональность пользователя в цифровом содержимом.
  • Обнаруживать объекты, текст и ориентиры на изображениях, связанных с цифровой статьей.
  • Определять людей по полу и возрасту на изображениях, связанных с цифровым содержимым.

Рекомендации

Эти рекомендации реализуют основные принципы Azure Well-Architected Framework, которая представляет собой набор руководящих принципов, которые можно использовать для повышения качества рабочей нагрузки. Дополнительные сведения см. в статье Microsoft Azure Well-Architected Framework.

Для простоты в этом примере сценария используются только некоторые из доступных API-интерфейсов и служб Azure Cognitive Services. Например, текст на изображениях можно проанализировать с помощью API анализа текста. В этом сценарии предполагается, что в качестве целевого языка используется английский, но вы можете изменить язык входных данных на любой поддерживаемый язык.

Масштабируемость

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

В Azure Cosmos DB задача состоит в том, чтобы обеспечить более-менее равномерное распределение рабочей нагрузки между достаточно большим числом ключей секций. Общий объем данных, которые могут храниться в контейнере, и общий объем пропускной способности, которую поддерживает контейнер, не ограничены.

Управление и ведение журнала

В этом решении для сбора данных о производительности и ведении журнала используется Application Insights. Экземпляр Application Insights создается вместе с развертыванием в той же группе ресурсов, в которой находятся другие службы, необходимые для этого развертывания.

Чтобы просмотреть журналы, созданные решением, выполните следующие действия:

  1. Перейдите на портал Azure и откройте группу ресурсов, созданную для развертывания.

  2. Выберите экземпляр Application Insights.

  3. В разделе Application Insights выберите Исследование\Поиск и выполните поиск данных.

Безопасность

Безопасность обеспечивает гарантии от преднамеренных атак и злоупотреблений ценными данными и системами. Дополнительные сведения см. в статье Общие сведения о принципах безопасности.

Azure Cosmos DB использует защищенное подключение и подписанный URL-адрес с помощью пакета SDK C#, предоставляемого корпорацией Майкрософт. Других контактных зон с внешним доступом нет. Ознакомьтесь с дополнительными сведениями о рекомендациях по обеспечению безопасности для Azure Cosmos DB.

Оптимизация затрат

Оптимизация затрат заключается в поиске способов уменьшения ненужных расходов и повышения эффективности работы. Дополнительные сведения см. в разделе Обзор критерия "Оптимизация затрат".

Azure Cosmos DB — это мощный инструмент, с ним затраты на это развертывание являются максимальными. Вы можете использовать другое решение для хранения путем рефакторинга предоставленного кода Функций Azure.

Цены на Функции Azure зависят от плана, в котором они выполняются.

Развертывание этого сценария

Примечание

Необходимо иметь учетную запись Azure. Если у вас нет подписки Azure, перед началом работы создайте бесплатную учетную запись.

Весь код для этого сценария доступен в репозитории GitHub. Этот репозиторий содержит исходный код, используемый для создания приложения генератора, которое передает данные в конвейер для этого примера.

Дальнейшие действия

Дополнительные архитектуры для аналитики: