Прежде чем начать создавать модель, мы внимательно изучили несколько статей и пришли к следующим выводам:
Каждое сообщение будет прогоняться через модель, которая будет выдавать эмбеддинг "темы" сообщения (Задача - Topic Modeling). Предполагаем, что в одном сообщении содержится только одна тема (большинство людей пишет небольшие сообщения на одну тему).
Данный подход позволяет абстрагироваться от "ключевых слов" в пользу анализа смыслового содержания сообщения.
Основная модель - BERT. Будет использована для выявления эмбеддинга "темы" сообщения.
Причины:
Есть два варианта описания тем сообщений:
Несмотря на то, что поиск по обратному индексу значительно быстрее, чем KNN, заранее заданные классы тем ограничивают нас в количестве возможных вариантом тем. Эмбеддинги в этом плане являются более гибким решением.
Было решено использовать эмбеддинги, так как ограничение на заранее заданные классы тем не позволяют динамично оперировать с сообщениями о новых разработках, необычных темах и т.д.
Темы, представленные в виде эмбеддинга, имеет смысл кластеризовать, чтобы получить один эмбеддинг на тему.
Это позволяет упростить поиск, так как нам не нужно будет проходить по всем сообщениям - достаточно найти ближайшую тему среди кластеризованных, затем искать сообщения, находящиеся в кластере выбранной темы.
В качестве "кластеризатора" был выбран HDBSCAN, так как он является sota алгоритмом для кластеризации. Он также используется в Top2Veс.
В качестве модели-прототипа был выбран Top2Vec.
Причины:
Статьи:
Хорошие статьи, объясняющие принцип работы моделей:
Последнее изменение:
Владимир Ригвава @vgrigvava
December 17, 2020, 8:28 PM
Над этой страницей работали: Владимир Ригвава @vgrigvava,
Григорий Хромов @gakhromov