ProfMoriarti принцип работы LDA(Latent Dirichlet Allocation
- Латентное размещение Дирихле) и то, как применять его на практике. Примеры обучения LDA часто демонстрируются на "образцовых" датасетах, например "20 newsgroups dataset", который есть в sklearn.
Особенностью обучения на примере "образцовых" датасетов является то, что данные там всегда в порядке и удобно сложены в одном месте. При обучении продакшн моделей, на данных, полученных прямиком из реальных источников все обычно наоборот:
Много выбросов.
Неправильная разметка(если она есть).
Очень сильные дисбалансы классов и 'некрасивые' распределения каких-либо параметров датасета.
Для текстов, это: грамматические ошибки, огромное кол-во редких и уникальных слов, многоязычность.
Неудобный способ харнения данных(разные или редкие форматы, необходимость парсинга)
Для начала, рассмотрим, что вообще делает LDA и в каких задачах используется.
Наиболее часто LDA применяется для Topic Modeling(Тематическое моделирование) задач. Под такими задачами подразумеваются задачи кластеризации или классификации текстов - таким образом, что каждый класс или кластер содержит в себе тексты со схожими темами.
Для того, чтобы применять к датасету текстов(далее корпус текстов) LDA, необходимо преобразовать корпус в term-document matrix(Терм-документная матрица).
Терм-документная матрица - это матрица которая имеер размер $N \times W$, где
N - количество документов в корпусе, а W - размер словаря корпуса т. е. количество слов(уникальных) которые встречаются в нашем корпусе. В i-й строке, j-м столбце матрицы находится число - сколько раз в i-м тексте встретилось j-е слово.
LDA строит, для данной Терм-документной матрицы и T заранее заданого числа тем - два распределения:
Распределение тем по текстам.(на практике задается матрицей размера $N \times T$)
Распределение слов по темам.(матрица размера $T \times W$)
Значения ячеек данных матриц - это соответственно вероятности того, что данная тема содержится в данном документе(или доля темы в документе, если рассматривать документ как смесь разных тем) для матрицы 'Распределение тем по текстам'.
Для матрицы 'Распределение слов по темам' значения - это соотв-но вероятность встретить в тексте с темой i слово j, качествено, можно рассматривать эти числа как коэффициенты характеризующие, то насколько данное слово характерно для данной темы.
Следует сказать, что под словом тема понимается не 'житейское' определение этого слова. LDA выделяет T тем, но что это за темы и соответствуют ли они каким-либо известным темам текстов, как например: 'Спорт', 'Наука', 'Политика' - неизвестно. В данном случае, уместно скорее говорить о теме, как о некой абстрактной сущности, которая задается строкой в матрице распределения слов по темам и с некоторой вероятностью соответствует данному тексту, если угодно можно представить ее, как семейство характерных наборов слов встречающихся вместе, с соответствующими вероятностями(из таблицы) в некотором определенном множестве текстов.