Ця серія з трьох частин демонструє, як використовувати графові нейронні мережі (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 Neptune ML (В Amazon SageMaker) для навчання KG і створення вставок KG.
У цій публікації ми розповімо вам, як застосувати наші навчені вбудовування KG в Amazon S3 до випадків використання пошуку поза каталогом за допомогою Служба Amazon OpenSearch та AWS Lambda. Ви також розгортаєте локальну веб-програму для інтерактивного пошуку. Усі ресурси, використані в цій публікації, можна створити за допомогою одного Набір хмарних розробок AWS (AWS CDK), як описано далі в публікації.
фон
Ви коли-небудь ненавмисно шукали назву вмісту, яка була недоступна на платформі потокового відео? Якщо так, ви побачите, що замість порожньої сторінки результатів пошуку ви знайдете список фільмів того самого жанру з акторським складом або членами знімальної групи. Це досвід пошуку поза каталогом!
Пошук поза каталогом (OOC) – це коли ви вводите пошуковий запит, який не має прямого збігу в каталозі. Ця подія часто трапляється на платформах потокового відео, які постійно купують різноманітний вміст у багатьох постачальників і виробничих компаній протягом обмеженого часу. Відсутність релевантності або зіставлення каталогу потокової компанії з великими базами знань про фільми та шоу може призвести до того, що клієнти, які запитують OOC-контент, можуть отримати нерівномірний пошук, тим самим зменшуючи час взаємодії з платформою. Це зіставлення можна виконати шляхом ручного зіставлення частих запитів OOC із вмістом каталогу або автоматизувати за допомогою машинного навчання (ML).
У цій публікації ми показуємо, як працювати з OOC, використовуючи потужність набору даних IMDb (основне джерело глобальних метаданих розваг) і графіків знань.
Сервіс OpenSearch – це повністю керована служба, яка полегшує вам виконання інтерактивної аналітики журналів, моніторинг додатків у реальному часі, пошук на веб-сайтах тощо. OpenSearch — це розподілений пошуковий і аналітичний пакет із відкритим вихідним кодом, похідний від Elasticsearch. Служба OpenSearch пропонує найновіші версії OpenSearch, підтримку 19 версій Elasticsearch (версії від 1.5 до 7.10), а також можливості візуалізації на основі інформаційних панелей OpenSearch і Kibana (версії від 1.5 до 7.10). Сервіс OpenSearch наразі має десятки тисяч активних клієнтів із сотнями тисяч кластерів під керуванням, які обробляють трильйони запитів на місяць. Служба OpenSearch пропонує пошук kNN, який може покращити пошук у таких випадках використання, як рекомендації продуктів, виявлення шахрайства, зображення, відео та деякі конкретні семантичні сценарії, як-от схожість документів і запитів. Для отримання додаткової інформації про функціональні можливості OpenSearch Service із розумінням природної мови пошуку див Створення пошукової програми на базі 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» і «Чарлі: Історія іграшок» у порядку зменшення релевантності з відповідністю тексту. Щоб отримати результати всередині каталогу для кожного з цих збігів, ми можемо згенерувати п’ять найближчих фільмів у подібності вбудовування kNN на основі каталогу клієнтів (об’єднаного KG) через службу OpenSearch.
Типовий досвід OOC відповідає потоку, зображеному на наступному малюнку.
У наступному відео показано п’ять найпопулярніших (за кількістю звернень) результатів OOC для запиту «історія іграшок» і відповідні збіги в каталозі клієнтів (кількість рекомендацій).
Тут запит зіставляється з графом знань за допомогою текстового пошуку в OpenSearch Service. Потім ми зіставляємо вставлення текстового збігу з назвами каталогу клієнтів за допомогою індексу OpenSearch Service kNN. Оскільки запит користувача не можна безпосередньо зіставити з сутностями графа знань, ми використовуємо двоетапний підхід, щоб спочатку знайти схожість запиту на основі заголовка, а потім елементи, схожі на заголовок, використовуючи вбудовування графу знань. У наступних розділах ми ознайомимося з процесом налаштування кластера OpenSearch Service, створення та завантаження індексів граф знань і розгортання рішення як веб-програми.
Передумови
Щоб реалізувати це рішення, ви повинні мати Обліковий запис AWS, знайомство з OpenSearch Service, SageMaker, Lambda та AWS CloudFormationі виконали кроки в Частина 1 та Частина 2 цієї серії.
Запуск ресурсів рішення
Наступна схема архітектури показує робочий процес поза каталогом.
Ви будете використовувати AWS Cloud Development Kit (CDK) для надання ресурсів, необхідних для програм пошуку OOC. Код для запуску цих ресурсів виконує такі операції:
- Створює VPC для ресурсів.
- Створює домен OpenSearch Service для програми пошуку.
- Створює функцію Lambda для обробки та завантаження метаданих фільмів і вбудовування в індекси OpenSearch Service (
**-ReadFromOpenSearchLambda-**
). - Створює функцію Lambda, яка приймає як вхідні дані запит користувача з веб-програми та повертає відповідні заголовки з OpenSearch (
**-LoadDataIntoOpenSearchLambda-**
). - Створює шлюз API, який додає додатковий рівень безпеки між інтерфейсом користувача веб-програми та Lambda.
Щоб почати, виконайте такі дії:
- Запустіть код і зошити з Частина 1 та Частина 2.
- перейдіть до
part3-out-of-catalog
папку в сховищі коду.
- Запустіть AWS CDK з терміналу за допомогою команди
bash launch_stack.sh
. - Надайте два шляхи до файлів S3, створені в частині 2, як вхідні дані:
- Шлях S3 до файлу CSV із вбудованими фільмами.
- Шлях S3 до файлу вузла фільму.
- Зачекайте, доки сценарій надасть усі необхідні ресурси та завершить роботу.
- Скопіюйте URL-адресу шлюзу API, яку роздрукує сценарій AWS CDK, і збережіть її. (Ми використаємо це для програми Streamlit пізніше).
Створіть домен служби OpenSearch
Для ілюстрації ви створюєте домен пошуку в одній зоні доступності в екземплярі r6g.large.search у захищеному VPC та підмережі. Зауважте, що найкраще було б налаштувати три зони доступності з одним основним і двома репліками.
Створіть індекс OpenSearch Service і завантажте дані
Ви використовуєте функції Lambda (створені за допомогою команди запуску стека AWS CDK) для створення індексів OpenSearch Service. Щоб почати створення індексу, виконайте наступні кроки:
- На консолі Lambda відкрийте
LoadDataIntoOpenSearchLambda
Лямбда-функція. - на Тест вкладку, виберіть Тест для створення та введення даних в індекс OpenSearch Service.
Наступний код цієї лямбда-функції можна знайти в part3-out-of-catalog/cdk/ooc/lambdas/LoadDataIntoOpenSearchLambda/lambda_handler.py
:
Функція виконує такі завдання:
- Завантажує файл вузла фільму IMDB KG, який містить метадані фільму та пов’язані з ним вбудовування зі шляхів до файлів S3, які були передані у файл створення стека
launch_stack.sh
. - Об’єднує два вхідні файли для створення єдиного кадру даних для створення індексу.
- Ініціалізує клієнт OpenSearch Service за допомогою бібліотеки Boto3 Python.
- Створює два індекси для тексту (
ooc_text
) і пошук вбудовування kNN (ooc_knn
) і масово завантажує дані з об’єднаного кадру даних черезingest_data_into_ops
функції.
Цей процес прийому даних займає 5–10 хвилин і його можна відстежувати через Amazon CloudWatch колоди на Моніторинг вкладка функції Лямбда.
Ви створюєте два індекси, щоб увімкнути пошук на основі тексту та пошук на основі вбудовування kNN. Текстовий пошук відображає запит довільної форми, який вводить користувач, із назвами фільмів. Пошук із вбудовуванням kNN знаходить k фільмів, найближчих до найкращого збігу тексту з прихованого простору KG, щоб повернути як вихідні дані.
Розгорніть рішення як локальну веб-програму
Тепер, коли у вас є робочий текстовий пошук та індекс kNN у службі OpenSearch, ви готові створювати веб-програму на основі ML.
Ми використовуємо streamlit
Пакет Python для створення зовнішньої ілюстрації для цієї програми. The 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 Gateway. Це робиться в такій функції:
Результати виводу функції Lambda із служби OpenSearch передаються в API Gateway і відображаються в додатку Streamlit.
Прибирати
Ви можете видалити всі ресурси, створені AWS CDK за допомогою команди npx cdk destroy –app “python3 appy.py” --all
в тому ж екземплярі (всередині cdk
папку), який використовувався для запуску стека (див. знімок екрана нижче).
Висновок
У цій публікації ми показали вам, як створити рішення для OOC-пошуку за допомогою текстового та kNN-пошуку за допомогою SageMaker і OpenSearch Service. Ви використовували вбудовування спеціальної моделі графа знань, щоб знайти найближчих сусідів у своєму каталозі з назвами IMDb. Тепер ви можете, наприклад, шукати «The Rings of Power», фентезійний серіал, розроблений Amazon Prime Video, на інших потокових платформах і міркувати, як вони могли оптимізувати результати пошуку.
Додаткову інформацію про зразок коду в цій публікації див GitHub репо. Щоб дізнатися більше про співпрацю з Amazon ML Solutions Lab для створення подібних найсучасніших програм ML, див. Лабораторія рішень машинного навчання Amazon. Для отримання додаткової інформації про ліцензування наборів даних IMDb відвідайте developer.imdb.com.
Про авторів
Дів'я Бхаргаві є спеціалістом із обробки даних і головним спеціалістом із медіа та розваг у Amazon ML Solutions Lab, де вона вирішує важливі бізнес-проблеми для клієнтів AWS за допомогою машинного навчання. Вона працює над розумінням зображень/відео, системами рекомендацій графів знань, сценаріями використання прогнозної реклами.
Гаурав Реле є науковцем із даних у лабораторії рішень Amazon ML Solution Lab, де він працює з клієнтами AWS у різних галузях, щоб прискорити використання машинного навчання та хмарних служб AWS для вирішення їхніх бізнес-задач.
Метью Роудс я спеціаліст з даних, я працюю в Amazon ML Solutions Lab. Він спеціалізується на створенні конвеєрів машинного навчання, які включають такі поняття, як обробка природної мови та комп’ютерне бачення.
Каран Сіндвані є дослідником даних в Amazon ML Solutions Lab, де він створює та розгортає моделі глибокого навчання. Спеціалізується в області комп'ютерного зору. У вільний час захоплюється пішим туризмом.
Соджі Адешіна є прикладним науковцем в AWS, де він розробляє моделі на основі графових нейронних мереж для машинного навчання на графових завданнях із застосуваннями для шахрайства та зловживань, графів знань, систем рекомендацій і наук про життя. У вільний час любить читати та готувати.
Від'я Сагар Равіпаті є менеджером Amazon ML Solutions Lab, де він використовує свій величезний досвід роботи з великомасштабними розподіленими системами та свою пристрасть до машинного навчання, щоб допомогти клієнтам AWS у різних галузевих галузях прискорити впровадження ШІ та хмари.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. Доступ тут.
- джерело: 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 Neptune ML
- Служба Amazon OpenSearch
- Amazon SageMaker
- аналітика
- та
- API
- додаток
- додаток
- застосування
- прикладної
- Застосовувати
- підхід
- архітектура
- ПЛОЩА
- асоційований
- Автоматизований
- наявність
- доступний
- AWS
- Обмін даними AWS
- заснований
- оскільки
- КРАЩЕ
- між
- Мільярд
- Box
- театральна каса
- браузер
- будувати
- Створюємо
- Будує
- бізнес
- можливості
- випадків
- каталог
- проблеми
- Вибирати
- клієнт
- хмара
- прийняття хмари
- хмарні сервіси
- кластер
- код
- співробітництво
- комбінований
- Компанії
- компанія
- Компанії
- повний
- Зроблено
- комп'ютер
- Комп'ютерне бачення
- поняття
- Консоль
- постійно
- містить
- зміст
- відповідає
- може
- країни
- створювати
- створений
- створення
- створення
- кредити
- Поточний
- В даний час
- виготовлений на замовлення
- клієнт
- Залучення клієнтів
- Клієнти
- дані
- Обмін даними
- вчений даних
- базами даних
- набори даних
- глибокий
- глибоке навчання
- демонструвати
- продемонстрований
- розгортання
- розгортання
- розгортає
- Отриманий
- описаний
- знищити
- Виявлення
- розвиненою
- розробка
- розвивається
- різний
- прямий
- безпосередньо
- відкриття
- обговорювалися
- розподілений
- розподілені системи
- документ
- документальний фільм
- Ні
- домен
- кожен
- легше
- включіть
- зачеплення
- підвищена
- Що натомість? Створіть віртуальну версію себе у
- Входить
- розваги
- юридичні особи
- Навколишнє середовище
- Event
- НІКОЛИ
- приклад
- обмін
- досвід
- дослідити
- зовнішній
- додатково
- облицювання
- Знайомство
- ФАНТАЗИ
- Рисунок
- філе
- Файли
- знайти
- знахідки
- Перший
- потік
- після
- слідує
- знайдений
- шахрайство
- виявлення шахрайства
- частий
- часто
- від
- повністю
- функція
- функціональні можливості
- функціональність
- Функції
- шлюз
- породжувати
- отримати
- Глобальний
- графік
- графіки
- обробляти
- Заголовки
- допомога
- хіт
- число переглядів
- Як
- How To
- HTML
- HTTPS
- Сотні
- зображення
- здійснювати
- реалізовані
- удосконалювати
- in
- У тому числі
- Augmenter
- індекс
- покажчики
- індекси
- промисловість
- інформація
- вхід
- встановлювати
- екземпляр
- замість
- взаємодія
- інтерактивний
- інтерфейс
- залучати
- IT
- пунктів
- ключ
- знання
- Графік знань
- lab
- мова
- великий
- масштабний
- останній
- запуск
- запуски
- шар
- вести
- УЧИТЬСЯ
- вивчення
- важелі
- бібліотека
- ліцензія
- ліцензування
- життя
- Life Sciences
- обмеженою
- список
- загрузка
- місцевий
- машина
- навчання за допомогою машини
- РОБОТИ
- вдалося
- управління
- менеджер
- вручну
- багато
- карта
- відображення
- карти
- позначити
- матч
- узгодження
- Медіа
- члени
- згаданий
- злиття
- метадані
- мільйона
- хвилин
- ML
- модель
- Моделі
- контрольований
- моніторинг
- місяць
- більше
- фільм
- кіно
- множинний
- Природний
- Обробка природних мов
- сусіди
- Нептун
- на основі мережі
- мереж
- нейронні мережі
- Нові
- вузол
- номер
- отриманий
- Пропозиції
- Office
- ONE
- відкрити
- з відкритим вихідним кодом
- операції
- оптимізований
- порядок
- OS
- Інше
- пакет
- частина
- Пройшов
- пристрасть
- шлях
- Виконувати
- виступає
- заповнювач
- платформа
- Платформи
- plato
- Інформація про дані Платона
- PlatoData
- будь ласка
- пошта
- влада
- Харчування
- практика
- прем'єр-міністр
- Готувати
- представити
- первинний
- Prime
- друк
- проблеми
- процес
- Оброблено
- обробка
- Product
- Production
- забезпечує
- забезпечення
- покупка
- цілей
- Python
- діапазон
- рейтинги
- читання
- готовий
- реального часу
- причина
- Рекомендація
- рекомендації
- актуальність
- доречний
- відповідь
- Звітність
- Сховище
- запросити
- запитів
- вимагається
- ресурс
- ресурси
- відповідь
- REST
- результат
- результати
- утримання
- повертати
- Умови повернення
- прогін
- біг
- мудрець
- то ж
- зберегти
- сценарії
- НАУКИ
- вчений
- Пошук
- розділам
- безпечний
- безпеку
- Серія
- обслуговування
- Послуги
- комплект
- установка
- налаштування
- Повинен
- показаний
- Шоу
- аналогічний
- схожість
- простий
- спрощений
- один
- ситуацій
- рішення
- Рішення
- ВИРІШИТИ
- Вирішує
- деякі
- Source
- Простір
- спеціалізується
- конкретний
- розкол
- стек
- старт
- почалася
- впроваджений
- заходи
- зберігання
- зберігати
- Історія
- потоковий
- підмережі
- такі
- набір
- підтримка
- Systems
- Приймати
- приймає
- завдання
- методи
- термінал
- Команда
- Площа
- суглоб
- їх
- тим самим
- тисячі
- три
- через
- час
- назва
- назви
- до
- топ
- поїзд
- навчений
- Перетворення
- трильйони
- tv
- типовий
- при
- розуміння
- Завантаження
- URL
- використання
- користувач
- Інтерфейс користувача
- використовує
- різноманітність
- величезний
- постачальники
- вертикалі
- Відео
- вид
- Віртуальний
- бачення
- візуалізації
- Web
- Веб-додаток
- веб-браузер
- веб-сайт
- який
- широкий
- Широкий діапазон
- волі
- в
- слово
- слова
- робочий
- працює
- б
- Ти
- вашу
- зефірнет
- зони