Рубрики
Без рубрики

Создайте механизм рекомендаций статьи с AI/ML

Платформы контента процветают при предложении связанного контента для своих пользователей. Более релевантные элементы, которые … с меткой Python, Tutorial, Web Dev, Machine Learning.

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

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

В качестве простого решения, платформа может реализовать механизм рекомендаций на основе тегов-вы прочитали статью «бизнес», поэтому вот еще пять статей с меткой «Бизнес». Тем не менее, еще лучший подход к созданию рекомендательного двигателя – использовать Поиск сходства и алгоритм машинного обучения .

В этой статье мы создадим приложение Python Flask, которое использует Pinecone – Служба поиска сходства – для создания нашего собственного механизма рекомендаций статьи.

Демо -приложение обзор

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

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

Итак, как мы это сделали?

При создании приложения мы впервые нашли Набор данных новостных статей от Kaggle. Этот набор данных содержит 143 000 новостных статей из 15 крупных публикаций, но мы просто используем первые 20 000. (Полный набор данных, из которого получен более двух миллионов статей!)

Затем мы очистили набор данных, переименуя пару столбцов и отбросив те, которые не нужны. Далее мы запустили статьи через модель встраивания, чтобы создать Векторные встраивания – Это метаданные для алгоритмов машинного обучения для определения сходства между различными входами. Мы использовали Средняя модель встроенных слов . Затем мы вставили эти векторные встроения в Векторный индекс Управляется Pinecone.

С добавлением векторных внедрений в индекс, мы готовы начать поиск связанного контента. Когда пользователи отправляют свою историю чтения, предъявляется запрос в конечную точку API, которая использует SDK Pinecone для запроса индекса векторных встроений. Конечная точка возвращает 10 аналогичных новостных статей и отображает их в пользовательском интерфейсе приложения. Вот и все! Достаточно просто, верно?

Если вы хотите попробовать это для себя, вы можете Найдите код для этого приложения на GitHub Анкет Readme Содержит инструкции о том, как запустить приложение локально на вашей собственной машине.

Демо -приложение код приложения

Мы прошли через внутреннюю работу приложения, но как мы его действительно построили? Как отмечалось ранее, это приложение Python Flask, в котором используется SDK Pinecone. HTML использует файл шаблона, а остальная часть фронта построена с использованием статических активов CSS и JS. Чтобы все было просто, весь бэкэнд -код найден в app.py Файл, который мы воспроизведены в полном объеме:

Давайте пойдем по важным частям app.py Файл, чтобы мы это поняли.

На строках 1–14 мы импортируем зависимости нашего приложения. Наше приложение полагается на следующее:

  • dotenv Для чтения переменных среды из .env файл
  • колба Для настройки веб -приложения
  • json Для работы с JSON
  • ОС Также для получения переменных среды
  • Панды Для работы с набором данных
  • Pinecone Для работы с SNK Pinecone
  • репутация Для работы с регулярными выражениями (Regex)
  • Запросы Для получения запросов API для загрузки нашего набора данных
  • Статистика Для некоторых удобных методов статистики
  • Seadence_transformers Для нашей модели встраивания
  • Swifter Для работы с DataFrame Pandas

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

На строках 18–20 мы определяем некоторые константы, которые будут использоваться в приложении. К ним относятся имя нашего индекса Pinecone, имя файла набора данных и количество строк для чтения из файла CSV.

На строках 22–25, наш initiaze_pinecone Метод получает наш ключ API от .env Файл и использует его для инициализации PineCone.

На строках 27–29, наш delete_existing_pinecone_index Метод поиск нашего экземпляра Pinecone для индексов с тем же именем, что и тот, который мы используем («Статья-рекордсмен-сервис»). Если существующий индекс найден, мы удаляем его.

На строках 31–35, наш create_pinecone_index Метод создает новый индекс, используя название, которое мы выбрали («Статья-рекордсмен-сервис»), метрика близости «косинус» и только один осколок.

На строках 37–40, наш create_model Метод использует Seadence_transformers Библиотека для работы со средней моделью встроенных слов. Мы кодируем наши векторные вставки, используя эту модель позже.

На строках 62–68, наш Process_file Метод считывает файл CSV, а затем вызывает PRIPARE_DATA и upload_items методы на нем. Эти два метода описаны дальше.

На строках 42–56, наш PRIPARE_DATA Метод регулирует набор данных, переименуя первое столбец «ID» и отбросив столбец «Дата». Затем он захватывает первые четыре строки каждой статьи и объединяет их с заголовком статьи, чтобы создать новое поле, которое служит данными для кодирования. Мы могли бы создать векторные встраивания на основе всего тела статьи, но будет достаточно четырех строк, чтобы ускорить процесс кодирования.

На строках 58–60, наш upload_items Метод создает векторное встраивание для каждой статьи, кодируя ее, используя нашу модель. Вторжения вектора затем вставляются в индекс Pinecone.

На строках 70–74, наш map_titles и map_publications Методы создают некоторые словаря названий и названий публикаций, чтобы упростить поиск статей по их идентификаторам позже.

Каждый из методов, которые мы описали до сих пор, вызывается на строках 98–104, когда начинается бэкэнд. Эта работа готовит нас к окончательному этапу фактического запроса индекса Pinecone на основе пользовательского ввода.

В строках 106–116 мы определяем два маршрута для нашего приложения: один для домашней страницы и один для конечной точки API. Домашняя страница обслуживает index.html Файл шаблонов вместе с активами JS и CSS, а конечная точка API обеспечивает функциональность поиска для запроса индекса Pinecone.

Наконец, на строках 76–96, наш Query_pinecone Метод берет ввод истории чтения пользователя, преобразует его в векторное встраивание, а затем запрашивает индекс Pinecone, чтобы найти подобные статьи. Этот метод вызывается, когда /api/search Конечная точка достигается, что происходит в любое время, когда пользователь представляет новый поисковый запрос.

Для визуальных учеников, вот диаграмма, в которой работает приложение:

Примеры сценариев

Итак, объединяя все это вместе, как выглядит опыт пользователя? Давайте посмотрим на три сценария: пользователь, заинтересованный в спорте, пользователя, интересующегося технологиями и пользователя, заинтересованного в политике.

Пользователь спорта выбирает первые две статьи о Серене Уильямс и Энди Мюррее, двух известных теннисистах, для использования в качестве истории чтения. После того, как они представили свой выбор, приложение отвечает статьями о Уимблдоне, США Открытом чемпионате, Роджере Федерере и Рафаэле Надале. Нам!

Пользователь технологий выбирает статьи о Samsung и Apple. После того, как они отправляют свой выбор, приложение отвечает статьями о Samsung, Apple, Google, Intel и iPhone. Снова отличные рекомендации!

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

Три на три! Наш механизм рекомендаций оказывается невероятно полезным.

Вывод

Теперь мы создали простое приложение Python для решения реальной проблемы. Если сайты контента могут порекомендовать соответствующий контент своим пользователям, пользователи будут больше пользоваться контентом и будут тратить больше времени на сайте, что приведет к увеличению дохода для компании. Все выигрывают!

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

Оригинал: “https://dev.to/thawkin3/build-an-article-recommendation-engine-with-ai-ml-omc”