Визуализируйте корреляции темы LDA

В этом примере показано, как анализировать корреляции между темами в модели темы Скрытого выделения Дирихле (LDA).

Модель скрытого выделения Дирихле (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 ... ]
    DocumentTopicProbabilities: [480x7 double]
        TopicWordProbabilities: [158x7 double]
                    Vocabulary: ["item"    "occasionally"    "get"    ...    ]
                    TopicOrder: 'initial-fit-probability'
                       FitInfo: [1x1 struct]

Визуализируйте темы с помощью облаков слова.

numTopics = mdl.NumTopics;

figure
t = tiledlayout("flow");
title(t,"LDA Topics")

for i = 1:numTopics
    nexttile
    wordcloud(mdl,i);
    title("Topic " + i)
end

Figure contains objects of type wordcloud. The chart of type wordcloud has title Topic 1. The chart of type wordcloud has title Topic 2. The chart of type wordcloud has title Topic 3. The chart of type wordcloud has title Topic 4. The chart of type wordcloud has title Topic 5. The chart of type wordcloud has title Topic 6. The chart of type wordcloud has title Topic 7.

Визуализируйте корреляции темы

Вычислите корреляции между темами с помощью corrcoef функция с вероятностями слова темы модели LDA, как введено.

correlation = corrcoef(mdl.TopicWordProbabilities);

Просмотрите корреляции в тепле, сопоставляют и помечают каждую тему ее лучшими тремя словами. Чтобы препятствовать тому, чтобы карта тепла подсветила тривиальные корреляции между темами каждый и оно, вычтите единичную матрицу из корреляций.

Для каждой темы найдите лучшие три слова.

numTopics = mdl.NumTopics;
for i = 1:numTopics
    top = topkwords(mdl,3,i);
    topWords(i) = join(top.Word,", ");
end

Постройте корреляции с помощью heatmap функция.

figure
heatmap(correlation - eye(numTopics), ...
    XDisplayLabels=topWords, ...
    YDisplayLabels=topWords)

title("LDA Topic Correlations")
xlabel("Topic")
ylabel("Topic")

Figure contains an object of type heatmap. The chart of type heatmap has title LDA Topic Correlations.

Для каждой темы найдите тему с самой сильной корреляцией и отобразите пары в таблице с соответствующим коэффициентом корреляции.

[topCorrelations,topCorrelatedTopics] = max(correlation - eye(numTopics));

tbl = table;
tbl.TopicIndex = (1:numTopics)';
tbl.Topic = topWords';
tbl.TopCorrelatedTopicIndex = topCorrelatedTopics';
tbl.TopCorrelatedTopic = topWords(topCorrelatedTopics)';
tbl.CorrelationCoefficient = topCorrelations'
tbl=7×5 table
    TopicIndex                Topic                 TopCorrelatedTopicIndex          TopCorrelatedTopic          CorrelationCoefficient
    __________    ______________________________    _______________________    ______________________________    ______________________

        1         "mixer, sound, assembler"                    5               "mixer, fuse, coolant"                    0.34304       
        2         "scanner, agent, stuck"                      4               "scanner, appear, spool"                  0.34526       
        3         "sound, agent, hear"                         1               "mixer, sound, assembler"                 0.26909       
        4         "scanner, appear, spool"                     2               "scanner, agent, stuck"                   0.34526       
        5         "mixer, fuse, coolant"                       1               "mixer, sound, assembler"                 0.34304       
        6         "arm, robot, smoke"                          1               "mixer, sound, assembler"               0.0042125       
        7         "software, sorter, controller"               7               "software, sorter, controller"                  0       

Смотрите также

| | |

Похожие темы