logo
Ещё

Облако слов на Python

Визуализация данных – один из самых эффективных и доступных способов их обработки. Примером его практического применения выступает так называемое «облако слов». Термин означает визуальное представление текстовых данных, которое сочетает в себе сразу три составляющих: Data-дизайн, инфографику и исследовательский анализ. Благодаря созданию облака слов, удается дать объективную оценку самым разным текстам, начиная с художественных и заканчивая научными.


Нередко визуализация выполняется с применением языка программирования Python. Можно выделить сразу три серьезных причины создать облако слов подобным образом, включая:

  1. Эстетичность. Удачно и стильно реализованный проект станет отличным дополнением к портфолио разработчика на Python.
  2. SEO-оптимизация. Самое частое направление практического использования метода визуализации текстов. Позволяет определить наиболее частотные слова, что позволяет сформировать, например, облако тегов.
  3. Простота реализации. Питон предоставляет программисту разнообразный инструментарий, который заметно упрощает и ускоряет написания исходного кода.

Как сделать облако слов на 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 и множество других.

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

  • изменение цвета фона - background_color;
  • корректировка набора цветов (цветовой схемы) – colormap;
  • численность слов в формируемом облаке - max_words.

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

Что почитать или посмотреть по теме?

  1. Документация по пакету WordCloud for Python от компании разработчика.
  2. Любительский гайд по созданию облака слов на Python.
  3. Любительский гайд по использованию пакета WordCloud в Python.
  4. Руководство по созданию облака слов на Python.
  5. Гайд по использованию WordCloud в Python от DEV Community.
  6. Видео ролик на YouTube «Как сделать облако слов онлайн».
  7. Видео ролик на YouTube «Видеофрагмент №9. Облако слов в Python».
  8. Видео ролик на YouTube «Облако слов как инструмент визуализации знаний».

FAQ

Что такое облако слов?

Под облаком слов понимается визуализация текстовой информации, сочетающая в себе три подхода – аналитический, эстетический и оптимизационный.

Для чего оно используется?

Формирование облака слов – это самый простой, быстрый и наглядный способ оценки даже очень объемного массива текстовых данных. Он используется не только для получения красивого результата, но и в рамках SEO-продвижения, в том числе – посредством создания списка тегов.

Как проще и быстрее всего создать облако слов самостоятельно?

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

Какие пакеты, предназначенные для использования на Python, помогут сформировать облако слов?

Обязательным инструментом для создания облака слов является специально разработанный для этого WordCloud. Остальные пакеты дополняют его функционал, например, pandas или matplotlib.

Подведем итоги

  1. Под облаком слов понимается визуальное представление текстовой информации.
  2. Оно базируется на самых частотных словах из текста, которые отбираются автоматически, что позволяет обрабатывать даже очень объемные массивы данных подобного формата.
  3. Формирование облака слов осуществляется с разными целями – эстетической, аналитической или для SEO-продвижения текста.
  4. Самый простой способ создать облако слов – как простой, так и сложной конфигурации – предусматривает написание программы на Python.
  5. Специально для решения этой задачи разработан вспомогательный инструмент для этого языка программирования под названием WordCloud.
Часто ищут