Когда вы смотрите свою любимую песню на YouTube, читаете интересующий вас блог на Medium и совершаете покупки на Amazon, вы получаете рекомендации, основанные на ваших интересах, и в большинстве случаев эти рекомендации вам нравятся. Здесь мы обсудим, как мы можем построить такие RecSys от начала до конца. Я обещаю, что вы создадите свою собственную систему рекомендаций, если просто будете следовать этому блогу.

Бизнес-проблема

В наши дни на многих конференциях и в журналах выходит огромное количество научных статей. В этих обстоятельствах большинство исследователей полагаются на поиск по ключевым словам или просмотр материалов ведущих конференций и журналов, чтобы найти связанные с ними работы. Чтобы облегчить эту трудность, мы предлагаем персонализированную систему рекомендаций по научным исследованиям, которая рекомендует каждому исследователю связанные статьи, которые могут быть интересны ему/ему. В этой статье мы впервые представляем наш веб-краулер для извлечения исследовательских работ из Интернета. Затем мы определяем сходство между двумя исследовательскими работами на основе сходства текста между ними. Наконец, мы предлагаем нашу рекомендательную систему, разработанную с использованием методов совместной фильтрации. Результаты нашей оценки показывают, что наша система рекомендует исследовательские работы хорошего качества.

Система рекомендаций на основе контента

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

Пример: если пользователю нравится роман Сидни Шелдона «Расскажи мне свои сны», то рекомендательная система рекомендует пользователю прочитать другие романы Сидни Шелдона или рекомендует роман в жанре «научная литература». (Романы Сидни Шелдона относятся к жанру научной литературы).

Как я упоминал выше, мы используем данные goodreads.com и не имеем истории чтения пользователей. Поэтому мы использовали простую систему рекомендаций на основе контента. Мы собираемся построить две системы рекомендаций, используя название книги и описание книги.

Нам нужно найти книги, похожие на данную книгу, а затем порекомендовать эти похожие книги пользователю. Как мы находим, является ли данная книга похожей или непохожей? Для этого использовалась мера подобия.

Данные

Журнальный набор данных — это зеркало исходных данных ArXiv. Поскольку полный набор данных довольно велик, этот набор данных предоставляет только файл метаданных в формате json. Этот файл содержит запись для каждой статьи, содержащую:

id: ArXiv ID (можно использовать для доступа к статье, см. ниже)

submitter: Кто отправил документ

authors: Авторы статьи

title: Название доклада

comments: дополнительная информация, например, количество страниц и рисунков.

journal-ref: Информация о журнале, в котором опубликована статья

doi: [https://www.doi.org] (цифровой идентификатор объекта)

abstract: Аннотация статьи

categories: Категории/теги в системе ArXiv

versions: История версий

Исследовательский анализ данных

В EDA мы увидим только визуализации данных и их описательный анализ, вы можете увидеть весь код EDA на GitHub. Он прост для понимания, удобочитаем и поддерживается в хорошем состоянии, так как я обещаю, что вы получите всесторонний опыт в этом блоге. Сам набор данных исследовательских работ очень велик, поэтому вместо того, чтобы брать все данные, давайте выберем только те исследовательские работы, которые опубликованы после 2020 года, что составляет 336 303 миллиона.

Название

  1. Количество слов в заголовке 75% статей составляет 12 слов на статью.
  2. Максимальное количество слов для заголовка составляет 43 слова, а минимальное — 1 слово.
  3. Мы видим, что есть 3 повторяющихся заголовка с уникальным идентификатором.

Абстрактный

  1. Количество слов в аннотации для 74% научных работ составляет 198 слов на статью.
  2. Максимальное количество слов для аннотации — 498 слов, минимальное — 3 слова.
  3. У нас также есть 2 дубликата реферата в нашем наборе данных.

Общая категория

  1. 75% статей относятся не более чем к 2 общим категориям.
  2. Максимальное количество общих категорий в статье — 6, минимальное — 1.
  3. Максимальный артикул относится к категории «CS» — 83632 с 2021 года.

Категория (подкатегория)

  1. 75% статей относятся не более чем к 2 подкатегориям.
  2. Максимальное количество подкатегорий в статье – 8, минимальное – 0.
  3. У нас есть 29492 статьи, подкатегория которых не отмечена тегами.

Предварительная обработка данных

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

Удалить знаки препинания

Следующий код удаляет этот набор символов [!"#$%&’()*+,-./:;‹=›?@[\]^_`{|}~]:

Удалить стоп-слова

В общем, стоп-слова — это самые распространенные слова в языке, такие как «and», «an», «at» в английском языке, которые считаются ненужными и бесполезными в приложениях для анализа текста. Этими словами могут быть местоимения (я, мне, мой, мой, сам и др.), предлоги (на, в, рядом, позади, под, вокруг и др.), союзы (однажды, до, когда, почему, с тех пор, как , после и т. д.), артикли (a, an, the) и вспомогательные глаголы (be, do, have, will, can, may и т. д.).

лемматизация

Цель лемматизации[1], как и стемминга, состоит в том, чтобы свести флективные формы к общей базовой форме. В отличие от стемминга, лемматизация не просто отсекает перегибы. Вместо этого он использует лексические базы знаний для получения правильных базовых форм слов.

Стемминг

Цель определения основы состоит в том, чтобы взять слова в том виде, в каком они встречаются в тексте, чтобы свести их к корневым формам, удалив их аффиксы, такие как префиксы (обрезая начало слова) и суффиксы (обрезая конец слова) в соответствии с некоторые грамматические правила.

Мы можем применить основу к производным слова, таким как число (кошка, кошки), время (играть, играть, играть), род (актер, актриса), местоимения (я, мне, мой, мой), лицо (ненависть, ненавидит ) и аспект (стать, стал). Например, слова «выбрать», «выбрать», «выбрать», «выбрать все» могут быть образованы словом «выбрать». Как видно, мы обрезаем окончания слов, семантически связанных с их корневой формой. Таким образом, мы уменьшаем количество слов в памяти и экономим время.

Преобразование данных и моделирование данных

Все в машинном обучении — это числа, будь то текст, изображение или аудиоданные, в конце мы должны преобразовать наши данные в числа.

Давайте обсудим технику, которую мы собираемся использовать для преобразования данных.

Векторизатор TF-IDF

TF-IDF расшифровывается как частота документа, обратная частоте. Вес TF-IDF — это статистическая мера, используемая для оценки того, насколько важно слово для документа в коллекции или корпусе. Важность возрастает пропорционально количеству раз, которое слово встречается в документе, но компенсируется частотой этого слова в корпусе.

  • Частота термина (TF): оценка частоты слова в текущем документе. Поскольку каждый документ имеет разную длину, вполне возможно, что термин будет встречаться в длинных документах гораздо чаще, чем в более коротких. Частота термина часто делится на длину документа для нормализации.

  • Обратная частота документа (IDF): это оценка того, насколько редко слово встречается в документах. IDF — это показатель того, насколько редко встречается термин. Чем реже термин, тем больше оценка IDF.

Word2vec

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

Моделирование данных

Здесь моделирование данных будет выполняться на основе косинусного подобия, мы не собираемся проводить какое-либо обучение.

Основная функциональность —

  • Преобразуйте данные в числа, выбрав любой из методов от Bag of Words, TF-IDF или Word до Vec.
  • Когда пользователь выбирает любой журнал, он берет заголовок, аннотацию или оба и находит расстояние между выбранным журналом и остальными журналами, которые хранятся в базе данных. Отсортируйте расстояния в порядке возрастания и покажите пользователю те журналы, у которых расстояние меньше.

В приведенном ниже коде у нас есть функция bagOfWords_tfidf_model, которая принимает параметр doc_id (идентификатор выбранного документа журнала), num_result (количество рекомендаций), данные (текстовые данные) и функции (преобразованные данные после tfidf или BOW).

  • Если вы видите код в строках 2 и 17 ниже, мы использовали функцию pairwise_distance, которая используется для нахождения сходства косинусов.
  • Строка-4: Отсортируйте расстояние в порядке возрастания.
  • Строка 8–13: выбрать запись из набора данных.

Полученные результаты

Рекомендация журнала на основе названия

Рекомендация журнала на основе реферата

Рекомендация журнала на основе названия и аннотации

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

Ссылки

[1] МУХИТТИН ИШИК— Влияние предварительной обработки текста на обработку при прогнозировании изменения рейтингов отзывов

[2] Введение в набор слов в НЛП



https://arxiv.org/pdf/1701.04783.pdf