Система рекомендаций на основе документов с подобием doc2vec и косинусом

Введение

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

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

И я буду использовать Gensim, библиотеку с открытым исходным кодом для моделирования тем и векторных пространств, чтобы управлять текстовыми документами, для реализации. Он предоставляет простые в использовании API для преобразования и косинусного подобия.

Показатель

  1. Подготовить данные
  2. Предварительная обработка
  3. Моделирование: сходство doc2vec и косинус
  4. Вывод и отчетность
  5. Весь код

1. Подготовить данные

Во-первых, мы собираемся использовать образец набора данных от Gensim. Gensim предоставляет несколько модулей набора данных, которые уже были токенизированы, как показано ниже.

2. Предварительная обработка

Следующий шаг - предварительная обработка. Здесь предварительная обработка - это «тегирование», которое создает отображение каждого предложения с уникальным индексом. Помеченные документы будут использоваться в качестве входных данных для модели doc2vec.

3. Моделирование: подобие doc2vec и косинуса

Моделирование - это главный этап в рекомендательной системе. Здесь также есть два этапа: создание модели doc2vec и вычисление косинусного сходства.

Что такое doc2vec

Doc2vec - это алгоритм преобразования данных документа в модель векторного пространства. Алгоритм основан на word2vec, который представляет слово в модели векторного пространства и широко применяется в предложениях, абзацах и документах.

Doc2vec использует нейронную сеть для сохранения контекстов и семантики слов, в отличие от традиционной модели набора слов, которая исключает контексты и порядок слов для создания простого набора слов для представления. Согласно статье doc2vec улучшил задачу классификации текста на 30%.

Doc2vec моделирование

Gensim предоставляет очень простой API для doc2vec. После подготовки документов с тегами вы можете создать модель doc2vec с одним лайнером.

Описание каждого параметра приводится ниже. * Цитата из документации gensim.

  • Documents: (итерация списка TaggedDocument, необязательно)
    Входной корпус может быть просто списком элементов, но для больших корпусов рассмотрите итерацию, которая передает документы прямо с диска / сети. Если вы не предоставите документы, модель останется неинициализированной - используйте, если вы планируете инициализировать ее каким-либо другим способом.
  • vector_size
    vector_size (целое число, необязательно) - Размерность векторов признаков.
  • окно
    Максимальное расстояние между текущим и предполагаемым словом в предложении.
  • min_count
    Игнорирует все слова с общей частотой ниже этой.
  • рабочие
    Используйте эти рабочие потоки для обучения модели (= более быстрое обучение на многоядерных машинах).

Реализация косинусного подобия

Далее нужно получить похожие предложения с косинусным сходством. Gensim предоставляет метод most_similar () для получения похожих предложений путем ранжирования.

4. Вывод и отчетность

Последний шаг - вывод и отчет. Окончательный результат должен быть понятен всем, кто участвует в вашей работе. Здесь я создал таблицу ранжирования, чтобы показать, какие предложения наиболее похожи. Я использовал библиотеку Pandas, чтобы сделать таблицу более наглядной.

Как видите, первая колонка «ранг» показывает порядок ранжирования. Второй столбец «common_texts» - это тестовый набор данных, предоставленный gensim. В-третьих, косинусное подобие. Эта таблица интуитивно понятна на первый взгляд.

Весь код

Здесь я показываю весь код ниже.

Вывод

В этой статье я шаг за шагом объяснил, как реализовать рекомендательную систему с помощью Python. Сначала была подготовка набора данных от Gensim. Во-вторых, предварительная обработка путем добавления тегов к исходным документам. Третий - создание модели word2vec и вычисление косинусного сходства с API Gensim. Наконец, я сделал таблицу с библиотекой Pandas для визуализации вывода. Надеюсь, эта статья поможет вам в развитии. Если у вас возникнут вопросы, вы обнаружите опечатки или ошибки, оставьте, пожалуйста, комментарии. Спасибо!