Рисуем облако слов на Python: визуализация текста с помощью WordCloud

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

Облако слов: визуализация текста

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

Создание облака слов – это не только интересный способ представить данные, но и эффективный инструмент для быстрого анализа текста. Визуализация позволяет быстро определить основные темы, выявить важные термины и даже обнаружить тенденции или паттерны в больших объемах текста.

Реализация на Python

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

pip install wordcloud

Затем импортируем необходимые модули:

from wordcloud import WordCloud
import matplotlib.pyplot as plt

В нашем примере мы будем использовать следующий текст:

“Python – мощный и универсальный язык программирования. Он позволяет разрабатывать различные приложения, включая веб-сайты, игры и научные проекты. Язык Python прост в изучении и имеет обширные библиотеки.”

После предварительной обработки текста, как это было сделано в предыдущей статье, мы можем создать облако слов. Вот как это можно реализовать:

# Очищенный и обработанный текст
filtered_words = ['python', 'мощный', 'универсальный', 'язык', 'программирования', 'разрабатывать', 'различные', 'приложения', 'включая', 'веб сайты', 'игры', 'научные', 'проекты', 'прост', 'изучении', 'обширные', 'библиотеки']

# Создание облака слов
wordcloud = WordCloud(background_color='white', width=800, height=400).generate(' '.join(filtered_words))

# Отображение облака слов
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
		

В этом коде мы создаем объект WordCloud с белым фоном (background_color='white') и указываем размеры изображения. Затем используем метод generate() для создания облака слов из списка filtered_words. Функция plt.imshow() используется для отображения изображения, а plt.axis('off') отключает оси, чтобы облако слов выглядело более эстетично.

Результатом будет визуализация, на которой слова, такие как “python”, “язык”, “программирования” и другие, будут иметь больший размер шрифта, что указывает на их высокую частоту использования в тексте.

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

Теперь, имея навыки извлечения ключевых слов и создания облаков слов, вы можете анализировать и представлять текстовые данные более эффективно и привлекательно.

import re
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# Исходный текст
text = """
Python - мощный и универсальный язык программирования.
Он позволяет разрабатывать различные приложения,
включая веб-сайты, игры и научные проекты.
Язык Python прост в изучении и имеет обширные библиотеки.
"""

# Список предлогов и местоимений, которые нужно исключить
exclusions = ["и", "на", "из", "он", "она", "они", "это", "его", "ее", "их"]

# Очистка текста
cleaned_text = text.lower()
cleaned_text = re.sub(r'[^\w\s]', '', cleaned_text)
words = cleaned_text.split()

# Фильтрация слов, исключая предлоги и местоимения
filtered_words = [word for word in words if word not in exclusions]

# Подсчет частоты слов
word_frequency = {}
for word in filtered_words:
    if word in word_frequency:
        word_frequency[word] += 1
    else:
        word_frequency[word] = 1

# Сортировка слов по частоте
sorted_words = sorted(word_frequency.items(), key=lambda x: x[1], reverse=True)

# Вывод слов, которые чаще всего используются, исключая предлоги и местоимения
print("Слова, которые чаще всего используются в тексте (без предлогов и местоимений):")
for word, frequency in sorted_words:
    print(f"{word}: {frequency} раз")

# Создание облака слов
wordcloud = WordCloud(background_color='white', width=800, height=400).generate(' '.join(filtered_words))

# Отображение облака слов
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()