Эта серия из трех частей демонстрирует, как использовать графовые нейронные сети (GNN) и Амазонка Нептун генерировать рекомендации фильмов с помощью IMDb и Box Office Mojo Movies/TV/OTT лицензируемый пакет данных, который предоставляет широкий спектр развлекательных метаданных, включая более 1 миллиарда пользовательских рейтингов; кредиты для более чем 11 миллионов актеров и членов съемочной группы; 9 миллионов наименований фильмов, телепередач и развлекательных программ; и глобальные отчетные данные о кассовых сборах из более чем 60 стран. Многие клиенты AWS в сфере медиа и развлечений лицензируют данные IMDb через Обмен данными AWS для улучшения обнаружения контента и повышения вовлеченности и удержания клиентов.
Следующая диаграмма иллюстрирует полную архитектуру, реализованную как часть этой серии.
In Часть 1, мы обсудили применение GNN и то, как преобразовать и подготовить наши данные IMDb в граф знаний (KG). Мы загрузили данные из AWS Data Exchange и обработали их в Клей AWS для создания файлов KG. Файлы KG хранились в Простой сервис хранения Amazon (Amazon S3), а затем загружается в Амазонка Нептун.
In Часть 2, мы продемонстрировали, как использовать Amazon Нептун ML (в Создатель мудреца Амазонки) для обучения KG и создания вложений KG.
В этом посте мы покажем вам, как применять наши обученные встраивания KG в Amazon S3 для вариантов использования поиска вне каталога с помощью Сервис Amazon OpenSearch и AWS Lambda. Вы также развертываете локальное веб-приложение для интерактивного поиска. Все ресурсы, используемые в этом посте, могут быть созданы с помощью одного Комплект для разработки облачных сервисов AWS (AWS CDK), как описано далее в посте.
проверка данных
Вы когда-нибудь непреднамеренно искали заголовок контента, который не был доступен на платформе потокового видео? Если да, вы обнаружите, что вместо пустой страницы результатов поиска вы найдете список фильмов того же жанра с актерами или членами съемочной группы. Это опыт поиска вне каталога!
Поиск вне каталога (OOC) — это когда вы вводите поисковый запрос, который не имеет прямого соответствия в каталоге. Это событие часто происходит на платформах потокового видео, которые постоянно покупают разнообразный контент у нескольких поставщиков и производственных компаний в течение ограниченного времени. Отсутствие релевантности или сопоставления из каталога потоковой компании с большими базами знаний о фильмах и шоу может привести к неудовлетворительному поиску для клиентов, которые запрашивают OOC-контент, тем самым сокращая время взаимодействия с платформой. Это сопоставление может быть выполнено путем ручного сопоставления частых запросов OOC с содержимым каталога или может быть автоматизировано с помощью машинного обучения (ML).
В этом посте мы покажем, как обращаться с OOC, используя мощь набора данных IMDb (главный источник глобальных метаданных о развлечениях) и графы знаний.
Служба открытого поиска — это полностью управляемая служба, упрощающая интерактивный анализ журналов, мониторинг приложений в реальном времени, поиск по веб-сайтам и многое другое. OpenSearch — это распределенный пакет поиска и аналитики с открытым исходным кодом, созданный на основе Elasticsearch. Служба OpenSearch предлагает последние версии OpenSearch, поддержку 19 версий Elasticsearch (версии от 1.5 до 7.10), а также возможности визуализации на базе OpenSearch Dashboards и Kibana (версии от 1.5 до 7.10). В настоящее время OpenSearch Service имеет десятки тысяч активных клиентов с сотнями тысяч управляемых кластеров, обрабатывающих триллионы запросов в месяц. Служба OpenSearch предлагает поиск kNN, который может улучшить поиск в таких случаях использования, как рекомендации по продукту, обнаружение мошенничества, а также изображения, видео и некоторые конкретные семантические сценарии, такие как сходство документов и запросов. Дополнительные сведения о функциях поиска на основе понимания естественного языка в службе OpenSearch см. Создание поискового приложения на базе NLU с помощью Amazon SageMaker и функции Amazon OpenSearch Service KNN.
Обзор решения
В этом посте мы представляем решение для обработки ситуаций OOC с помощью встроенного поиска на основе графа знаний с использованием возможностей поиска k-ближайших соседей (kNN) службы OpenSearch. Ключевыми сервисами AWS, используемыми для реализации этого решения, являются OpenSearch Service, SageMaker, Lambda и Amazon S3.
Узнать подробности Часть 1 и Часть 2 из этой серии, чтобы узнать больше о создании графов знаний и внедрении GNN с помощью Amazon Neptune ML.
Наше решение OOC предполагает, что у вас есть комбинированный KG, полученный путем слияния потоковой компании KG и IMDb KG. Это можно сделать с помощью простых методов обработки текста, которые сопоставляют названия вместе с типом названия (фильм, сериал, документальный фильм), актерским составом и съемочной группой. Кроме того, этот совместный граф знаний должен быть обучен для создания вложений графа знаний через конвейеры, упомянутые в Часть 1 и Часть 2. Следующая диаграмма иллюстрирует упрощенный вид комбинированного KG.
Чтобы продемонстрировать функциональность поиска OOC на простом примере, мы разделили граф знаний IMDb на каталог клиентов и каталог вне клиентов. Мы помечаем заголовки, которые содержат «Историю игрушек», как ресурс каталога вне клиентов, а остальную часть графа знаний IMDb — как каталог клиентов. В случае, когда каталог клиентов не расширяется и не объединяется с внешними базами данных, поиск по запросу «история игрушек» будет возвращать любой заголовок, в метаданных которого есть слова «игрушка» или «история», при текстовом поиске OpenSearch. Если бы каталог клиентов был сопоставлен с IMDb, было бы легче понять, что запроса «история игрушек» в каталоге нет и что наиболее часто встречающимися совпадениями в IMDb являются «История игрушек», «История игрушек 2», «История игрушек 3». «История 4», «История игрушек XNUMX» и «Чарли: История игрушек» в порядке убывания релевантности с текстовым соответствием. Чтобы получить результаты внутри каталога для каждого из этих совпадений, мы можем сгенерировать пять ближайших фильмов в каталоге клиентов на основе встраивания kNN (совместного KG) с помощью службы OpenSearch.
Типичный опыт OOC следует потоку, показанному на следующем рисунке.
В следующем видео показаны первые пять (количество совпадений) результатов OOC по запросу «история игрушек» и релевантные совпадения в каталоге клиентов (количество рекомендаций).
Здесь запрос сопоставляется с графом знаний с помощью текстового поиска в службе OpenSearch. Затем мы сопоставляем вложения текстового соответствия с заголовками каталога клиентов, используя индекс kNN службы OpenSearch. Поскольку пользовательский запрос нельзя напрямую сопоставить с объектами графа знаний, мы используем двухэтапный подход, чтобы сначала найти сходства запросов на основе заголовков, а затем элементы, похожие на заголовок, с помощью встраивания графа знаний. В следующих разделах мы рассмотрим процесс настройки кластера службы OpenSearch, создания и загрузки индексов графа знаний, а также развертывания решения в виде веб-приложения.
Предпосылки
Для реализации этого решения необходимо иметь Аккаунт AWS, знакомство с OpenSearch Service, SageMaker, Lambda и AWS CloudFormation, и выполнили шаги в Часть 1 и Часть 2 из этой серии.
Запустить ресурсы решения
На следующей диаграмме архитектуры показан рабочий процесс вне каталога.
Вы будете использовать AWS Cloud Development Kit (CDK) для предоставления ресурсов, необходимых для поисковых приложений OOC. Код для запуска этих ресурсов выполняет следующие операции:
- Создает VPC для ресурсов.
- Создает домен службы OpenSearch для приложения поиска.
- Создает функцию Lambda для обработки и загрузки метаданных фильмов и внедрений в индексы службы OpenSearch (
**-ReadFromOpenSearchLambda-**
). - Создает функцию Lambda, которая принимает в качестве входных данных пользовательский запрос из веб-приложения и возвращает соответствующие заголовки из OpenSearch (
**-LoadDataIntoOpenSearchLambda-**
). - Создает шлюз API, который добавляет дополнительный уровень безопасности между пользовательским интерфейсом веб-приложения и Lambda.
Для начала выполните следующие шаги:
- Запустите код и блокноты из Часть 1 и Часть 2.
- Перейдите в
part3-out-of-catalog
папка в репозитории кода.
- Запустите AWS CDK из терминала с помощью команды
bash launch_stack.sh
. - В качестве входных данных укажите два пути к файлам S3, созданные во второй части:
- Путь S3 к CSV-файлу встраивания фильма.
- Путь S3 к файлу узла фильма.
- Подождите, пока сценарий подготовит все необходимые ресурсы и завершит работу.
- Скопируйте URL-адрес шлюза API, который распечатывает сценарий AWS CDK, и сохраните его. (Мы используем это для приложения Streamlit позже).
Создайте домен службы OpenSearch
В целях иллюстрации вы создаете домен поиска в одной зоне доступности в экземпляре r6g.large.search в защищенном облаке VPC и подсети. Обратите внимание, что лучше всего настроить три зоны доступности с одним основным экземпляром и двумя репликами.
Создайте индекс службы OpenSearch и загрузите данные
Вы используете функции Lambda (созданные с помощью команды запуска стека AWS CDK) для создания индексов службы OpenSearch. Чтобы начать создание индекса, выполните следующие шаги:
- В консоли Lambda откройте
LoadDataIntoOpenSearchLambda
Лямбда-функция. - На Пусконаладка , выберите Пусконаладка для создания и загрузки данных в индекс службы OpenSearch.
Следующий код этой лямбда-функции можно найти в part3-out-of-catalog/cdk/ooc/lambdas/LoadDataIntoOpenSearchLambda/lambda_handler.py
:
Функция выполняет следующие задачи:
- Загружает файл узла фильма IMDB KG, который содержит метаданные фильма и связанные с ним вложения из путей к файлам S3, которые были переданы в файл создания стека.
launch_stack.sh
. - Объединяет два входных файла для создания единого фрейма данных для создания индекса.
- Инициализирует клиент службы OpenSearch с помощью библиотеки Boto3 Python.
- Создает два индекса для текста (
ooc_text
) и поиск вложения kNN (ooc_knn
) и массово загружает данные из объединенного фрейма данных черезingest_data_into_ops
функции.
Этот процесс приема данных занимает 5–10 минут и может контролироваться через Amazon CloudWatch журналы на мониторинг вкладку лямбда-функции.
Вы создаете два индекса, чтобы включить поиск на основе текста и поиск на основе внедрения kNN. Текстовый поиск сопоставляет запрос в произвольной форме, который вводит пользователь, с названиями фильмов. Поиск внедрения kNN находит k ближайших фильмов к лучшему текстовому совпадению из скрытого пространства KG, чтобы вернуть их в качестве выходных данных.
Разверните решение как локальное веб-приложение
Теперь, когда у вас есть рабочий текстовый поиск и индекс kNN в службе OpenSearch, вы готовы создать веб-приложение на основе машинного обучения.
Мы используем streamlit
Пакет Python для создания интерфейсной иллюстрации для этого приложения. IMDb-Knowledge-Graph-Blog/part3-out-of-catalog/run_imdb_demo.py
файл Python в нашем Репо GitHub имеет необходимый код для запуска локального веб-приложения для изучения этой возможности.
Чтобы запустить код, выполните следующие шаги:
- Установить
streamlit
иaws_requests_auth
Пакет Python в вашей локальной виртуальной среде Python для следующих команд в вашем терминале:
- Замените заполнитель для URL-адреса шлюза API в коде, как показано ниже, на созданный AWS CDK:
api = '<ENTER URL OF THE API GATEWAY HERE>/opensearch-lambda?q={query_text}&numMovies={num_movies}&numRecs={num_recs}'
- Запустите веб-приложение с помощью команды
streamlit run run_imdb_demo.py
с вашего терминала.
Этот скрипт запускает веб-приложение Streamlit, к которому можно получить доступ в вашем веб-браузере. URL-адрес веб-приложения можно получить из выходных данных скрипта, как показано на следующем снимке экрана.
Приложение принимает новые строки поиска, количество совпадений и количество рекомендаций. Количество обращений соответствует тому, сколько совпадающих заголовков OOC мы должны получить из внешнего каталога (IMDb). Количество рекомендаций соответствует тому, сколько ближайших соседей мы должны получить из каталога клиентов на основе поиска с встраиванием kNN. См. следующий код:
Эти входные данные (запрос, количество просмотров и рекомендации) передаются в **-ReadFromOpenSearchLambda-**
Лямбда-функция, созданная AWS CDK через запрос шлюза API. Это делается в следующей функции:
Выходные результаты функции Lambda из службы OpenSearch передаются в шлюз API и отображаются в приложении Streamlit.
Убирать
Вы можете удалить все ресурсы, созданные AWS CDK, с помощью команды npx cdk destroy –app “python3 appy.py” --all
в том же случае (внутри cdk
папка), которая использовалась для запуска стека (см. следующий снимок экрана).
Заключение
В этом посте мы показали вам, как создать решение для ООС-поиска с использованием текста и поиска на основе kNN с помощью SageMaker и OpenSearch Service. Вы использовали встраивание пользовательской модели графа знаний, чтобы найти ближайших соседей в вашем каталоге к названиям IMDb. Например, теперь вы можете искать «Кольца власти», фэнтезийный сериал, разработанный Amazon Prime Video, на других потоковых платформах и рассуждать, как они могли бы оптимизировать результаты поиска.
Для получения дополнительной информации о примере кода в этом сообщении см. Репо GitHub. Чтобы узнать больше о сотрудничестве с Amazon ML Solutions Lab для создания подобных современных приложений ML, см. Лаборатория решений для машинного обучения Amazon. Для получения дополнительной информации о лицензировании наборов данных IMDb посетите Developer.imdb.com.
Об авторах
Дивья Бхаргави является специалистом по данным и руководителем направления медиа и развлечений в лаборатории решений Amazon ML, где она решает важные бизнес-задачи для клиентов AWS с помощью машинного обучения. Она работает над пониманием изображений/видео, рекомендательными системами графов знаний, предиктивными примерами использования рекламы.
Гаурав Реле — специалист по данным в лаборатории решений Amazon ML, где он работает с клиентами AWS в разных вертикалях, чтобы ускорить использование ими машинного обучения и облачных сервисов AWS для решения своих бизнес-задач.
Мэтью Родс — специалист по данным. Я работаю в лаборатории решений Amazon ML. Он специализируется на построении конвейеров машинного обучения, включающих такие концепции, как обработка естественного языка и компьютерное зрение.
Каран Синдвани — специалист по данным в лаборатории Amazon ML Solutions Lab, где он создает и развертывает модели глубокого обучения. Он специализируется в области компьютерного зрения. В свободное время любит пешие прогулки.
Соджи Адешина является прикладным ученым в AWS, где он разрабатывает модели на основе графовых нейронных сетей для машинного обучения на графовых задачах с приложениями для мошенничества и злоупотреблений, графов знаний, рекомендательных систем и наук о жизни. В свободное время любит читать и готовить.
Видья Сагар Равипати является менеджером в лаборатории решений Amazon ML, где он использует свой обширный опыт работы с крупномасштабными распределенными системами и свою страсть к машинному обучению, чтобы помочь клиентам AWS из разных отраслевых вертикалей ускорить внедрение ИИ и облачных технологий.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/machine-learning/power-recommendations-and-search-using-an-imdb-knowledge-graph-part-3/
- 1
- 10
- 100
- 11
- 116
- 7
- 9
- a
- О нас
- злоупотребление
- ускорять
- Принимает
- Доступ
- через
- активный
- дополнительный
- Дополнительно
- Добавляет
- Принятие
- Реклама
- AI
- Все
- Amazon
- Лаборатория решений Amazon ML
- Амазонка Нептун
- Amazon Нептун ML
- Сервис Amazon OpenSearch
- Создатель мудреца Амазонки
- аналитика
- и
- API
- приложение
- Применение
- Приложения
- прикладной
- Применить
- подхода
- архитектура
- ПЛОЩАДЬ
- связанный
- Автоматизированный
- свободных мест
- доступен
- AWS
- Обмен данными AWS
- основанный
- , так как:
- ЛУЧШЕЕ
- между
- миллиард
- Коробка
- Театральная касса
- браузер
- строить
- Строительство
- строит
- бизнес
- возможности
- случаев
- каталог
- проблемы
- Выберите
- клиент
- облако
- принятие облака
- облачные сервисы
- Кластер
- код
- сотрудничество
- сочетании
- Компании
- Компания
- Компании
- полный
- Заполненная
- компьютер
- Компьютерное зрение
- понятия
- Консоли
- постоянно
- содержит
- содержание
- соответствует
- может
- страны
- Создайте
- создали
- Создающий
- создание
- кредиты
- Текущий
- В настоящее время
- изготовленный на заказ
- клиент
- Взаимодействие с клиентами
- Клиенты
- данным
- Обмен данными
- ученый данных
- базы данных
- Наборы данных
- глубоко
- глубокое обучение
- демонстрировать
- убивают
- развертывание
- развертывание
- развертывает
- Производный
- описано
- уничтожить
- обнаружение
- развитый
- Развитие
- развивается
- различный
- направлять
- непосредственно
- открытие
- обсуждается
- распределенный
- распределенные системы
- документ
- документальный фильм
- не
- домен
- каждый
- легче
- включить
- обязательство
- расширение
- Enter
- Вводит
- Развлечения
- лиц
- Окружающая среда
- События
- НИКОГДА
- пример
- обмена
- опыт
- Больше
- и, что лучший способ
- дополнительно
- всего лишь пяти граммов героина
- фамильярность
- ФАНТАЗИЯ
- фигура
- Файл
- Файлы
- Найдите
- находит
- Во-первых,
- поток
- после
- следующим образом
- найденный
- мошенничество
- обнаружение мошенничества
- частое
- часто
- от
- полностью
- функция
- функциональные возможности
- функциональность
- Функции
- шлюз
- порождать
- получить
- Глобальный
- график
- Графики
- обрабатывать
- Заголовки
- помощь
- Удар
- Хиты
- Как
- How To
- HTML
- HTTPS
- Сотни
- изображение
- осуществлять
- в XNUMX году
- улучшать
- in
- В том числе
- Увеличение
- индекс
- Индексы
- Индексы
- промышленность
- информация
- вход
- устанавливать
- пример
- вместо
- взаимодействие
- интерактивный
- Интерфейс
- включать в себя
- IT
- пункты
- Основные
- знания
- График знаний
- лаборатория
- язык
- большой
- крупномасштабный
- последний
- запуск
- запускает
- слой
- вести
- УЧИТЬСЯ
- изучение
- рычаги
- Библиотека
- Лицензия
- Лицензирование
- ЖИЗНЬЮ
- Медико-биологическая промышленность
- Ограниченный
- Список
- загрузка
- локальным
- машина
- обучение с помощью машины
- ДЕЛАЕТ
- управляемого
- управление
- менеджер
- вручную
- многих
- карта
- отображение
- Карты
- отметка
- Совпадение
- согласование
- Медиа
- Участники
- упомянутый
- объединение
- Метаданные
- миллиона
- Минут
- ML
- модель
- Модели
- контролируемый
- Мониторинг
- Месяц
- БОЛЕЕ
- кино
- Кино
- с разными
- натуральный
- Обработка естественного языка
- соседи
- Neptune
- сетевой
- сетей
- нейронные сети
- Новые
- узел
- номер
- полученный
- Предложения
- Офис
- ONE
- открытый
- с открытым исходным кодом
- Операционный отдел
- оптимизированный
- заказ
- OS
- Другое
- пакет
- часть
- Прошло
- страсть
- путь
- Выполнять
- выполняет
- заполнитель
- Платформа
- Платформы
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- пожалуйста
- После
- мощностью
- Питание
- практика
- премьер-министр
- Подготовить
- представить
- первичный
- Простое число
- печать
- проблемам
- процесс
- Обработанный
- обработка
- Продукт
- Производство
- приводит
- обеспечение
- покупки
- целей
- Питон
- ассортимент
- рейтинги
- Reading
- готовый
- реального времени
- причина
- Рекомендация
- рекомендаций
- актуальность
- соответствующие
- ответ
- Reporting
- хранилище
- запросить
- Запросы
- обязательный
- ресурс
- Полезные ресурсы
- ответ
- ОТДЫХ
- результат
- Итоги
- сохранение
- возвращают
- Возвращает
- Run
- Бег
- sagemaker
- то же
- Сохранить
- Сценарии
- НАУКА
- Ученый
- Поиск
- разделах
- безопасный
- безопасность
- Серии
- обслуживание
- Услуги
- набор
- установка
- настройки
- должен
- показанный
- Шоу
- аналогичный
- сходство
- просто
- упрощенный
- одинарной
- обстоятельства
- Решение
- Решения
- РЕШАТЬ
- Решает
- некоторые
- Источник
- Space
- специализируется
- конкретный
- раскол
- стек
- Начало
- и политические лидеры
- современное состояние
- Шаги
- диск
- хранить
- История
- потоковый
- подсети
- такие
- suite
- поддержка
- системы
- взять
- принимает
- задачи
- снижения вреда
- Терминал
- Ассоциация
- Местоположение
- сустав
- их
- тем самым
- тысячи
- три
- Через
- время
- Название
- позиций
- в
- топ
- Train
- специалистов
- Transform
- триллионы
- tv
- типичный
- под
- понимание
- Загрузка
- URL
- использование
- Информация о пользователе
- Пользовательский интерфейс
- Использующий
- разнообразие
- Огромная
- поставщики
- вертикалей
- Видео
- Вид
- Виртуальный
- видение
- визуализация
- Web
- веб приложение
- веб-браузер
- Вебсайт
- который
- широкий
- Широкий диапазон
- будете
- в
- Word
- слова
- работает
- работает
- бы
- Ты
- ВАШЕ
- зефирнет
- зоны