Визуализируйте вероятности темы LDA документов

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

Модель скрытого выделения Дирихле (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]

Визуализируйте темы Используя Word Clouds

Визуализируйте темы с помощью wordcloud функция.

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.

Просмотрите смеси тем в документах

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

Функциональный preprocessText, перечисленный в разделе Preprocessing Function примера, выполняет следующие шаги в порядке:

  1. Маркируйте текст с помощью tokenizedDocument.

  2. Lemmatize слова с помощью normalizeWords.

  3. Сотрите пунктуацию с помощью erasePunctuation.

  4. Удалите список слов остановки (такой как "и", и) использование removeStopWords.

  5. Удалите слова с 2 или меньшим количеством символов с помощью removeShortWords.

  6. Удалите слова с 15 или больше символами с помощью removeLongWords.

Подготовьте текстовые данные к анализу с помощью preprocessText функция.

str = [
    "Coolant is pooling underneath assembler."
    "Sorter blows fuses at start up."
    "There are some very loud rattling sounds coming from the assembler."];
documents = preprocessText(str);

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

topicMixtures = transform(mdl,documents);

Визуализируйте первую смесь темы в столбчатой диаграмме и пометьте панели с помощью лучших трех слов от каждой темы.

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

figure
bar(categorical(topWords),topicMixtures(1,:))

xlabel("Topic")
ylabel("Probability")
title("Document Topic Probabilities")

Figure contains an axes object. The axes object with title Document Topic Probabilities contains an object of type bar.

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

figure
barh(topicMixtures,"stacked")

title("Topic Mixtures")
xlabel("Topic Probability")
ylabel("Document")

legend(topWords, ...
    Location="southoutside", ...
    NumColumns=2)

Figure contains an axes object. The axes object with title Topic Mixtures contains 7 objects of type bar. These objects represent mixer, sound, assembler, scanner, agent, stuck, sound, agent, hear, scanner, appear, spool, mixer, fuse, coolant, arm, robot, smoke, software, sorter, controller.

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

Предварительная обработка функции

Функциональный preprocessText, выполняет следующие шаги в порядке:

  1. Маркируйте текст с помощью tokenizedDocument.

  2. Lemmatize слова с помощью normalizeWords.

  3. Сотрите пунктуацию с помощью erasePunctuation.

  4. Удалите список слов остановки (такой как "и", и) использование removeStopWords.

  5. Удалите слова с 2 или меньшим количеством символов с помощью removeShortWords.

  6. Удалите слова с 15 или больше символами с помощью removeLongWords.

function documents = preprocessText(textData)

% Tokenize the text.
documents = tokenizedDocument(textData);

% Lemmatize the words.
documents = addPartOfSpeechDetails(documents);
documents = normalizeWords(documents,Style="lemma");

% Erase punctuation.
documents = erasePunctuation(documents);

% Remove a list of stop words.
documents = removeStopWords(documents);

% Remove words with 2 or fewer characters, and words with 15 or greater
% characters.
documents = removeShortWords(documents,2);
documents = removeLongWords(documents,15);

end

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

| | |

Похожие темы