В этом примере показано, как визуализировать кластеризацию документов с помощью модели темы Скрытого выделения Дирихле (LDA) и графика t-SNE.
Модель скрытого выделения Дирихле (LDA) является моделью темы, которая обнаруживает базовые темы в наборе документов и выводит вероятности слова в темах. Векторы из вероятностей слова на тему характеризуют темы. Можно оценить подобие документа с помощью модели LDA путем сравнения вероятностей на тематику документа, также известных как смеси темы.
Загрузите модель LDA factoryReportsLDAModel
который обучен с помощью набора данных отчетов фабрики, детализирующих различные события отказа. Для примера, показывающего, как подбирать модель LDA к набору текстовых данных, смотрите, Анализируют текстовые Данные Используя Модели Темы.
load factoryReportsLDAModel
mdl
mdl = ldaModel with properties: NumTopics: 7 WordConcentration: 1 TopicConcentration: 0.5755 CorpusTopicProbabilities: [0.1587 0.1573 0.1551 0.1534 0.1340 0.1322 0.1093] DocumentTopicProbabilities: [480×7 double] TopicWordProbabilities: [158×7 double] Vocabulary: [1×158 string] TopicOrder: 'initial-fit-probability' FitInfo: [1×1 struct]
Визуализируйте темы с помощью облаков слова.
numTopics = mdl.NumTopics; figure tiledlayout("flow") title("LDA Topics") for i = 1:numTopics nexttile wordcloud(mdl,i); title("Topic " + i) end
t-distributed стохастический сосед, встраивающий (t-SNE) проекты алгоритма высоко-размерные векторы к 2D пробелу. Это встраивание дает возможность визуализировать подобие между высоко-размерными векторами. Путем графического вывода смесей тематики документа согласно t-SNE алгоритму можно визуализировать кластеризацию аналогичных документов.
Спроектируйте смеси темы в DocumentTopicProbabilties
свойство в 2D пробел с помощью tsne
функция.
XY = tsne(mdl.DocumentTopicProbabilities);
Для групп графика идентифицируйте главную тему для каждого документа.
[~,topTopics] = max(mdl.DocumentTopicProbabilities,[],2);
Для меток графика найдите лучшие три слова для каждой темы.
for i = 1:numTopics top = topkwords(mdl,3,i); topWords(i) = join(top.Word,", "); end
Постройте спроектированные смеси темы с помощью gscatter
функция. Задайте главные темы как сгруппированную переменную и отобразите легенду с главными словами для каждой темы.
figure gscatter(XY(:,1),XY(:,2),topTopics) title("Topic Mixtures") legend(topWords, ... Location="southoutside", ... NumColumns=2)
График t-SNE подсвечивает кластеры, происходящие в исходных высоко-размерных данных.
tokenizedDocument
| fitlda
| ldaModel
| wordcloud