Создайте систему оповещений в реальном времени на основе новостей с помощью Twitter, Amazon SageMaker и Hugging Face PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Создайте систему оповещения в режиме реального времени на основе новостей с помощью Twitter, Amazon SageMaker и Hugging Face.

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

Организации, пытающиеся извлечь ценность из текстовых данных, нередко ищут решение, не связанное с обучением сложной модели НЛП (обработки естественного языка). Для этих организаций более практичным является использование предварительно обученной модели НЛП. Кроме того, если выбранная модель не удовлетворяет их показателям успеха, организации хотят иметь возможность легко выбрать другую модель и переоценить ее.

В настоящее время извлекать информацию из текстовых данных проще, чем когда-либо, благодаря следующему:

  • Появление современных архитектур НЛП общего назначения, таких как преобразователи.
  • Возможность, которую разработчики и специалисты по данным должны быстро создавать, обучать и развертывать модели машинного обучения (ML) в масштабе облака с помощью таких сервисов, как Создатель мудреца Амазонки
  • Доступность тысяч предварительно обученных моделей НЛП на сотнях языков и с поддержкой нескольких фреймворков, предоставляемых сообществом на таких платформах, как Обниматься Face Hub

В этом посте мы покажем вам, как создать систему оповещения в реальном времени, которая получает новости из Твиттера и классифицирует твиты с помощью предварительно обученной модели из Hugging Face Hub. Вы можете использовать это решение для нулевой классификации, то есть вы можете классифицировать твиты практически по любому набору категорий и развернуть модель с помощью SageMaker для вывода в реальном времени.

В качестве альтернативы, если вы хотите получить представление о разговорах ваших клиентов и повысить узнаваемость бренда, анализируя взаимодействия в социальных сетях, мы рекомендуем вам ознакомиться с Панель управления социальными сетями, управляемая AI. Решение использует Amazon Comprehend, полностью управляемый сервис NLP, который раскрывает ценные идеи и связи в тексте, не требуя опыта машинного обучения.

Безупречное обучение

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

Архитектура трансформатора представляет собой сложную нейронную сеть, которая требует знаний предметной области и огромного количества данных для обучения с нуля. Обычной практикой является использование предварительно обученного современного преобразователя, такого как BERT, RoBERTa, T5, GPT-2 или DistilBERT, и точная настройка (перенос обучения) модели на конкретный вариант использования.

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

Обучение с нулевым выстрелом — это особая задача машинного обучения, в которой классификатор учится на одном наборе меток во время обучения, а затем во время вывода оценивается на другом наборе меток, который классификатор никогда раньше не видел. В НЛП вы можете использовать классификатор нулевой последовательности, обученный задаче вывода естественного языка (NLI), для классификации текста без какой-либо точной настройки. В этом посте мы используем популярный NLI БАРТ модель bart-large-mnli для классификации твитов. Это большая предварительно обученная модель (1.6 ГБ), доступная на концентраторе моделей Hugging Face.

Hugging Face — это компания, занимающаяся искусственным интеллектом, которая управляет платформой с открытым исходным кодом (Hugging Face Hub) с тысячами предварительно обученных моделей НЛП (трансформеров) на более чем 100 различных языках и с поддержкой различных фреймворков, таких как TensorFlow и PyTorch. Библиотека трансформеров помогает разработчикам и специалистам по данным начать работу со сложными задачами NLP и NLU, такими как классификация, извлечение информации, ответы на вопросы, обобщение, перевод и генерация текста.

AWS и обнимающее лицо сотрудничали, чтобы упростить и ускорить внедрение моделей НЛП. Теперь доступен набор контейнеров глубокого обучения (DLC) для обучения и вывода в PyTorch или TensorFlow, а также средства оценки и предикторы Hugging Face для SageMaker Python SDK. Эти возможности помогают разработчикам с любым уровнем знаний легко начать работу с НЛП.

Обзор решения

Мы предоставляем рабочее решение, которое извлекает твиты в режиме реального времени из выбранных учетных записей Twitter. Для демонстрации нашего решения мы используем три аккаунта, Amazon Web Services (@awscloud), безопасность AWS (@AWSSecurityInfo) и Amazon Science (@AmazonScience) и отнести их содержимое к одной из следующих категорий: безопасность, база данных, вычислительные ресурсы, хранилище и машинное обучение. Если модель возвращает категорию с показателем достоверности более 40 %, отправляется уведомление.

В следующем примере модель классифицировала твит от Amazon Web Services в категории машинного обучения с показателем достоверности 97%, создав предупреждение.

Решение основано на предварительно обученной модели преобразования Hugging Face (из Hugging Face Hub) для классификации твитов на основе набора меток, которые предоставляются во время вывода — модель не нужно обучать. На следующих снимках экрана показано больше примеров и то, как они были классифицированы.
Некоторые соответствующие примеры
Мы рекомендуем вам попробовать решение самостоятельно. Просто скачайте исходный код с Репозиторий GitHub и следуйте инструкциям по развертыванию в файле README.

Архитектура решения

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

Ниже представлена ​​диаграмма архитектуры решения.
Объем решения
Рабочий процесс решения состоит из следующих компонентов:

  1. Решение основано на Stream API Twitter для получения твитов, соответствующих настроенным правилам (твиты из интересующих учетных записей) в режиме реального времени. Для этого приложение, работающее внутри контейнера, поддерживает открытое соединение с конечной точкой Twitter. Ссылаться на API Twitter Больше подробностей.
  2. Контейнер работает на Amazon Elastic Контейнерный Сервис (Amazon ECS), полностью управляемый сервис оркестрации контейнеров, упрощающий развертывание, управление и масштабирование контейнерных приложений. Одна задача выполняется в бессерверной инфраструктуре, управляемой АМС Фаргейт.
  3. Токен Twitter Bearer надежно хранится в Хранилище параметров AWS Systems Manager, способность Менеджер систем AWS который обеспечивает безопасное иерархическое хранилище для данных конфигурации и секретов. Образ контейнера размещен на Реестр Amazon Elastic Container (Amazon ECR), полностью управляемый реестр контейнеров, предлагающий высокопроизводительный хостинг.
  4. Всякий раз, когда поступает новый твит, приложение-контейнер помещает твит в Простой сервис очередей Amazon (Amazon SQS). Amazon SQS — это полностью управляемый сервис очередей сообщений, который позволяет разделить и масштабировать микросервисы, распределенные системы и бессерверные приложения.
  5. Логика решения заключается в AWS Lambda функция. Lambda — это бессерверная служба вычислений, управляемая событиями. Функция получает новые твиты из очереди и классифицирует их, вызывая конечную точку.
  6. Конечная точка использует модель Hugging Face и размещается в SageMaker. Конечная точка выполняет вывод и выводит класс твита.
  7. В зависимости от классификации функция формирует уведомление через Amazon Простая служба уведомлений (Amazon SNS), полностью управляемая служба обмена сообщениями. Вы можете подписаться на тему SNS, и несколько адресатов смогут получать это уведомление (см. Направления событий Amazon SNS). Например, вы можете доставлять уведомления во входящие в виде сообщений электронной почты (см. Уведомления по электронной почте).

Развертывание моделей Hugging Face с помощью SageMaker

Вы можете выбрать любую из более чем 10,000 XNUMX общедоступных моделей из Обнимающая модель лица Hub и разверните их с помощью SageMaker, используя DLC «Вывод обнимающего лица».

Когда используешь AWS CloudFormation, вы выбираете один из общедоступных Контейнеры для вывода обнимающих лиц и настроить модель и задачу. В этом решении используется facebook/барт-большой-мнли модель и задачу классификации нулевого выстрела, но вы можете выбрать любую из моделей под Классификация нулевого выстрела на сайте Hugging Face Model Hub. Вы настраиваете их, устанавливая переменные среды HF_MODEL_ID и HF_TASK в своем шаблоне CloudFormation, как в следующем коде:

SageMakerModel:
  Type: AWS::SageMaker::Model
  Properties:
    ExecutionRoleArn: !GetAtt SageMakerModelRole.Arn
    PrimaryContainer:
      Image: 763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-inference:1.7-transformers4.6-cpu-py36-ubuntu18.04
      Environment:
        HF_MODEL_ID: facebook/bart-large-mnli
        HF_TASK: zero-shot-classification
        SAGEMAKER_CONTAINER_LOG_LEVEL: 20
        SAGEMAKER_REGION: us-east-1

В качестве альтернативы, если вы не используете AWS CloudFormation, вы можете добиться тех же результатов, написав несколько строк кода. Ссылаться на Развертывание моделей в Amazon SageMaker Больше подробностей.

Чтобы классифицировать содержимое, вы просто вызываете конечную точку SageMaker. Ниже приведен фрагмент кода Python:

endpoint_name = os.environ['ENDPOINT_NAME']
labels = os.environ['ENDPOINT_NAME']

data = {
    'inputs': tweet,
    'parameters': {
        'candidate_labels': labels,
        'multi_class': False
    }
}

response = sagemaker.invoke_endpoint(EndpointName=endpoint_name,
                                     ContentType='application/json',
                                     Body=json.dumps(data))

response_body = json.loads(response['Body'].read())

Обратите внимание Ложь значение для мульти_класс чтобы указать, что сумма всех вероятностей для каждого класса будет равна 1.

Улучшения решения

Вы можете улучшить предложенное здесь решение, сохранив твиты и результаты моделирования. Простой сервис хранения Amazon (Amazon S3), служба хранения объектов, является одним из вариантов. Вы можете записывать твиты, результаты и другие метаданные в виде объектов JSON в корзину S3. Затем вы можете выполнять специальные запросы к этому контенту, используя Амазонка Афина, интерактивный сервис запросов, упрощающий анализ данных в Amazon S3 с помощью стандартного SQL.

Вы можете использовать историю не только для извлечения информации, но и для обучения пользовательской модели. Вы можете использовать поддержку Hugging Face для обучения модели с вашими данными с помощью SageMaker. Узнайте больше о Проводите обучение на Amazon SageMaker.

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

Клиенты уже экспериментируют с моделями Hugging Face в SageMaker. Сегурос БоливарПримером может служить колумбийская финансовая и страховая компания, основанная в 1939 году.

«Мы разработали решение для уведомления об угрозах для клиентов и страховых брокеров. Мы используем предварительно обученные модели НЛП Hugging Face для классификации твитов из соответствующих учетных записей, чтобы генерировать уведомления для наших клиентов в режиме, близком к реальному времени, в качестве стратегии предотвращения, чтобы помочь смягчить претензии. Претензия возникает, потому что клиенты не знают об уровне риска, которому они подвергаются. Решение позволяет нам повышать осведомленность наших клиентов, превращая риск в нечто измеримое в конкретных ситуациях».

– Джулиан Рико, руководитель отдела исследований и знаний Seguros Bolívar.

Сегурос Боливар работал с AWS над реархитектурой своего решения; теперь он использует SageMaker и похож на описанный в этом посте.

Заключение

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

В этом посте мы показали вам, как создать классификатор новостей с помощью нулевой модели Hugging Face на AWS. В качестве источника новостей мы использовали Twitter, но вы можете выбрать источник новостей, который больше соответствует вашим конкретным потребностям. Кроме того, вы можете легко изменить модель, просто указав выбранную модель в шаблоне CloudFormation.

Исходный код см. Репозиторий GitHub Он включает в себя полную инструкцию по настройке. Вы можете клонировать, изменять, развертывать и запускать его самостоятельно. Вы также можете использовать его в качестве отправной точки и настроить категории и логику предупреждений или создать другое решение для аналогичного варианта использования.

Пожалуйста, попробуйте и дайте нам знать, что вы думаете. Как всегда, ждем ваших отзывов. Вы можете отправить его по обычным контактам службы поддержки AWS или в Форум AWS для SageMaker.


Об авторах

Создайте систему оповещений в реальном времени на основе новостей с помощью Twitter, Amazon SageMaker и Hugging Face PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Дэвид Ларедо является архитектором прототипов в AWS Envision Engineering в Латинской Америке, где он помог разработать несколько прототипов машинного обучения. Ранее он работал инженером по машинному обучению и занимался машинным обучением более 5 лет. Сферы его интересов: НЛП, временные ряды и сквозное машинное обучение.

Создайте систему оповещений в реальном времени на основе новостей с помощью Twitter, Amazon SageMaker и Hugging Face PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Рафаэль Вернек является старшим архитектором прототипов в AWS Envision Engineering в Бразилии. Ранее он работал инженером по разработке программного обеспечения на Amazon.com.br и Amazon RDS Performance Insights.

Создайте систему оповещений в реальном времени на основе новостей с помощью Twitter, Amazon SageMaker и Hugging Face PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Викрам Эланго является специалистом по архитектуре решений AI/ML в Amazon Web Services, базирующейся в Вирджинии, США. Vikram помогает клиентам из финансовой и страховой индустрии с помощью дизайна и передовых идей для создания и развертывания приложений машинного обучения в масштабе. В настоящее время он занимается обработкой естественного языка, ответственным искусственным интеллектом, оптимизацией логических выводов и масштабированием машинного обучения на предприятии. В свободное время он любит путешествовать, ходить в походы, готовить и ходить в походы со своей семьей.

Отметка времени:

Больше от Машинное обучение AWS