wordcloud

Создайте график облака слов из текста, модели мешка слов, модели мешка n-граммов или модели LDA

Описание

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

пример

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

пример

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

пример

wordcloud(bag) создает график облака слов из модели bag-of-words или bag-of-n-gams 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' задает синий цвет подсветки.

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

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

Цвет слова, заданный как триплет RGB, вектор символов, содержащий название цвета или N-by-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]

Цвет подсветки Word, заданный как триплет 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