topkwords

Самые важные слова в модели мешка слов или теме LDA

Описание

пример

tbl = topkwords(bag) возвращает таблицу из пяти слов с наибольшим количеством слов в модели мешка слов bag. Функция по умолчанию чувствительна к регистру.

пример

tbl = topkwords(bag,k) возвращает таблицу k слова с наибольшим количеством слов. Функция по умолчанию чувствительна к регистру.

пример

tbl = topkwords(ldaMdl,k,topicIdx) возвращает таблицу k слова с наивысшими вероятностями в теме латентного распределения Дирихле (LDA) topicIdx в модели LDA ldaMdl.

пример

tbl = topkwords(___,Name,Value) задает дополнительные опции, используя один или несколько аргументы пары "имя-значение".

Примеры

свернуть все

Составьте таблицу наиболее частых слов модели мешка слов.

Загрузите данные примера. Файл sonnetsPreprocessed.txt содержит предварительно обработанные версии сонетов Шекспира. Файл содержит по одному сонету на линию со словами, разделенными пространством. Извлеките текст из sonnetsPreprocessed.txtразделите текст на документы в символах новой строки, а затем пометьте его токеном.

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

Создайте модель мешка слов с помощью bagOfWords.

bag = bagOfWords(documents) 
bag = 
  bagOfWords with properties:

          Counts: [154x3092 double]
      Vocabulary: [1x3092 string]
        NumWords: 3092
    NumDocuments: 154

Найдите пять лучших слов.

T = topkwords(bag);

Найдите 20 лучших слов в модели.

k = 20;
T = topkwords(bag,k)
T=20×2 table
      Word      Count
    ________    _____

    "thy"        281 
    "thou"       234 
    "love"       162 
    "thee"       161 
    "doth"        88 
    "mine"        63 
    "shall"       59 
    "eyes"        56 
    "sweet"       55 
    "time"        53 
    "beauty"      52 
    "nor"         52 
    "art"         51 
    "yet"         51 
    "o"           50 
    "heart"       50 
      ⋮

Составьте таблицу слов с самой высокой вероятностью темы LDA.

Чтобы воспроизвести результаты, установите rng на 'default'.

rng('default')

Загрузите данные примера. Файл sonnetsPreprocessed.txt содержит предварительно обработанные версии сонетов Шекспира. Файл содержит по одному сонету на линию со словами, разделенными пространством. Извлеките текст из sonnetsPreprocessed.txtразделите текст на документы в символах новой строки, а затем пометьте его токеном.

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

Создайте модель мешка слов с помощью bagOfWords.

bag = bagOfWords(documents);

Подгонка модели LDA с 20 темами. Чтобы подавить подробный выход, установите 'Verbose' в 0.

numTopics = 20;
mdl = fitlda(bag,numTopics,'Verbose',0);

Найдите 20 лучших слов первой темы.

k = 20;
topicIdx = 1;
tbl = topkwords(mdl,k,topicIdx)
tbl=20×2 table
      Word        Score  
    ________    _________

    "eyes"        0.11155
    "beauty"      0.05777
    "hath"       0.055778
    "still"      0.049801
    "true"       0.043825
    "mine"       0.033865
    "find"       0.031873
    "black"      0.025897
    "look"       0.023905
    "tis"        0.023905
    "kind"       0.021913
    "seen"       0.021913
    "found"      0.017929
    "sin"        0.015937
    "three"      0.013945
    "golden"    0.0099608
      ⋮

Найдите 20 лучших слов первой темы и используйте обратное среднее масштабирование в счетах.

tbl = topkwords(mdl,k,topicIdx,'Scaling','inversemean')
tbl=20×2 table
      Word       Score  
    ________    ________

    "eyes"        1.2718
    "beauty"     0.59022
    "hath"        0.5692
    "still"      0.50269
    "true"       0.43719
    "mine"       0.32764
    "find"       0.32544
    "black"      0.25931
    "tis"        0.23755
    "look"       0.22519
    "kind"       0.21594
    "seen"       0.21594
    "found"      0.17326
    "sin"        0.15223
    "three"      0.13143
    "golden"    0.090698
      ⋮

Создайте облако слов, используя масштабированные счета в качестве данных о размере.

figure
wordcloud(tbl.Word,tbl.Score);

Figure contains an object of type wordcloud.

Входные параметры

свернуть все

Вход пакета слов, заданная как bagOfWords объект.

Количество слов для возврата, заданное как положительное целое число.

Пример: 20

Входная модель LDA, заданная как ldaModel объект.

Индекс темы LDA, заданный как неотрицательное целое число.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Scaling','inversemean' задает, чтобы использовать обратное среднее масштабирование для вероятностей слова в теме.
Опции модели мешка слов

свернуть все

Опция игнорирования случая, заданная как разделенная разделенными запятой парами, состоящая из 'IgnoreCase' и одно из следующих:

  • false - относиться к словам, различающимся только в каждом конкретном случае, как к отдельным словам.

  • true - относиться к словам, отличающимся только по случаю, как к одному и тому же слову и объединять счетчики.

Эта опция поддерживает только вход сумки слов.

Индикатор для принудительного возврата выхода в виде массива ячеек, заданный как разделенная запятыми пара, состоящая из 'ForceCellOutput' и true или false.

Эта опция поддерживает только вход сумки слов.

Типы данных: logical

Опции модели LDA

свернуть все

Масштабирование для применения к вероятностям тематического слова, заданное как разделенная разделенными запятой парами, состоящая из 'Scaling' и одно из следующих:

  • 'none' - Возвращает апостериорные вероятности слов.

  • 'inversemean' - Нормализуйте апостериорные вероятности слова по теме геометрическим средним апостериорными вероятностями для этого слова по всем темам. Функция использует формулу Phi.*(log(Phi)-mean(log(Phi),1)), где Phi соответствует ldaMdl.TopicWordProbabilities.

Эта опция поддерживает только вход модели LDA.

Пример: 'Scaling','inversemean'

Типы данных: char

Выходные аргументы

свернуть все

Таблица верхних слов, отсортированных в порядке важности или массив ячеек из таблиц.

Когда вход является моделью мешка слов, таблица имеет следующие столбцы:

WordСлово задается как строка
CountКоличество раз, когда слово появляется в модели мешка слов

Если bag является некалярным массивом или 'ForceCellOutput' является true, затем функция возвращает выходы как массив ячеек из таблиц. Каждый элемент массива ячеек является таблицей, содержащей верхние слова соответствующего элемента bag.

Когда вход является моделью LDA, таблица имеет следующие столбцы:

WordСлово задается как строка
ScoreВероятность слова для данной темы LDA

Совет

  • Чтобы найти наиболее часто встречающиеся n-граммы в модели мешка n-граммов, используйте topkngrams.

Введенный в R2017b