Система рекомендаций на основе документов с подобием doc2vec и косинусом
Введение
В этой статье объясняется, как создать систему рекомендаций по статьям с помощью Python, шаг за шагом. Система рекомендаций по статьям является одной из самых популярных систем обработки естественного языка и может применяться к другим продвинутым системам, таким как система категоризации и фильтрации.
Я объясню косинусное сходство, меру сходства между документами, как наиболее популярный и простой алгоритм рекомендаций. Он просто вычисляет степень близости статей с скалярным произведением.
И я буду использовать Gensim, библиотеку с открытым исходным кодом для моделирования тем и векторных пространств, чтобы управлять текстовыми документами, для реализации. Он предоставляет простые в использовании API для преобразования и косинусного подобия.
Показатель
- Подготовить данные
- Предварительная обработка
- Моделирование: сходство doc2vec и косинус
- Вывод и отчетность
- Весь код
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 для визуализации вывода. Надеюсь, эта статья поможет вам в развитии. Если у вас возникнут вопросы, вы обнаружите опечатки или ошибки, оставьте, пожалуйста, комментарии. Спасибо!