[БЕЗ_ЗВУКА] Всем привет! Меня зовут Надя, и я расскажу вам про практические аспекты применения тематических моделей. В этом видео мы кратко и без математики резюмируем материал лекции, чтобы разобраться, в каких ситуациях в жизни вам могут пригодиться тематические модели. Затем мы рассмотрим инструменты, с помощью которых вы можете строить тематические модели на своих DataSet. Тематические модели — это еще один вид матричного разложения, но на этот раз оно адаптировано под текст. Коллекция текстовых документов здесь представляется как матрица частот слов. Причем эта матрица, как правило, сильно разрежена. В курсе вы уже встретились с несколькими видами матричного разложения, например метод главных компонент или неотрицательные матричные разложения. Разложение позволяет аппроксимировать исходную матрицу в виде произведения двух матриц низшего ранга. Чем больше промежуточная размерность, тем точнее аппроксимация. Разные виды матричных разложений отличаются, во-первых, ограничениями, которые накладываются на матрицы, и, с другой стороны, отличаются метрикой, по которой мы будем искать меру схожести произведения нашей матрицы с исходной матрицей. Тематические модели решают одну из популярных проблем машинного обучения, а именно интерпретируемость модели. Здесь вы можете не просто построить матричное разложение, то есть получить много чисел, но понять, что означают эти числа. Сначала стоит интерпретировать матрицу Φ, то есть матрицу распределений слов в темах. Если в каждом столбце, то есть в каждой теме, найти наиболее вероятные термины для этой темы, то вы сможете понять, о чем эта тема, и дать ей название. После этого вы можете интерпретировать вторую матрицу — матрицу Θ, то есть матрицу распределения тем в документах. Для каждого документа можно будет найти наиболее релевантные ему темы и таким образом понять, каков смысл этого документа. Тематическое матричное разложение приближает исходную матрицу частот по псевдометрике, называемой дивергенция Кульбака–Лейблера, про которую вам рассказали на лекциях. Что касается промежуточной размерности, то есть количества тем, то их нужно выбирать... то это количество можно выбирать несколькими способами. Чаще всего пробуют разные значения и каждый раз смотрять, хорошие или плохие получились темы. То есть нужно выбрать такое количество, при котором у вас не будет повторений тем, но в то же время вы увидите все темы, которые вы встретили в процессе обучения. Другой способ — это выбирать количество тем по какому-то критерию. Однако часто бывает сложно выбрать критерий, который будет не зависеть от количества тем и позволит выбрать оптимальное число. Кроме того, иногда количество тем следует из семантики задачи. Это наиболее удачный вариант. В интерпретируемости тематических моделей состоит их основная прелесть. То есть если у вас есть какое-то большое количество документов, например миллионы твитов, которые вы скачали, то чем просматривать все эти документы, вы можете построить на них тематическую модель, ну например, для твитов это будет несколько сотен тем, ну скажем, 200 или 300, и затем просмотреть эти темы. Это займет гораздо меньше времени, чем просмотр миллионов твитов, и вы сможете выбрать темы, которые вам могут быть потенциально интересны, и просмотреть только эти твиты. Таким образом вы сузите множество документов, которые вы хотите просматривать. А если воспользоваться также другими способами, средствами автоматического анализа текстов, например суммаризацией или автоматическим именованием тем, то можно автоматически строить целые навигаторы по коллекции текстовых документов. Пример такого навигатора приведен на слайде. Здесь документы выводятся по темам. В качестве документов выступают статьи Википедии. Для каждой темы также выводятся топы терминов и темы, которые похожи на данную тему. Интересная особенность тематических моделей состоит в том, что они проникли в самые разные сферы анализа данных. Тематические модели используют и в поисковых машинах, и в рекомендательных системах, при анализе биологических последовательностей, при медицинской диагностике и даже при распознавании изображений. Я покажу два примера. Эти изображения взяты из одной статьи на Хабрахабре, в которой разработчики рассказывали, как они применяли тематические модели для задачи рекомендации пользователям веб-страниц. Они поступили следующим образом: они в качестве матрицы частот слов задали матрицу популярности отдельных страниц для пользователя. То есть в качестве документов у них выступали пользователи, а в качестве слов — отдельные страницы. Они построили темы и выяснили, что страницы, которые входят в одну тему, действительно семантически похожи друг на друга. Чтобы визуализировать слова, авторы статьи нашли самые частые слова, которые встречались в документах какой-то темы в веб-страницах и изобразили их в виде облака тегов. И мы можем видеть, что одна тема связана с природой и пейзажами, фотографированием, а вторая — с сериалами и мультфильмами. Другой пример — это применение тематических моделей в поисковых машинах. В частности, они нужны в тот момент, когда нам нужно выбрать документы, которые потенциально могут быть релеванты запросу. Если это делать только по словам, то есть выбирать те документы, в которых встречаются те же слова, что и в запросе, то могут возникнуть неприятные ситуации — пример, который приведен на слайде. Здесь и в левом, и в правом документе встречаются слова keys и note, но в левом документе они имеют значение «ключи» и «записка», а в правом «клавиши» и «ноты». Таким образом, если наш запрос связан с пианино, как, например, на слайде, правый документ нам подходит и левый — нет. Предполагается, что тематические модели позволят отличить правый документ от левого за счет построения тематического профиля. Однако применение тематических моделей в таких нестандартных задачах обычно требует усложнения модели и, как следствие, необходимость отдельной реализации алгоритма обучения. Мы с вами рассмотрим классические тематические модели и несколько подходов к их построению. Один из первых подходов к построению тематических моделей был предложен в 1999 году и назывался «вероятностный латентный семантический анализ». Здесь буквально ставилась задача матричного разложения, то есть разложения матрицы частот слов, с дополнительными условиями, что столбцы двух матриц должны быть вероятностными распределениями. Решать такую задачу предполагалось самым стандартным методом статистики — методом максимального правдоподобия. В 2003 году эта задача была рассмотрена с вероятностной, даже с байесовской постановки, и здесь выполняется такое же матричное разложение, только вместо матриц уже используется распределение над этими матрицами. Этот подход получил название «латентное размещение Дирихле». Стоит отметить, что латентное размещение Дирихле на сегодня очень популярно, и это самая изученная, самая используемая модель тематического моделирования. Кроме того, как раз таки многие усложнения, совершенствования моделей делаются именно для модели LDA. Наконец, не так давно был разработан подход, получивший название «аддитивная регуляризация тематических моделей». В нем предполагается ввести дополнительные критерии (или регуляризаторы) в модель PLSA, за счет чего модель получается более гибкой, и ее как раз таки удобно адаптировать для разных задач, не только для простой задачи анализа текстов. Об ARTM вам очень много рассказали на лекции. Что же лучше из этих подходов? Основное преимущество LDA состоит именно в ее популярности. Если вам нужно применить тематическую модель к какой-то нестандартной задаче, ну или просто к любой задаче, например, вы решили тематизировать да те же самые твиты. Вы делаете гугл-запрос в стиле topic modelling for twit analysis и получаете ссылки на статьи, в которых, скорее всего, авторы рассказывают, как они применили LDA к анализу твитов, именно LDA. Но здесь кроется и недостаток этой модели. Дело в том, что для любого усложнения приходится заново реализовывать алгоритм, то есть искать новую реализацию. И нет реализации, которая бы умела все. С другой стороны, часто можно применять просто LDA, и тогда это очень удобно. В ARTM за счет мощного аппарата регуляризаторов можно строить какие-то усложнения модели в одной и той же реализации, и это удобно. Кроме того, в обоих методах нужно настраивать параметры, так что по этому показателю и ARTM, и LDA примерно равнозначны. Мы с вами рассмотрим две реализации тематических моделей. Для LDA мы рассмотрим реализацию в библиотеке gensim. Ее мы выбрали потому, что в gensim помимо тематических моделей реализованы также и другие алгоритмы для анализа текстов, и они понадобятся вам в следующих курсах. ARTM развивается параллельно со своей основной реализацией, которая именуется BigARTM. Это библиотека, которая написана в C++, но имеет очень удобный интерфейс для Python, которым мы и будем пользоваться. Gensim реализован в парадигме использования функций. То есть вы вызываете отдельные функции, получаете результат работы и присваиваете каким-то переменным. BigARTM реализован в объектно-ориентированном стиле. Вы создаете класс модели, дальше даете инструкции, что делать дальше, и если вам нужны какие-то параметры модели, то вы вызываете их отдельным методом. BigARTM — это чуть более гибкий инструмент, чем gensim, за счет аппарата регуляризаторов и модальностей, поэтому для него приходится писать чуть больше кода. В этом плане применение gensim несколько легче. Однако BigARTM быстрее обучает свои модели. Это связано с тем, что модель LDA алгоритмически более сложна. Обе библиотеки позволяют импортировать данные в нескольких форматах. Самый распространенный формат — это формат UCI Bag of Words. Мы его рассмотрим в одной из демонстраций. Однако этот формат не очень интуитивно понятен для человека, потому что, смотря на данные, невозможно увидеть сами тексты и понять, что вот это именно тексты. С другой стороны, этот формат очень компактный. BigARTM также позволяет работать с форматом данных, называемым vowpal wabbit. Его мы тоже рассмотрим в одной из демонстраций. Тематическое моделирование используется при решении самых разных задач: при решении социологических задач, прикладных задач анализа данных, для визуализации и упрощения навигации по коллекциям. Поэтому мы выделили этой теме отдельный модуль и два практических задания. В следующих видео мы рассмотрим примеры, как можно применять библиотеки gensim и BigARTM для построения тематических моделей.