exponenta event banner

wordcloud

Создание таблицы облака слов на основе текстовых данных

Описание

пример

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

пример

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

пример

wordcloud(C) создает таблицу облака слов из уникальных элементов категориального массива C с размерами, соответствующими их частотным подсчетам. Если у вас есть Toolbox™ Text Analytics, то C может быть строковым массивом, символьным вектором или массивом ячеек символьных векторов.

пример

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

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

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

Примечание

Панель инструментов Text Analytics расширяет функциональные возможности wordcloud (MATLAB ®). Он добавляет поддержку для создания облаков слов непосредственно из массивов строк и создания облаков слов из моделей пакетов слов, моделей пакетов n-грамм и тем LDA. Для wordcloud( Панель инструментов анализа текста), см. 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.

Если установлен Toolbox™ Text Analytics, то облака слов можно создавать непосредственно из массивов строк. Дополнительные сведения см. в разделе wordcloud(Панель инструментов аналитики текста) (Панель инструментов аналитики текста). Если панель инструментов Text Analytics отсутствует, необходимо предварительно обработать текстовые данные вручную.

В этом примере показано, как создать облако слов из обычного текста путем считывания его в строковый массив, предварительной обработки и передачи в wordcloud функция.

Читайте текст из «Сонетов Шекспира» с fileread и преобразовать его в строку.

sonnets = string(fileread('sonnets.txt'));
extractBefore(sonnets,"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.
     
       "

Разделение sonnets в строковый массив, элементы которого содержат отдельные слова. Для этого удалите знаки препинания и соедините все строковые элементы в строку 1 на 1, а затем разделите их на пробелы. Затем удалите слова, содержащие менее пяти символов, и преобразуйте слова в строчные.

punctuationCharacters = ["." "?" "!" "," ";" ":"];
sonnets = replace(sonnets,punctuationCharacters," ");
words = split(join(sonnets));
words(strlength(words)<5) = [];
words = lower(words);
words(1:10)
ans = 10x1 string
    "sonnets"
    "william"
    "shakespeare"
    "fairest"
    "creatures"
    "desire"
    "increase"
    "thereby"
    "beauty's"
    "might"

Новообращенный sonnets в категориальный массив и затем постройте график с использованием wordcloud. Функция отображает уникальные элементы C с размерами, соответствующими их частотным подсчетам.

C = categorical(words);
figure
wordcloud(C);
title("Sonnets Word Cloud")

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

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

Читайте текст из «Сонетов Шекспира» с fileread и преобразовать его в строку.

sonnets = string(fileread('sonnets.txt'));
extractBefore(sonnets,"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.
     
       "

Разделение sonnets в строковый массив, элементы которого содержат отдельные слова. Для этого удалите знаки препинания и соедините все строковые элементы в строку 1 на 1, а затем разделите их на пробелы. Затем удалите слова, содержащие менее пяти символов, и преобразуйте слова в строчные.

punctuationCharacters = ["." "?" "!" "," ";" ":"];
sonnets = replace(sonnets,punctuationCharacters," ");
words = split(join(sonnets));
words(strlength(words)<5) = [];
words = lower(words);
words(1:10)
ans = 10x1 string
    "sonnets"
    "william"
    "shakespeare"
    "fairest"
    "creatures"
    "desire"
    "increase"
    "thereby"
    "beauty's"
    "might"

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

[numOccurrences,uniqueWords] = histcounts(categorical(words));
figure
wordcloud(uniqueWords,numOccurrences);
title("Sonnets Word Cloud")

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

Загрузка данных примера 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 переменные соответственно. Чтобы задать случайные значения цветов слов, установите 'Color' к случайной матрице или триплетам RGB с одной строкой для каждого слова.

numWords = size(tbl,1);
colors = rand(numWords,3);
figure
wordcloud(tbl,'Word','Count','Color',colors);
title("Sonnets Word Cloud")

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

Если установлена панель инструментов Text Analytics, то облака слов можно создавать непосредственно из массивов строк. Если панель инструментов Text Analytics отсутствует, необходимо предварительно обработать текстовые данные вручную. Пример создания облака слов без панели инструментов Text Analytics см. в разделе Подготовка текстовых данных для облаков Word.

Извлечь текст из 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);

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

свернуть все

Входная таблица со столбцами, определяющими размеры слов и слов. Укажите слова и соответствующие размеры слов в переменных, заданных 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

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

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

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

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

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

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

Родительский контейнер, указанный как Figure, Panel, Tab, TiledChartLayout, или GridLayout объект.

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

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

Пример: 'HighlightColor','red' устанавливает красный цвет подсветки.

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'

Макет размещения слов, заданный как неотрицательное целое число. Если вы неоднократно звоните wordcloud при одинаковых входных данных макеты размещения слов будут одинаковыми каждый раз. Чтобы получить различные макеты размещения слов, используйте различные значения LayoutNum.

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

свернуть все

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

Совет

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

Расширенные возможности

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