Этот пост включает в себя всестороннее изучение того, как создать облако слов на Python. Так что, даже если вы новичок, не беспокойтесь, просто продолжайте. Мы начнем с создания простого wordcloud с помощью библиотеки wordcloud, и в конце этого урока вы сможете создать завораживающее stylecloud, подобное показанному ниже, не обращая внимания на препятствия. Давайте начнем!

Что такое Wordcloud?

  • Облако слов - это набор слов, где размер каждого слова представляет его частоту в данном тексте.
  • Этот метод особенно полезен для визуализации данных и обработки естественного языка, поскольку он дает нам четкое представление о том, что данные пытаются передать, не углубляясь в числа, а также это классная визуализация данных, которая, несомненно, может быть размещена на титульной странице ваших данных. аналитические отчеты.

Шаг 1. Установка необходимых пакетов и зависимостей

Прежде чем отправиться в путешествие, убедитесь, что в вашей системе установлено следующее:

  • Python 3.x
  • У вас должны быть установлены пакеты numpy, matplotlib, Pillow и wordcloud. Популярные пакеты, такие как numpy, pandas, matplotlib, устанавливаются автоматически, но вам может потребоваться установить библиотеку wordcloud (которая является рабочей лошадкой этой статьи) с помощью команды pip install ‹package_name› следующим образом:
pip install wordcloud

Шаг 2. Настройка базового Wordcloud из заданного текстового корпуса

Теперь, когда наши пакеты установлены, самое время применить их !!

Чтобы настроить и распечатать базовое Wordcloud, нам понадобятся только следующие пакеты

import wordcloud as wc
import matplotlib.pyplot as plt

Теперь возьмите какой-нибудь текст, который вы хотите представить в виде облака слов, вы можете выбрать любой большой корпус слов, например, статью или главу книги, или вы также можете выбрать набор данных, такой как набор данных imdb Movie Reviews. Здесь я собираюсь использовать сценарий фильмов о Железном человеке, чтобы сгенерировать свое облако слов. Если вы используете текстовый файл, прочтите его следующим образом. Если вы работаете с серией данных pandas или объектом JSON, то прочтите файл и объедините отдельные записи, перебирая серию в цикле.

file_text = open("Corpus.txt", "r")
text="".join(word for word in file_text)
print(text)

Давайте создадим простое облако слов

wordcloud = wc.WordCloud().generate(text)

На этом этапе ваше wordcloud готово, так что распечатайте его.

plt.imshow(wordcloud)
plt.axis("off")
plt.show()

Итак, вот как выглядит наше основное облако слов. На данный момент это не самое привлекательное облако слов, поэтому давайте продолжим и настроим наше облако слов.

Шаг 3. Настройка облака слов

Мы можем сделать довольно много вещей с облаком слов, здесь я сделаю следующее

  • Изменение цвета фона
  • Изменение высоты и ширины
  • Изменение максимального нет. слов
  • Изменение минимального размера шрифта
wordcloud = wc.WordCloud(background_color ='white',
                         width=1600,height=900,
                         min_font_size = 5,
                         max_words=100).generate(text)

Давайте снова напечатаем Wordcloud, чтобы увидеть, как выглядят наши изменения.

plt.figure(figsize = (10, 10), facecolor=None)
plt.imshow(wordcloud,interpolation='bilinear')
plt.axis("off")
plt.show()

Обратите внимание, что теперь мы указали размер холста 10x10 и установили interpolation = ’bilinear’, что делает наше изображение более гладким.

Это выглядит намного лучше, чем раньше, теперь давайте сделаем еще один шаг.

Шаг 4: Добавление маски и фильтрация стоп-слов

Прежде всего, импортируйте следующие пакеты / методы:

import numpy as np
from PIL import Image
from wordcloud import STOPWORDS
  • Удаление игнорируемых слов

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

my_stopwords = {'Okay','Pepper','Stark','Iron','Know'}
STOPWORDS= STOPWORDS | my_stopwords

Это обновляет список игнорируемых слов, и теперь наше облако слов должно иметь больше смысла, чем раньше, со всеми ненужными словами.

  • Добавление маски

Пожалуй, это лучшая часть этой статьи, прежде всего выберите красивое изображение, которое будет выступать в качестве маски. Для простоты я использую простое старое изображение поля для комментариев. Вы можете дать волю своему творчеству и выбрать любое понравившееся изображение (хотя может потребоваться некоторая предварительная обработка).

Теперь давайте прочитаем изображение

maskArray = np.array(Image.open("comment.png"))

Изображение маски хранится в виде трехмерного массива numpy, где каждое значение от 0 до 255 представляет черный и белый. Давайте заставим эту маску работать, изменив параметр маски, а также добавив contour_width и contour_color, которые придадут маске красивый контур.

wordcloud = wc.WordCloud(background_color ='white',
                         min_font_size = 1, max_words=100,
                         mask = maskArray,
                         contour_color='black',contour_width=3,
                         stopwords=STOPWORDS).generate(text)

Опять же, давайте напечатаем наше замаскированное облако слов.

plt.figure(figsize = (10, 10), facecolor=None)
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.tight_layout(pad = 0)
plt.show()

Это дает следующий результат:

Теперь наше Wordcloud выглядит потрясающе, давайте сохраним его.

Шаг 5: Сохранение Wordcloud

wordcloud.to_file("my_first_wordcloud.png")

Это сохранит wordcloud в текущем рабочем каталоге в формате PNG.

Итак, к настоящему времени мы создали простое облако слов с использованием библиотеки Python Wordcloud. Теперь мы увидим другую библиотеку, основанную на wordcloud, которая помогает сделать более привлекательные облака слов, а также упрощает задачу.

Stylecloud



  • Установка Stylecloud
!pip install stylecloud
import stylecloud
  • Настройка базового облака стилей

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

stylecloud.gen_stylecloud(file_path = "Corpus.txt")

  • Изменение маски и размера

В отличие от родительского облака wordcloud, stylecloud использует значки в качестве маски. Ниже представлена ​​потрясающая коллекция значков, вам просто нужно изменить имя значка, и вы закончили с маской. Я снова выберу поле для комментариев в качестве маски, оно называется fas-fa-comment. Вы также можете изменить размер облака стилей, передав желаемый размер в виде кортежа в параметр размера.



stylecloud.gen_stylecloud(file_path = "Corpus.txt", icon_name= "fas fa-comment",size=(1024, 512))

  • Удаление игнорируемых слов и изменение цвета

Еще раз удаляем все ненужные стоп-слова. Stylecloud имеет два разных параметра для стоп-слов и custom_stopwords, где последний также принимает список или набор слов в качестве аргумента.

my_custom_stopwords = {"Tony", "Pepper", "Iron", "Stark"}
my_custom_stopwords= my_custom_stopwords | STOPWORDS

Цвет облака стилей можно изменить двумя способами, здесь мы применяем цветовую палитру и градиент к нашему творению, вы можете проверить цветовые палитры для Pyhton по ссылке ниже:



stylecloud.gen_stylecloud(file_path='Corpus.txt',
                    icon_name='fas fa-comment',
                    palette='colorbrewer.diverging.Spectral_11',
                    background_color='black',gradient='horizontal',
                    stopwords=STOPWORDS,
                    custom_stopwords=my_custom_stopwords,
                    )

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

stylecloud.gen_stylecloud(file_path='Corpus.txt',
                          icon_name='fas fa-comment',
                          colors=['#ffdb4d', '#ff0000', '#e74c3c'],
                          background_color='black',
                          )

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

Большое спасибо !!

Я рада, что вы зашли так далеко. Я пишу статью впервые, и я изо всех сил старался сделать эту статью достойной того, чтобы ее прочитать и охватить все аспекты создания облака Word. Ваши предложения приветствуются.

Вы можете оставить свои отзывы / предложения по адресу:

Электронная почта: [email protected]

LinkedIn: https://www.linkedin.com/in/shivam-in/