exponenta event banner

wordcloud

Создание таблицы облака слов из текста, модели мешка слов, модели мешка n граммов или модели LDA

Описание

Text Analytics Toolbox™ расширяет функциональные возможности wordcloud (MATLAB ®). Он добавляет поддержку для создания облаков слов непосредственно из массивов строк и создания облаков слов из моделей пакетов слов, моделей пакетов n-грамм и тем LDA. Если панель инструментов Text Analytics не установлена, см. разделwordcloud.

пример

wordcloud(str) создает таблицу облака слов путем токенизации и предварительной обработки текста в strи затем отображение слов с размерами, соответствующими числу частот слов. Этот синтаксис поддерживает английский, японский, немецкий и корейский тексты.

пример

wordcloud(documents) создает диаграмму облака слов из слов, появляющихся в documents.

пример

wordcloud(bag) создает таблицу облака слов из модели мешка слов или мешка n-граммов bag.

пример

wordcloud(tbl,wordVar,sizeVar) создает таблицу облака слов из таблицы tbl. Переменные wordVar и sizeVar в таблице указываются соответственно размеры слов и слов.

wordcloud(words,sizeData) создает таблицу облака слов из элементов words с размерами слов, указанными sizeData.

wordcloud(C) создает таблицу облака слов из элементов категориального массива C с использованием счетчиков частоты.

пример

wordcloud(ldaMdl,topicIdx) создает диаграмму облака слов из раздела с индексом topicIdx модели LDA ldaMdl.

wordcloud(___,Name,Value) указывает дополнительные WordCloudChart с использованием одного или нескольких аргументов пары имя-значение.

wordcloud(parent,___) создает облако слов на рисунке, панели или вкладке, указанных parent.

wc = wordcloud(___) возвращает значение WordCloudChart объект. Использовать wc для изменения свойств облака слов после его создания. Список свойств см. в разделе Свойства WordCloudChart.

Примеры

свернуть все

Извлечь текст из sonnets.txt использование extractFileText и отображение текста первого сонета.

str = extractFileText("sonnets.txt");
extractBefore(str,"II")
ans = 
    "THE SONNETS
     
     by William Shakespeare
     
     
     
     
       I
     
       From fairest creatures we desire increase,
       That thereby beauty's rose might never die,
       But as the riper should by time decease,
       His tender heir might bear his memory:
       But thou, contracted to thine own bright eyes,
       Feed'st thy light's flame with self-substantial fuel,
       Making a famine where abundance lies,
       Thy self thy foe, to thy sweet self too cruel:
       Thou that art now the world's fresh ornament,
       And only herald to the gaudy spring,
       Within thine own bud buriest thy content,
       And tender churl mak'st waste in niggarding:
         Pity the world, or else this glutton be,
         To eat the world's due, by the grave and thee.
     
       "

Отображение слов из сонетов в облаке слов.

figure
wordcloud(str);

Figure contains an object of type wordcloud.

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

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

Визуализация документов с помощью облака слов.

figure
wordcloud(documents);

Figure contains an object of type wordcloud.

Загрузите данные примера. Файл 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

Визуализация модели сумки слов с помощью облака слов.

figure
wordcloud(bag);

Figure contains an object of type wordcloud.

Загрузка данных примера sonnetsTable. Стол tbl содержит список слов в переменной Wordи соответствующие значения частоты в переменной Count.

load sonnetsTable
head(tbl)
ans=8×2 table
       Word        Count
    ___________    _____

    {'''tis'  }      1  
    {''Amen'' }      1  
    {''Fair'  }      2  
    {''Gainst'}      1  
    {''Since' }      1  
    {''This'  }      2  
    {''Thou'  }      1  
    {''Thus'  }      1  

Печать данных таблицы с помощью wordcloud. Укажите слова и соответствующие размеры слов, которые должны быть Word и Count переменные соответственно.

figure
wordcloud(tbl,'Word','Count');
title("Sonnets Word Cloud")

Figure contains an object of type wordcloud. The chart of type wordcloud has title Sonnets Word Cloud.

Чтобы воспроизвести результаты в этом примере, установите 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)
bag = 
  bagOfWords with properties:

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

Поместите модель LDA с 20 темами. Для подавления подробных выходных данных установите 'Verbose' в 0.

mdl = fitlda(bag,20,'Verbose',0)
mdl = 
  ldaModel with properties:

                     NumTopics: 20
             WordConcentration: 1
            TopicConcentration: 5
      CorpusTopicProbabilities: [1x20 double]
    DocumentTopicProbabilities: [154x20 double]
        TopicWordProbabilities: [3092x20 double]
                    Vocabulary: [1x3092 string]
                    TopicOrder: 'initial-fit-probability'
                       FitInfo: [1x1 struct]

Визуализируйте первые четыре раздела, используя облака слов.

figure
for topicIdx = 1:4
    subplot(2,2,topicIdx)
    wordcloud(mdl,topicIdx);
    title("Topic: " + topicIdx)
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.

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

свернуть все

Входной текст, заданный как строковый массив, символьный вектор или массив ячеек символьных векторов.

Для ввода строки, wordcloud и wordCloudCounts функции используют английскую, японскую, немецкую и корейскую токенизацию, удаление стоп-слов и нормализацию слов.

Пример: ["an example of a short document";"a second short document"]

Типы данных: string | char | cell

Исходные документы, указанные как tokenizedDocument массив.

Входная таблица со столбцами, определяющими размеры слов и слов. Укажите слова и соответствующие размеры слов в переменных, заданных wordVar и sizeVar входные аргументы соответственно.

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

Переменная таблицы для данных слов, заданная как строковый скаляр, символьный вектор, числовой индекс или логический вектор.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

Переменная таблицы для данных размера, заданная как строковый скаляр, символьный вектор, числовой индекс или логический вектор.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

Входные слова, заданные как строковый вектор или массив ячеек символьных векторов.

Типы данных: string | cell

Данные размера слова, указанные как числовой вектор.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Входные категориальные данные, указанные как категориальный массив. Функция отображает каждый уникальный элемент C с размером, соответствующим histcounts(C).

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

Входная модель сумки слов или сумки n граммов, указанная как bagOfWords объект или bagOfNgrams объект. Если bag является bagOfNgrams объект, то функция рассматривает каждый n-грамм как одно слово.

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

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

Родительский элемент указан как фигура, панель или вкладка.

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

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

Пример: 'HighlightColor','blue' указывает, что цвет подсветки должен быть синим.

WordCloudChart перечисленные здесь свойства являются только подмножеством. Полный список см. в разделе Свойства WordCloudChart.

Максимальное количество отображаемых слов, указанное как неотрицательное целое число. Программа отображает MaxDisplayWords самые большие слова.

Цвет слова, указанный как триплет RGB, вектор символов, содержащий имя цвета, или N-на-3 матрица, где N - длина WordData. Если Color является матрицей, то каждая строка соответствует триплету RGB для соответствующего слова в WordData.

Триплеты RGB и шестнадцатеричные цветовые коды полезны для задания пользовательских цветов.

  • Триплет RGB - это трехэлементный вектор строки, элементы которого задают интенсивности красной, зеленой и синей составляющих цвета. Интенсивности должны находиться в диапазоне [0,1]; например, [0.4 0.6 0.7].

  • Шестнадцатеричный цветовой код - это символьный вектор или строковый скаляр, начинающийся с хэш-символа (#), за которыми следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 кому F. Значения не чувствительны к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

Можно также задать некоторые общие цвета по имени. В этой таблице перечислены параметры именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Имя цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB, используемых на многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Пример: 'blue'

Пример: [0 0 1]

Цвет выделения слова, заданный как триплет RGB, или вектор символов, содержащий имя цвета. Программа выделяет самые большие слова этого цвета.

Триплеты RGB и шестнадцатеричные цветовые коды полезны для задания пользовательских цветов.

  • Триплет RGB - это трехэлементный вектор строки, элементы которого задают интенсивности красной, зеленой и синей составляющих цвета. Интенсивности должны находиться в диапазоне [0,1]; например, [0.4 0.6 0.7].

  • Шестнадцатеричный цветовой код - это символьный вектор или строковый скаляр, начинающийся с хэш-символа (#), за которыми следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 кому F. Значения не чувствительны к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

Можно также задать некоторые общие цвета по имени. В этой таблице перечислены параметры именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Имя цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB, используемых на многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Пример: 'blue'

Пример: [0 0 1]

Форма таблицы облака слов, указанная как 'oval' или 'rectangle'.

Пример: 'rectangle'

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

свернуть все

WordCloudChart объект. Можно изменить свойства WordCloudChart после его создания. Дополнительные сведения см. в разделе Свойства WordCloudChart.

Подробнее

свернуть все

Языковые соображения

Для ввода строки, wordcloud и wordCloudCounts функции используют английскую, японскую, немецкую и корейскую токенизацию, удаление стоп-слов и нормализацию слов.

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

Задание размеров слов в wordcloudвведите данные в виде таблицы или массивов, содержащих уникальные слова и соответствующие размеры.

Представлен в R2017b