Тематические модели: скрытое размещение Дирихле
В обработке естественного языка тематические модели являются важными статистическими инструментами для обнаружения скрытых структур в коллекции документов. В этом руководстве мы обсудим тематические модели и LDA (скрытое распределение Дирихле), которое является одной из самых известных и полезных тематических моделей.
Тематические модели -
Начнем с определения некоторых терминов.
Документы: мы будем рассматривать документы как мешки со словами. Например, документ, соответствующий следующему тексту - В вычислительной биологии мы анализируем структуры ДНК и РНК, используя сложные инструменты моделирования. будет [вычислительный, биология, анализировать , ДНК, РНК, структуры, комплекс, моделирование, инструменты]. Обратите внимание, что мы удалили такие стоп-слова, как in, we, using и т. Д.
Тема: тема - это набор слов, которые "семантически" похожи. Например, в приведенном выше тексте есть две темы -
- Тема 0: [«биология», «ДНК», «РНК», «структуры»]
- Тема 1: [«вычисления», «анализ», «моделирование», «инструменты»]
Интуитивное значение тем. Учитывая, что документ посвящен определенной теме, мы предполагаем, что некоторые конкретные слова будут появляться в документе чаще. Например - в документах, относящихся к «биологии», такие слова, как «биология», «ДНК», «РНК» будут встречаться чаще, а в документах, относящихся к «вычислениям», такие слова, как «вычислительные», «анализировать», «Симуляция» появлялась бы чаще. Такие слова, как «a», «an», «the» могут встречаться в обоих типах документов.
Условия. Термины могут соответствовать как отдельным словам, так и фразам (н-граммы). В этом уроке мы будем рассматривать их как слова.
Например, пусть наш документ будет… [«вычисление», «биология», «анализ», «ДНК», «РНК», «структуры», «комплекс», «моделирование», «инструменты»]. Если мы рассматриваем слова как термины, то наши термины будут - «вычислительный», «биология» и т. Д., А если мы рассмотрим биграммы как наши термины, то наши термины будут - «вычислительная биология», «анализ биологии», так далее…
Что такое тематические модели. Тематические модели используются для вывода основной тематической структуры в коллекции документов.
Скрытое размещение Дирихле -
LDA - это генеративная вероятностная модель. В LDA мы пытаемся оценить два типа вероятностных распределений.
Первая - это матрица документ-тема (мы визуализируем распределение в виде матрицы). Это описывает распределение по темам данного конкретного документа. Обратите внимание, что в сумме строк этой матрицы получается 1.
Второй - это матрица тема-термин. Это описывает распределение терминов по определенной теме. Строки этой матрицы тоже дают в сумме 1.
Процесс генерации LDA: LDA предполагает, что документы создаются следующим образом:
- Выберите уникальный набор терминов. Это словарный запас. Пусть его размер будет V.
- Выберите количество документов, D.
- Для каждого документа выберите количество терминов для этого документа путем выборки из распределения Пуассона.
- Выберите количество тем, K.
- Для каждого документа d от 1 до D,
--- Draw a sample of dimension K from a Dirichlet distribution. --- The Dirichlet distribution takes in a parameter α (a positive valued vector) and returns a simplex, which is a positive valued vector and sums to 1. [More about Dirichlet distribution in the next section] --- Assign this sample as the topic-proportion for the document d.
По сути, мы построили матрицу «Документ-Тема» на основе описанного выше процесса.
7. Для каждой темы k от 1 до K,
--- Draw a sample of dimension V from a Dirichlet distribution. --- Assign this sample as the distribution-over-terms for the topic k.
По сути, мы построили нашу матрицу тема-термин на основе описанного выше процесса.
8. Теперь мы попытаемся сгенерировать документы D из двух вышеупомянутых распределений (матрица документ-тема и матрица тема-термин). Для каждого документа d от 1 до D ,
--- Look at the row corresponding to document d in the Document-Topic matrix. The row corresponds to the topic-proportion of the document d. --- Sample a topic from this topic-proportion. --- Look at the row corresponding to the sampled topic in the Topic-Term matrix. The row corresponds to the distribution-over-terms for the sampled topic. --- Sample a term from this distribution-over-terms. --- Repeat until the document d has number of terms which it was set to have (sampled using the Poisson distribution).
Это процесс генерации, который LDA предполагает для сбора документов. С точки зрения непрофессионала, поскольку мы наблюдали «настоящие» документы, LDA пытается реконструировать и найти набор тем, матрицу «тема-термин» и матрица «документ-тема», которые с наибольшей вероятностью сгенерируют документы, которые у нас есть.
Вышеупомянутый генеративный процесс можно объяснить следующей пластинчатой структурой.
Здесь θ представляет матрицу документ-тема, а ϕ представляет матрицу тема-термин. Z представляет собой тему, выбранную нами из тематических пропорций документа d.
Распределение Дирихле -
Распределение Дирихле - это экспоненциальное семейное распределение по симплексу. Симплекс - это векторы с положительными значениями, сумма которых равна 1. Распределение Дирихле можно математически описать как -
- Параметр α управляет средним значением, формой и разреженностью θ.
- Пропорции тем для каждого документа - это K размерный Дирихле. Учитывая, что у нас есть K тем.
- Распределение терминов по каждой теме - это V -мерный Дирихле. Учитывая, что в нашем словаре есть V терминов.
Чтобы визуализировать эффект α в трехмерном распределении Дирихле, вы можете перейти по следующей ссылке - http://blog.bogatron.net/blog/2014/02/02/visualizing-dirichlet -распространения /
Обучение по свернутой выборке Гиббса -
Неплохо было бы прочитать по этой ссылке стартер о семплировании Гиббса. Теперь предположим, что у нас есть документы D, и мы хотим найти в них скрытую структуру тем. Во-первых, мы выбираем фиксированное количество тем для изучения, K.
У нас есть следующий алгоритм -
- Для каждого документа d от 1 до D,
--- Randomly assign each word in the document to one of the K topics.
2. У нас есть исходные (случайные) матрицы документ-тема и тема-термин. Теперь мы хотим их улучшить.
3. Для каждого документа d от 1 до D,
For each word w in the document d, compute - 1. P(topic = t | document = d) = (number of words in d that are assigned to topic t + α)/(total number of words in d + number of topics * α) 2. P(word = w | topic = t) = (number of times word w is assigned to topic t across all documents + β)/(total number of words assigned to topic t across all documents + vocabulary size * β) 3. Here, 0 < α < 1 and 0 < β < 1 are hyper-parameters. Using them can be thought of as similar to L1 regularization. 4. Now, we reassign a topic to w, we choose t from the probability distribution = P(topic = t | document = d) x P(word = w | topic = t). This is as per the generative process assumption by LDA. 5. We repeat the above steps for some number of iterations, after which our topic assignments become steady.
В следующем руководстве мы увидим, как реализовать LDA с нуля на Python. А пока мы просто посмотрим, как использовать очень популярный пакет Python для LDA.
LDA в Python
Вы можете использовать пакет lda из lda-project в Python для выполнения LDA. Это LDA с использованием свернутой выборки Гиббса. Интерфейс этого пакета следует соглашениям, найденным в scikit-learn.
Пример (источник - https://github.com/lda-project/lda), демонстрирующий использование этого пакета -
Установка:
pip install lda
Использование:
>>> import numpy as np >>> import lda >>> import lda.datasets >>> X = lda.datasets.load_reuters() # X is a Document-Term matrix >>> vocab = lda.datasets.load_reuters_vocab() # tuple of all words in the vocabulary >>> model = lda.LDA(n_topics = 10, n_iter = 1000, random_state = 7) >>> model.fit(X) # scikit-learn style >>> topic_term = model.topic_word_ # Topic-Term matrix >>> n_top_words = 5 # print 5 words from each topic >>> for i, topic_dist in enumerate(topic_word): ... topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n_top_words+1):-1] ... print('Topic {}: {}'.format(i, ' '.join(topic_words)))
Вывод:
Topic 0: police miami versace cunanan wright Topic 1: elvis film music fans show Topic 2: yeltsin president political russian russia Topic 3: city million art century exhibition Topic 4: charles prince king royal diana Topic 5: germany against french war rights Topic 6: church people years year told Topic 7: pope mother teresa vatican order Topic 8: harriman clinton u.s churchill ambassador Topic 9: died church bernardin life president
Это оно! Если вам понравилась эта статья, дайте мне знать в ответах! В следующий раз я вернусь к реализации LDA на Python с нуля.