Визуализация данных – один из самых эффективных и доступных способов их обработки. Примером его практического применения выступает так называемое «облако слов». Термин означает визуальное представление текстовых данных, которое сочетает в себе сразу три составляющих: Data-дизайн, инфографику и исследовательский анализ. Благодаря созданию облака слов, удается дать объективную оценку самым разным текстам, начиная с художественных и заканчивая научными.
Нередко визуализация выполняется с применением языка программирования Python. Можно выделить сразу три серьезных причины создать облако слов подобным образом, включая:
Для написания приложения по созданию облака слов можно использовать обычный текстовый редактор, например, блокнот Google Colab, доступный непосредственно в браузере. Последовательность предпринимаемых разработчиком действий можно разбить на два этапа – подготовительный и основной.
Первый всегда реализуется примерно одинаково, состав второго зависит от сложности формируемого облака слов.
Первый делом следует загрузить блокнот. Для этого требуется авторизоваться в Gmail, после чего запустить программу. Далее производится установка библиотеки для работы с источником текстов. Например, источником текста может стать «Википедии», а библиотекой - stop-words, которая используется для аналитической обработки текстов на разных языках. Код приложения выглядит предельно просто. Желательно запускать команды в отдельной ячейке, что позволит отследить выполнение каждой.
!pip install wikipedia
!pip install stop-words
Первым делом следует подготовить исходный текст для последующей визуализации. Для этого пишется следующий код.
# Импортируем нужные библиотеки
import wikipedia
import re
# Выбираем язык Википедии и интересующую нас страницу
wikipedia.set_lang("ru")
wiki = wikipedia.page('Гарри Поттер')
# Извлекаем текст из полученной страницы
text = wiki.content
# Очищаем текст с помощью регулярных выражений
text = re.sub(r'==.*?==+', '', text) # удаляем лишние символы
text = text.replace('\n', '') # удаляем знаки разделения на абзацы
Результатом выполнения кода становится установка двух библиотек - «Википедии» и re. Вторая предназначена для обработки регулярных выражений. Остальные комментарии даны непосредственно в тексте программы.
Далее требуется импортировать библиотеку с текстом и написать функцию его визуализации. Эта часть кода выглядит следующим образом.
# Импортируем библиотеку для визуализации
import matplotlib.pyplot as plt
%matplotlib inline
# Функция для визуализации облака слов
def plot_cloud(wordcloud):
# Устанавливаем размер картинки
plt.figure(figsize=(40, 30))
# Показать изображение
plt.imshow(wordcloud)
# Без подписей на осях
plt.axis("off")
Важным нюансом выступает присутствие команды %matplotlib inline. Она необходима для того, чтобы графики, составляющие облако, были нарисованы непосредственно в блокноте, а не в другом окне. Далее пишется главная часть программы, имеющая такой вид.
# Импортируем инструменты для облака слов и списки стоп-слов
from wordcloud import WordCloud
from stop_words import get_stop_words
# Записываем в переменную стоп-слова русского языка
STOPWORDS_RU = get_stop_words('russian')
# Генерируем облако слов
wordcloud = WordCloud(width = 2000,
height = 1500,
random_state=1,
background_color='black',
margin=20,
colormap='Pastel1',
collocations=False,
stopwords = STOPWORDS_RU).generate(text)
# Рисуем картинку
plot_cloud(wordcloud)
Если требуется добавить новые стоп-слова в переменную STOPWORDS_RU, используется стандартная функция следующего формата:
.add (‘новое стоп-слово’).
В качестве дополнительной опции можно указать адрес сохранения картинки – в разделе основного меню «Файлы»:
wordcloud.to_file('hp_cloud_simple.png').
Результатом выполнения написанного кода становится получение облака слов простой конфигурации. Оно выглядит следующим образом.
Получение на выходе облака сложной конфигурации, отличной от обычного прямоугольника, требует дополнительного использования исходной картинки, которая задействуется в качестве своеобразного трафарета. Желательно – контрастной, лучше всего – черно-белой и не имеющей деталей маленького размера. Исходный код приложения для создания сложного облака слов – вместе с комментариями к каждому из основных действий – выглядит так.
# Импортируем необходимое
import numpy as np
from PIL import Image
# Превращаем картинку в маску
mask = np.array(Image.open('/content/upvote.png'))
# Генерируем облако слов
wordcloud = WordCloud(width = 2000,
height = 1500,
random_state=1,
background_color='white',
colormap='Set2',
collocations=False,
stopwords = STOPWORDS_RU,
mask=mask).generate(text)
# Выводим его на экран
plot_cloud(wordcloud)
Несложно заметить, что общая схема действий остается неизменной. Добавляется так называемая маска, задействование которой позволяет получить на выходе такую картинку.
Для последующего совершенствования навыков формирования облака слов любой формы и содержания достаточно внимательно изучить описанные выше алгоритмы и немного поэкспериментировать с ними. Наличие разнообразных ресурсов в виде источников текстов и библиотек в сочетании с лаконичностью и простотой синтаксиса Python позволяют быстро освоить нужные умения, включая применение их на практике.
Не стоит забывать о большом количестве разнообразных вспомогательных инструментов, доступных разработчикам на этом популярном языке программирования.
Применительно к созданию облака слов могут эффективно использоваться следующие модули: уже упомянутый выше WordCloud, pandas, matplotlib и множество других.
Возможности языка позволяют не только создавать, но и редактировать облако слов. В зависимости от целей разработчика для этого используются разные функции и команды:
Конкретные значения, которые требуется подставить в каждую из функций, определяются в зависимости от используемых модулей. Для каждого из них разработаны специальные библиотеки, поэтому от пользователя требуется только загрузить их и выбрать подходящий вариант.
Под облаком слов понимается визуализация текстовой информации, сочетающая в себе три подхода – аналитический, эстетический и оптимизационный.
Формирование облака слов – это самый простой, быстрый и наглядный способ оценки даже очень объемного массива текстовых данных. Он используется не только для получения красивого результата, но и в рамках SEO-продвижения, в том числе – посредством создания списка тегов.
Практика показывает, что наиболее часто для создания облака слов используются возможности одного из самых популярных языков программирования – Python.
Обязательным инструментом для создания облака слов является специально разработанный для этого WordCloud. Остальные пакеты дополняют его функционал, например, pandas или matplotlib.