Предположим, у вас есть сотни статей / предложений. Вы хотите знать, о каких темах говорится в каждой из этих статей / предложений. В статье с обвинениями в адрес фармацевтической компании могут быть затронуты такие темы, как Правительство, Медицина или Бизнес. Наша цель - назначить эти темы документам.

Одним из методов выполнения этой задачи является вероятностный скрытый семантический анализ (PLSA).

PLSA или вероятностный скрытый семантический анализ - это метод, используемый для моделирования информации в рамках вероятностной структуры. Скрытый, поскольку темы рассматриваются как скрытые или скрытые переменные.

Модель:

PLSA можно понимать двумя разными способами.

  1. Скрытая переменная модель
  2. Факторизация матрицы

Первый поможет вам хорошо понять математику PLSA. А второй способ легко реализовать на Python.

Давайте формально определим переменные, которые появляются в PLSA.

У нас есть три набора переменных

  1. Документы: D = {d1, d2, d3,… dN}, N - количество документов. di обозначает ith документ в наборе D. Примечание. Документ здесь также может означать предложения. Эти два слова взаимозаменяемы.
  2. Слова: W = {w1, w2,… wM}, M - размер нашего словарного запаса. wi обозначает i-е слово в словаре W.
    Примечание. Набор W рассматривается как набор слов. Это означает, что при присвоении индекса i не соблюдается определенный порядок.
  3. Темы: Z = {z1, z2,… zk} - Скрытые или скрытые переменные. Число k - это параметр, указанный нами.

Определив соглашение об именах, давайте рассмотрим первый метод.

Скрытая переменная модель:

Как упоминалось ранее, темы - это скрытые переменные. Единственное, что мы видим, - это слова и комплект документов. В этой структуре мы связываем скрытые переменные с наблюдаемыми.

Мы связываем z с (d, w) тем, что описываем порождающий процесс, в котором мы выбираем документ, затем тему, затем слово. Формально,

  1. Выбираем документ с вероятностью P (d)
  2. Для каждого слова в этом документе dn, wi
    - выберите тему zi из условного распределения с вероятностью P (z | dn). < br /> - Выбрать слово с вероятностью P (w | zi)

Если не совсем понятно, не волнуйтесь. Я математически все поставил вперед. Прежде чем углубляться в уравнения, давайте обсудим два предположения, которые делает модель.

Предположение 1. Набор слов. Как мы обсуждали ранее, порядок слов в словаре не имеет значения. Точнее, объединенная переменная (d, w) выбирается независимо.

Предположение - условная независимость: Одно из ключевых предположений, которое мы делаем, заключается в том, что слова и документы условно независимы. Сосредоточьтесь на слове условно. Это означает -

P(w,d|z) = P(w|z)*P(d|z) — (3)

Модель в рамках вышеупомянутого обсуждения может быть определена следующим образом -

Теперь

Используя условную независимость,

Используя правило Байеса,

Параметры в модели -

  1. P (w | z) - Их (M-1) * K. Как? для каждого z у нас есть M слов. Но поскольку сумма этих M вероятностей должна быть равна 1, мы теряем степень свободы.
  2. P (z | d) - Необходимо определить (K-1) * N параметров.

Вышеуказанные параметры определяются с использованием максимизации ожидания или алгоритма EM для функции правдоподобия.

Функция правдоподобия -

Журнал правдоподобия -

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

Матричная модель факторизации

Альтернативный способ представления PLSA - это матричная модель факторизации.

Рассмотрим матрицу документ-слово размером N * M, где N - количество документов, а M - размер словаря. Элементы матрицы - это количество вхождений слова в документ. Если слово wi встречается один раз в документе dj, тогда element (j, i) = 1.

Если вы думаете об этой матрице, большинство элементов равны 0. Скажем, у нас есть документ из 10 слов и словарный запас из 1000 слов. Естественно, 990 элементов строки будут иметь значение 0. Такая матрица называется разреженной матрицей.

Факторизация матрицы разбивает эту матрицу (назовем ее A) на матрицы более низкого измерения (разложение по сингулярным значениям)

Размеры L, U и R равны N * K, K * K и K * M соответственно.

Матрица U - это диагональная матрица, значения которой представляют собой квадратный корень из собственных значений AA *, где * обозначает транспонирование. Для любого заданного k вы выбираете первые k строк L первых k элементов U и первые k столбцов R. И помните, k - это количество тем, которые мы установили.

Эта модель не сильно отличается от модели со скрытой переменной. Три матрицы можно интерпретировать как -

  1. L содержит вероятности документа P (d | z)
  2. U - диагональная матрица априорных вероятностей тем P (z)
  3. R соответствует вероятности слова P (w | z)

Итак, если вы умножите три матрицы, вы действительно сделаете то, что говорит следующее уравнение:

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

Если вы хотите применить алгоритм на Python, вы можете найти пример здесь.

Спасибо за прочтение! Если вам понравился этот блог, вы можете проверить еще одну мою статью о Вложениях слов и Word2Vec.

Не стесняйтесь делиться своими взглядами. Хотел бы связаться с вами в LinkedIn