Below is a list of words related to another word. You can click words for definitions. Sorry if there’s a few unusual suggestions! The algorithm isn’t perfect, but it does a pretty good job for common-ish words. Here’s the list of words that are related to another word:
Popular Searches
Words Related to ~term~
As you’ve probably noticed, words related to «term» are listed above. Hopefully the generated list of term related words above suit your needs.
P.S. There are some problems that I’m aware of, but can’t currently fix (because they are out of the scope of this project). The main one is that individual words can have many different senses (meanings), so when you search for a word like mean, the engine doesn’t know which definition you’re referring to («bullies are mean» vs. «what do you mean?», etc.), so consider that your search query for words like term may be a bit ambiguous to the engine in that sense, and the related terms that are returned may reflect this. You might also be wondering: What type of word is ~term~?
Also check out ~term~ words on relatedwords.io for another source of associations.
Related Words
Related Words runs on several different algorithms which compete to get their results higher in the list. One such algorithm uses word embedding to convert words into many dimensional vectors which represent their meanings. The vectors of the words in your query are compared to a huge database of of pre-computed vectors to find similar words. Another algorithm crawls through Concept Net to find words which have some meaningful relationship with your query. These algorithms, and several more, are what allows Related Words to give you… related words — rather than just direct synonyms.
As well as finding words related to other words, you can enter phrases and it should give you related words and phrases, so long as the phrase/sentence you entered isn’t too long. You will probably get some weird results every now and then — that’s just the nature of the engine in its current state.
Special thanks to the contributors of the open-source code that was used to bring you this list of term themed words: @Planeshifter, @HubSpot, Concept Net, WordNet, and @mongodb.
There is still lots of work to be done to get this to give consistently good results, but I think it’s at the stage where it could be useful to people, which is why I released it.
Please note that Related Words uses third party scripts (such as Google Analytics and advertisements) which use cookies. To learn more, see the privacy policy.
Recent Queries
Below is a massive list of clouds words — that is, words related to clouds. The top 4 are: fog, sky, mist and atmosphere. You can get the definition(s) of a word in the list below by tapping the question-mark icon next to it. The words at the top of the list are the ones most associated with clouds, and as you go down the relatedness becomes more slight. By default, the words are sorted by relevance/relatedness, but you can also get the most common clouds terms by using the menu below, and there’s also the option to sort the words alphabetically so you can get clouds words starting with a particular letter. You can also filter the word list so it only shows words that are also related to another word of your choosing. So for example, you could enter «fog» and click «filter», and it’d give you words that are related to clouds and fog.
You can highlight the terms by the frequency with which they occur in the written English language using the menu below. The frequency data is extracted from the English Wikipedia corpus, and updated regularly. If you just care about the words’ direct semantic similarity to clouds, then there’s probably no need for this.
There are already a bunch of websites on the net that help you find synonyms for various words, but only a handful that help you find related, or even loosely associated words. So although you might see some synonyms of clouds in the list below, many of the words below will have other relationships with clouds — you could see a word with the exact opposite meaning in the word list, for example. So it’s the sort of list that would be useful for helping you build a clouds vocabulary list, or just a general clouds word list for whatever purpose, but it’s not necessarily going to be useful if you’re looking for words that mean the same thing as clouds (though it still might be handy for that).
If you’re looking for names related to clouds (e.g. business names, or pet names), this page might help you come up with ideas. The results below obviously aren’t all going to be applicable for the actual name of your pet/blog/startup/etc., but hopefully they get your mind working and help you see the links between various concepts. If your pet/blog/etc. has something to do with clouds, then it’s obviously a good idea to use concepts or words to do with clouds.
If you don’t find what you’re looking for in the list below, or if there’s some sort of bug and it’s not displaying clouds related words, please send me feedback using this page. Thanks for using the site — I hope it is useful to you! 🐲
That’s about all the clouds related words we’ve got! I hope this list of clouds terms was useful to you in some way or another. The words down here at the bottom of the list will be in some way associated with clouds, but perhaps tenuously (if you’ve currenly got it sorted by relevance, that is). If you have any feedback for the site, please share it here, but please note this is only a hobby project, so I may not be able to make regular updates to the site. Have a nice day! 🐹
Время на прочтение
4 мин
Количество просмотров 3.4K
Всем привет! Хочу продемонстрировать вам, как я использовал библиотеку WordCloud для создания подарка для друга/подруги. Я решил составить облако слов по переписке с человеком, чтобы выделить основные темы, которые мы обсуждаем.
Выгружаем переписку
Для начала нам нужно будет выгрузить переписку из ВК. Как это сделать? Очень просто! Я пользовался расширением для браузера «VkOpt». Скачиваем его и устанавливаем. Теперь заходим в диалог с человеком, переписку с которым хотим скачать.
Наводим на три точки и выбираем «сохранить переписку». Далее будет окно с выбором типа файла. Я предпочитаю json.
Обработка переписки
Импортируем json и открываем наш файл с перепиской.
import json
vk = open('vk2.json', 'r', encoding='utf8')
vk = json.load(vk)
Теперь давайте выведем его и посмотрим как он выглядит.
Ну в общем всё ясно, массив таких вот сообщений. Каждый элемент соответствует одному облако-сообщению.
Давайте теперь вытащим из каждого сообщения его текст и разделим этот текст на слова.
mas = []
for i in range(len(vk)):
mas.append(vk[i]['body'].split())
data = []
for i in mas:
for j in range(len(i)):
data.append(i[j].lower())
Теперь у нас есть массив data, в котором каждый элемент — это одно слово. Далее создадим большую строку, в которую просто запишем через пробел все наши слова.
big_string=''
for i in range(len(data)):
big_string+=(data[i]+' ')
WordCloud
Почти всё готово, теперь давайте воспользуемся библиотекой WordCloud и построим наше облако слов.
pip install wordcloud
import matplotlib.pyplot as plt
%matplotlib inline
from wordcloud import WordCloud, STOPWORDS
wordCloud = WordCloud(width = 10000, height = 10000, random_state=1, background_color='black', colormap='Set2', collocations=False).generate(big_string)
plt.figure(figsize=(5,5))
plt.imshow(wordCloud)
Убираем стоп-слова
Так, и что же это? Не очень похоже на оригинальный подарок. Естественно всё не так просто. Дело в том, что в нашей речи и сообщениях встречается куча стоп-слов. Собственно, эти слова вы и видите на картинке. Они встречались в диалоге чаще всего, поэтому алгоритм выделил их крупным шрифтом.
Теперь наша задача: почистить строку от ненужный слов. Для этого скачаем словарик стоп-слов русского языка(https://snipp.ru/seo/stop-ru-words). Он представлен как обычный txt-шник, а значит прочитаем его и разделим по переносу строки.
stop_words = open('stop-ru.txt', 'r', encoding='utf8')
stop_words = stop_words.read()
stop_words = stop_words.split('n')
Далее создадим массив clear_data, куда будем заносить слова из массива data, которые не содержатся в списке стоп-слов(т. е. нормальные слова).
clear_data=[]
for i in data:
if(i not in stop_words):
clear_data.append(i)
А теперь формируем нашу большую строку, только теперь из нового массива и заново строим WordCloud.
big_string=''
for i in range(len(clear_data)):
big_string+=(clear_data[i]+' ')
wordCloud = WordCloud(width = 10000, height = 10000, random_state=1, background_color='black', colormap='Set2', collocations=False).generate(big_string)
plt.figure(figsize=(5,5))
plt.imshow(wordCloud)
Результат на лицо. Начинает проявляться оттенок переписки с тем или иным человеком. Ну и, естественно, куда же мы русского могучего, он тоже начинает проявляться на изображении, приходится его замазывать
Переходим на ручное управление
Так, вроде стоп-слова убрали, но картинка всё равно не выглядит привлекательной. В выборке остались различные выражения, которые мы часто используем в переписке. Например, мои слова паразиты: «ок», «ща», «крч». Что делать? Все просто. Открываем наш текстовик с русскими стоп-слова и просто вписываем туда слова, которые не должны присутствовать в новом облаке слов(не забудьте сохранить текстовик, перед повторным чтением).
P.S. На самом деле есть и второй вариант удалить слова паразиты. Создадим массив, который заполним словами паразитами, и подадим его как параметр в WordCloud. Тоже хороший вариант, но мне больше нравится с текстовиком.
stopw = ['а', 'ок', 'крч'] #массив слов, которые хотим удалить
#подадим массив stopw в WordCloud как параметр stopwords
wordCloud = WordCloud(width = 1000, height = 1000, random_state=1,
background_color='black', colormap='Set2',
collocations=False, stopwords=stopw).generate(big_string)
Таким образом, мы всё глубже и глубже погружаемся в чертоги нашей переписки. Обычно появляются слова, соответствующие темам, которые вы и ваш друг часто обсуждаете.
Форма облака слов
Теперь давайте воспользуемся одной фишкой WordCloud. Оформим наше облако слов в виде какой-то картинки. Я выберу банальное сердечко)
from PIL import Image
original_image = Image.open('путь до картинки')
image = original_image.resize([2000,2000], Image.ANTIALIAS)
image = np.array(image)
Подадим в функцию нашу картинку как параметр mask.
wordCloud = WordCloud(width = 1000, height = 1000, random_state=1,
background_color='black', colormap='Set2',
collocations=False, stopwords=stopw, mask=image).generate(big_string)
Вот такая штука у меня получилась.
По-хорошему, нужно удалить ещё около десятка слов, для более-менее приятной картины, но я уверен ту вы справитесь сами)
P.S. Выбирайте черно-белые изображения предметов. Лучше всего, если они выглядят как силуэты. С .png у меня не прошло, поэтому я сохранял в .jpg, может быть у вас получится.
Итог
Я нарисовал облако слов, которое отражает тональность переписки с тем или иным человеком. Дополнительно, в облаке содержатся слова, которые соответствуют тем темам, которые вы часто обсуждали в диалоге. Как вариант, можно сохранить эту картинку, распечатать, поставить в рамочку и вручить как подарок вашему собеседнику. Ему будет очень приятно, ведь всегда интересно посмотреть на то, как оценивает вашу переписку алгоритм)
Variety and novelty in English lessons encourage learners to be more engaged. On the contrary, monotonous tasks, no matter how useful they are, cause boredom. How to bring variety without too many changes in the process of learning vocabulary? Use word clouds.
Word clouds are a graphical representation of words and words combinations. They can be used for:
- vocabulary revision
- presenting lexis
- practicing new words
- student’s projects.
It is just a more visually appealing way to teach vocabulary. Instead of using lists, which students are probably fed up with, make clouds. You can utilize them for word searches, making monologues and dialogues, word games, writing tasks, etc.
Here are some examples of the tasks.
Task 1
Make a story about a detective investigating a case using all the words and tell your partner (the teacher).
Task 2
Work in pairs. Ask and answer five questions using the words.
Task 3
Give a definition of one of the words. Can your partner guess the word? Swap roles.
There are some services for creating word clouds:
Word Art
Wordle
Word clouds
I personally prefer to use Word art because it’s possible to create clouds containing collocations. As we know teaching collocations is more effective for learners. Other services just break the word pairs into single words.
Let’s see how to create word clouds using Word art. It’s quick and easy, no registration is required. So click ‘Create’ and make your cloud.
Step 1
Fill in the words or word combinations. You can type as many words as you need, even 30 or even 50. It’s possible to Capitalize letters, use the UPPER or lower case. Click ‘Options’ and opt for repetition of the words as you see in one of the pictures above or choose no repetition.
Step 2
Choose the shape of your cloud: animals, nature, people or some holidays themes. If you want to see the changes, click the red button ‘Visualize’.
For example, this charming ladybird will definitely catch kids’ interest.
Step 3
Choose a font which you like. There are more than 50 fonts to select.
Step 4
Pick out a layout: horizontal, vertical, crossing words, dancing words, slopes and random. The layout will depend on the task and the learners. Teens prefer something less ordinal and more creative. For adults, I usually make more conservative things like a horizontal layout.
Step 5
Choose a style: colours of the words and the background. If you want to change a colour of the words, click ‘Words colours’ and ‘Custom’ and add more colours to the pallette.
Step 6
To apply all the changes, press ‘Print’ or ‘Download’ your cloud and enjoy it in your lessons.
Первая гимназия
WORD CLOUD
как прием активизации речи на уроке английского языка
(из опыта работы)
Дашкевич И.В.
учитель английского
языка
Петропавловск,2014г
Учение, лишённое всякого интереса и взятое только силой принуждения убивает в ученике охоту к овладению знаниями.
Приохотить ребёнка к учению — гораздо более достойная задача, чем приневолить.
К.Д. Ушинский
Модернизация современного языкового образования в школе требует поиска эффективных путей активизации процесса обучения иностранному языку. В своей работе мы стараемся применять такие приемы обучения, которые способствуют поддержанию интереса учащихся к иностранному языку, помогают вовлечь в иноязычную речевую деятельность всех школьников, повышают эффективность урока.
Сейчас эффективность применения информационных технологий на занятиях английского языка уже не подлежит сомнению. Применение интернет-сервисов имеет ряд преимуществ: запоминание ключевых слов, тренировка образной памяти, проведение мозгового штурма, анализ основных идей текста, активация предварительных знаний.
Я расскажу о приеме использования компьютерной программы, так называемом «облако слов» или “word cloud ”на уроке английского языка.
Word Cloud -это ресурс, позволяющий создать визуальный образ ключевых слов текста в привлекательной форме. Вводите в специальное поле текст или URL (адрес сайта), и программа генерирует облако, отображая наиболее часто используемые слова крупным шрифтом.
В своей работе я использую, в основном, следующие ресурсы:
http://www.wordle.net , www.tagul.com , http://tagxedo.com http://www.abcya.com (для детей)
Работать с сервисами совсем не сложно. Попробуйте все варианты и выбирайте тот, который больше понравится и больше подходит для реализации поставленных целей и задач.
Прием работы с word cloud необычен, забавен, весьма полезен для визуалов (тех, кто воспринимает большую часть информации с помощью зрения). С одной стороны, это просто возможность создать красивую картинку для доклада или презентации. С другой — полезный в обучении иностранным языкам инструмент, которому можно найти массу интересных применений.
Получившееся изображение можно распечатать в виде плаката и повесить в классе. Яркие картинки будут привлекать внимание, а слова на них неизбежно откладываться в памяти. Кроме того, можно составлять и распечатывать словесные изображения, когда ученики готовят пересказ или реферирование текста – ключевые понятия помогут без труда восстановить общий смысл.
Я вижу большие возможности использования «Word clouds» на уроках английского языка:
- При введении в тему
- При повторении в начале урока
- При систематизации, повторении материала
- При работе с текстом
- При работе с языковым и грамматическим материалом и.т.д.
- При контроле.
В своей работе я использую эти “облака” для достижения различных целей.
I. Warming up/ Prediction
— Организовать «мозговой штурм» в результате, которого ученик может сформулировать содержание по ключевым словам тему урока или проблему, над которой ему предстоит работать.
II. Фонетическая зарядка
— Каждый ученик (пара) получает определённый звук, например [p]
и подбирают не менее 20 слов с данным звуком (в начале, середине или в конце слова), выходят на сайт, создают «облако» на основе своих слов.
Затем делают скриншоты своих «облаков», сохраняют их, обмениваются и определяют звук для каждого «облака»
III. Введение и первичное закрепление лексического материала.
— На этапе введения новой лексики можно составить “облако” из слов одной темы, например, названий видов транспорта, показывая картинки, попросить детей найти соответствующие названия из “ облака”.
— На этапе тренировки использования новых лексических единиц моим ученикам очень нравится следующая игра — найти в облаке слова по какой-либо теме. Например, для своих восьмиклассников при изучении темы “The World of Shopping” я составила облако по 3 темам: фрукты/ овощи, контейнеры, магазины и дети находят лексику сначала по одной теме, потом по второй и третьей.
— Ученики могут выделять наиболее важные слова в текстах для их дальнейшего запоминания или анализа, использовать полученные облака слов в качестве основы (плана) рассказа или презентации.
IV .Для отработки грамматического материала.
— из “облака слов” нужно составить длинное предложение, содержащее грамматическую структуру, которую Вы хотите повторить (изучить) или проверить (I have never been so happy in the whole life) или порядок слов в предложении.
— сделайте “облако слов” из вопросов, объединяющих определенную тему по грамматике для повторения, f.e. conditionals
— учащиеся должны составить вопросительные условные предложения, используя все слова из «облака», сравнивают свои предложения с предложениями партнера или ученика из другой группы.
— Каждый ученик из пары или группы находит другого ученика, задает свои вопросы, в то время, как Вы контролируете и делаете пометки для последующего обсуждения.
V. Для работы с текстом для чтения или аудирования
Pre-reading Tasks.
— Показать” облако ” слов, взятых из незнакомого текста. Выделяя курсором ключевые слова, можно предсказать идею текста, тему…
-Создать облако на основе текста по теме, которую Вы планируете обсуждать, либо по теме, на которую кто-то из учащихся планирует делать небольшой доклад. Очень интересно сопоставить прогнозы учащихся о тексте, глядя на “облака”c фактическим содержанием текста. Далее спросить, что студенты уже знают об этом событии, почему именно те или иные слова выделены
Этот вид работы может осуществляться как со всем классом, так и в группах (учитель может распечатать “облака” заранее и раздать их в группах).
— Включить в “облако” все слова, которые необходимо разобрать перед чтением нового текста/прослушиванием аудио, составить предложения с ними.
Например, текст о Милне (7 класс, Верещагина О.В) При наведении курсора на слова, оно увеличивается в размере и выделяется.
— Составить и ответить на вопросы для понимания из “облака”, затем сравнить ответы после чтения фактического текста
— Подвести итоги предсказания
While-reading Tasks
— Превратить текст (эссе, сообщение, абзац, статья, и т.п.) в “облако”, где выделенные ключевые слова можно использовать для расширения словарного запаса, найти определения, синонимы, антонимы…
Попросите ваших учеников при прослушивании текста делать пометки, чтобы позже ключевые слова из “облака” помогли им вспомнить содержание текста.
Post-reading tasks.
— Ученик выбирает одно слово из “облака” для обсуждения
— Если ученики имеют хороший уровень знаний, можно попросить их реконструировать текст по ключевым словам.
— Учащиеся составляют свои предложения и делают свои «облака слов», обмениваются и восстанавливают текст по рисунку друга.
— Создать “облака” из ключевых слов изучаемого текста, распечатать и развесить в классе для запоминания.
— Написать слова и фразы, которые ассоциируются у учащихся с определённой темой, создайте. Студентам должны обсудить словарное облако, уделяя особое внимание самым популярным словам.
VI. Для совершенствования речи
— Написать рассказ о себе в “word cloud”. Ученики будут иметь возможность видеть ключевые слова, слушать другого ученика и представлять все то, что важно для их сверстников. Сравните слова, которые используются чаще всего мальчиками или девочками, по возрастным группам. Эти уроки желательно проводить на интерактивной доске.
— Я составила “облако” о своих летних каникулах( в Wordout и Wordle ), а мои ученики о своих . Потом мы обменялись работами и ученики должны были составить рассказ о каникулах по картинке. Прослушав внимательно рассказы, потом обсудить, что было угадано и сказано верно о каникулах товарищей.
Использование этого ресурса можно распространить на изучение пословиц, идиом (например, с определённым словом или на определённую тему) и просто для составления рассказов. Вместе с тем их можно использовать даже для подготовки к ЕНТ или ВОУД или реализации мини-проектов.
Данные приемы мотивируют на устно-речевое высказывание, так как перед учениками есть цель; учащиеся активны при их выполнении, так как присутствует связь с личностью и мыслительной деятельностью ученика. В данных приемах есть элемент неожиданности и эвристичности.
Результативность
Использование сервиса «Облака слов» позволяет учителю разнообразить учебный процесс, тем самым увеличить эффективность обучения и способствовать дополнительной мотивации учащихся на урок, формируются благоприятные условия для развития пространственного и критического мышления, аналитических способностей учащихся, эмоциональные и ценностные категории, навыки структуирования, классификации и моделирования, умения выделять главное, развивается творчество и способность к непрерывному самообразованию. Наглядная подсказка в виде ключевых слов – это замечательный способ стимулировать беглую речь.
Источники
1. Богданов С.А. Развитие познавательного интереса при обучении в компьютерной среде.//Материалы международной конференции-выставки «Информационные технологии в образовании» —Москва, 2001.
2. Ниязова Айгуль Есенгельдиевна. Активизация процесса обучения учащихся седьмых-восьмых классов общеобразовательной школы говорению на английском языке. Санкт-Петербург. 2004
2. Тороп Валерия Валерьевна Облака слов в повседневной практике учителя социально-гуманитарного профиля
3. Блог Марины Курвитс. Сервисы для создания облака слов и 51 способ их использования в обучении.
4. Рудинская В.В. Облако слов (презентация)
5.Полезные ресурсы — создаем словарные облака с помощью Wordle.
6. http://www.nachalka.com/wordle
7. http://turlainata.blogspot.com/2013/10/blog-post.html
8. http://www.slideshare.net/ShellTerrell/teaching-with-word-cloud-tools
9. http://tmo.ito.edu.ru/2013/section/222/97187/
Пакет Wordcloud в Python помогает нам узнать частоту появления слова в текстовом контенте с помощью визуализации.
Чтобы реализовать это, нам нужно сначала установить некоторые пакеты, такие как pandas, matplotlib и Wordcloud. Давайте посмотрим на этапы установки каждого.
Установка Pandas
Pandas – отличный инструмент для реализации анализа и визуализации данных в Jupyter Notebook. Его можно импортировать в наш исходный код следующим образом:
import pandas as pd
PD относится к процессу создания псевдонимов, с помощью которого могут быть созданы фреймы данных, и это упрощает читаемость кода.
Pandas можно установить двумя способами:
- Использование командной строки.
Давайте посмотрим, как мы можем установить pandas с помощью командной строки:
- Открыть командную строку.
- Ввести данную команду:pip install pandas
- После нажатия «Enter» пакеты начнут загружаться в систему.
Эту же команду можно использовать в Linux в терминале для установки pandas в нашей системе.
- С помощью Anaconda Navigator.
Второй способ установить pandas – использовать Anaconda Navigator.
- Откройте Anaconda Navigator.
- Щелкните вкладку «Среда» и перейдите к параметру создания, чтобы настроить Pandas в вашей системе.
- Нажмите на кнопку «Создать» для среды Pandas.
- В списке пакетов выберите «Все», чтобы получить фильтры.
- Перейдите в строку поиска, найдите «Pandas» и выберите «Pandas package».
- Щелкните правой кнопкой мыши флажок и выберите «Отметить для установки определенной версии».
- Выберите версию, которую хотите установить, и нажмите кнопку «Применить», чтобы установить пакеты.
Установка Matplotlib
Matplotlib – обширная и интересная библиотека для людей, которые с энтузиазмом относятся к выводам результатов из данных, включает в себя диаграммы рассеяния, гистограммы, коробчатые диаграммы и многое другое, что упрощает нам понимание.
Matplotlib можно установить, выполнив следующие действия:
- Использование командной строки.
Matplotlib можно установить в нашей системе с помощью данной команды в командной строке:
pip install matplotlib
- Использование Anaconda.
Мы можем установить matplotlib с помощью Anaconda, набрав следующую команду в Anaconda Prompt:
conda install matplotlib
Проверка установки
Мы можем проверить, успешно ли установлен matplotlib в нашей системе или нет, набрав данную программу в терминале.
import matplotlib matplotlib.__version__
Как обсуждалось ранее, это дает нам представление о наиболее часто встречающихся словах в тексте с помощью визуального элемента.
WordCloud можно установить, выполнив следующие действия:
- с помощью данной команды в командной строке:
pip install wordcloud
- Используя Anaconda, ввести следующую команду в строке:
conda install -c conda-forge wordcloud
Теперь давайте посмотрим на простую программу, которая показывает, как wordcloud можно использовать в Python.
Мы взяли этот фрагмент текста с веб-сайта и сохранили как файл sunflowers1.txt.
sunflowers1.txt
"Sunflowers are heliotropic, which means that they turn their flowers to follow the movement of the Sun across the sky east to west, and then returns at night to face the east, ready again for the morning sun. Heliotropism happens during the earlier stages before the flower grows heavy with seeds. There are tons of varieties of sunflowers available today, so there's bound to be one that fits your garden. Choose between those with branching stems or single stems, those that produce ample pollen for pollinators or are pollen-free(best for bouquets), those that stay small or tower above the rest of the garden, or those that produce edible seeds! "
Реализация кода:
import re import matplotlib.pyplot as plt from wordcloud import WordCloud, STOPWORDS text = open("/content/sunflowers1.txt", "r").read() # Clean text text = re.sub(r'==.*?==+', '', text) text = text.replace('n', '') # Define a function to plot word cloud def plot_cloud(wordcloud): # Set figure size plt.figure(figsize=(40, 30)) # Display image plt.imshow(wordcloud) # No axis details plt.axis("off") # Generate word cloud wordcloud = WordCloud(width = 3000, height = 2000, random_state=1, background_color='salmon', colormap='Pastel1', collocations=False, stopwords = STOPWORDS).generate(text) plot_cloud(wordcloud)
Выход:
Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.
Создаем облако слов в Python
Облако слов в Python представляет собой визуализированный набор слов с наибольшей частотой использования в тексте или базе данных. Чем чаще встречается слово в источнике, тем большим размером шрифта оно написано в облаке слов. Таким образом, благодаря визуальным эффектам, читатель с первого взгляда на, казалось бы, мило перемешанную кашу из слов, способен сформировать общее представление о сути текста или содержимого базы данных. Выходит, эта «каша» — весьма полезное блюдо для анализа данных, поэтому самое время взглянуть на рецепт приготовления и сформировать облако слов в Python!
В качестве примера мы рассмотрим датасет с информацией о статьях текущего сайта. Сформируем облако слов в Python на основе текстовой информации из колонки «Title». Действовать будем поэтапно:
- Сначала мы загрузим датасет
- После этого познакомимся с основным принципом создания облака слов и сформируем стандартное прямоугольное облако на неочищенных данных.
- Затем, используя функции препроцессинга текста, преобразуем наши данные и выведем прямоугольное облако на подготовленных данных.
- И в заключение, сформируем облако слов в виде фигуры, загруженной в качестве маски из jpg-изображения. В нашем случае это будет фигура самолета.
Итак, открываем редактор, потому как пришло время покодить!
1. Загружаем датасет
Скачать файл с данными можно по ссылке: «articles.csv». Для загрузки датасета нам необходимо импортировать библиотеку pandas, после чего можно загружать данные из файла в переменную data с помощью функции open(). Так как у меня датасет находится в одной папке со скриптом, то относительный путь, передаваемый в качестве аргумента функции open(), совпадает с названием файла:
import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv("articles.csv") data.head()
Отлично, данные загружены, можно приступать к созданию облака слов!
2. Создаем первое облако слов в Python — знакомимся с основным принципом на сырых данных:
Сейчас мы намеренно пропустим процесс подготовки данных, чтобы посмотреть, какое облако слов сформируется из сырого текста. Единственное, что нам потребуется сделать — это объединить данные из колонки «Title» в один текст. Это легко сделать с помощью функции «join» — добавленная строка выделена подсветкой:
import pandas as pd # Считываем содержимое файла в переменную data data = pd.read_csv("articles.csv") data.head() # Объединяем данные из колонки 'Title' text = ' '.join(data['Title'])
А теперь загрузим класс WordCloud из библиотеки wordcloud и сгенерируем облако слов с помощью функции generate(). В качестве аргумента функции generate() передадим наш текст. После этого выведем сгенерированное облако с помощью библиотеки matplotlib. Добавленные на этом этапе строки выделены в коде подсветкой:
import pandas as pd import matplotlib.pyplot as plt # загружаем класс WordCloud из библиотеки wordcloud from wordcloud import WordCloud data = pd.read_csv("articles.csv") text = ' '.join(data['Title']) # Генерируем облако слов и сохраняем в переменной cloud cloud = WordCloud().generate(text) # Выводим облако слов на экран plt.imshow(cloud) # Отключаем отображение осей plt.axis('off')
В результате исполнения кода, получим:
3. Осуществляем предобработку текста
3.1. Удаляем стоп-слова
На первый взгляд, получилось довольно приятное облако. Однако, после второго взгляда хочется воскликнуть: «Обманули! Подменили!..» и так далее. Ведь мы на самом деле ожидали, что крупным шрифтом будут написаны основные значащие слова, а вместо этого на переднем плане оказались теряющие смысл без контекста предлоги: «как, в, на, и». Эти предлоги называются стоп-словами, и они действительно чаще всего используются в нашей речи, однако в большинстве случаев при анализе текста, являются лишним шумом. Этот фактор был учтен создателями библиотеки wordcloud, и для объекта облака слова WordCloud() был добавлен параметр stopwords. По умолчанию, значение этого параметра «None», это значит, что функция использует встроенный список стоп-слов, среди которых присутствуют английские слова, но нет русских. Поэтому при выводе облака слов на основе английского текста, не нужно менять значение параметра stopwords — предлоги, союзы и прочие артикли будут исключены автоматически. В нашем же случае, необходимо передать параметру stopwords список со стоп-словами русского языка. Этот список есть в библиотеке nltk. Давайте это сделаем! (добавленные строки выделены подсветкой):
import pandas as pd from wordcloud import WordCloud import matplotlib.pyplot as plt # подгружаем библиотеку nltk со стоп-словами from nltk.corpus import stopwords # сохраняем список с русскими стоп-cловами в переменную stop_words stop_words = stopwords.words('russian') data = pd.read_csv("articles.csv") text = ' '.join(data['Title']) # Определяем параметр stopwords при создании объекта облака слов cloud = WordCloud(stopwords=stop_words).generate(text) plt.imshow(cloud) plt.axis('off')
3.2. Разбиваем текст на токены и получаем леммы
Отлично! Теперь предлоги исчезли из облака слов! Однако, выводятся слова с разными склонениями, такие как «помощи», «изображений», «файла» и т. д. Конечно, можно оставить оставить эти слова в покое, однако я предлагаю добавить немного строк кода, чтобы привести их все к основной форме до загрузки текста в функцию generate(). Для этого мы будем использовать библиотеку созданную для лемматизации русского и украинского языков под названием pymorphy2. Однако, предварительно, нам потребуется разбить текст на слова, другими словами, токенизировать текст:
import pandas as pd from wordcloud import WordCloud import matplotlib.pyplot as plt # Импортируем библиотеку для лемматизации русских и украинских слов import pymorphy2 # Импортируем метод word_tokenize из библиотеки nltk from nltk.tokenize import word_tokenize from nltk.corpus import stopwords stop_words = stopwords.words('russian') data = pd.read_csv("articles.csv") text = ' '.join(data['Title']) # разбиваем текст на токены # в результате получаем переменную типа list со списком токенов text = word_tokenize(text) # инициализируем лемматайзер MorphAnalyzer() lemmatizer = pymorphy2.MorphAnalyzer() # функция для лемматизации текста, на вхд принимает список токенов def lemmatize_text(tokens): # создаем переменную для хранения преобразованного текста text_new='' # для каждого токена в тексте for word in tokens: # с помощью лемматайзера получаем основную форму word = lemmatizer.parse(word) # добавляем полученную лемму в переменную с преобразованным текстом text_new = text_new + ' ' + word[0].normal_form # возвращаем преобразованный текст return text_new # вызываем функцию лемматизации для списка токенов исходного текста text = lemmatize_text(text) # генерируем облако слов cloud = WordCloud(stopwords=stop_words).generate(text) plt.imshow(cloud) plt.axis('off')
В код была добавлена токенизация исходного текста, а также функция для лемматизации полученного списка токенов <strong>lemmatize_text()</strong>. По завершению цикла <strong>for</strong> функция <strong>lemmatize_text()</strong> возвращает строку с преобразованным текстом, прошедшим через токенизацию и лемматизацию! Посмотрим на результат:
Отлично! Теперь содержание нашего облака на высоте, а значит, пришло время побаловаться с параметрами WordCloud и поправить обертку! Для начала я предлагаю изменить форму облака слов!
4. Меняем форму облака слов
Чтобы изменить форму облака слов, нужно:
- Загрузить изображение, которое будет использоваться в качестве маски при формировании облака, и преобразовать его в матрицу
- Передать параметру mask в качестве значения полученную матрицу
- По желанию добавить параметры обводки полученной фигуры: contour_width и contour_color
Реализуем задуманное: загрузим изображение «plane.jpg» и определим параметры в WordCloud():
import pandas as pd from wordcloud import WordCloud import matplotlib.pyplot as plt import pymorphy2 import nltk from PIL import Image # импортируем библиотеку numpy для преобразования изображения в массив import numpy as np from nltk.tokenize import word_tokenize from nltk.corpus import stopwords stop_words = stopwords.words('russian') data = pd.read_csv("articles.csv") text = ' '.join(data['Title']) text = word_tokenize(text) lemmatizer = pymorphy2.MorphAnalyzer() def lemmatize_text(tokens): text_new='' for word in tokens: word = lemmatizer.parse(word) text_new = text_new + ' ' + word[0].normal_form return text_new text = lemmatize_text(text) # загружаем изображение с самолетом и преобразуем в матрицу cake_mask = np.array(Image.open('plane.jpg')) # генерируем облако слов cloud = WordCloud(stopwords=stop_words, mask=cake_mask, contour_width=10, contour_color='#2e3043').generate(text) # увеличим размер выводимой фигуры plt.figure(figsize=(9,5)) plt.imshow(cloud) plt.axis('off')
Посмотрим на результат:
Неплохо, однако, не мешало бы поиграться с параметрами WordCloud, изменить размеры изображения и цвета на свой вкус.
У нас появился Telegram-канал для изучающих Python! Подписывайтесь по ссылке: «Кодим на Python! Вместе «питонить» веселее! 😉
Редактируем облако слов в Python: меняем фон, цветовую схему и максимальное количество слов
У объекта WordCloud довольно много настраиваемых параметров. Описание всех параметров можно найти по ссылке в документации. Сейчас мы изменим значения лишь некоторых из них:
- background_color — цвет фона, заданный по умолчанию черный цвет фона я хочу поменять на background-color=’#272d3b’
- colormap — цветовая схема — это набор цветов, которыми будут раскрашены буквы в облаке слов. Полный набор цветовых схем можно посмотреть по ссылке: Цветовые схемы matplotlib. Я установлю значение colormap=’Set3′
- Максимальное количество слов в облаке — параметр max_words. Уменьшу количество слов до 80, max_words=80
Таким образом, после внесенных изменений итоговый код имеет вид:
import pandas as pd from wordcloud import WordCloud import matplotlib.pyplot as plt import pymorphy2 import nltk from PIL import Image # импортируем библиотеку numpy для преобразования изображения в массив import numpy as np from nltk.tokenize import word_tokenize from nltk.corpus import stopwords stop_words = stopwords.words('russian') data = pd.read_csv("articles.csv") text = ' '.join(data['Title']) text = word_tokenize(text) lemmatizer = pymorphy2.MorphAnalyzer() def lemmatize_text(tokens): text_new='' for word in tokens: word = lemmatizer.parse(word) text_new = text_new + ' ' + word[0].normal_form return text_new text = lemmatize_text(text) # загружаем изображение с самолетом и преобразуем в матрицу cake_mask = np.array(Image.open('plane.jpg')) # генерируем облако слов cloud = WordCloud(stopwords=stop_words, mask=cake_mask, contour_width=10, contour_color='#2e3043', background_color='#272d3b', colormap='Set3', max_words=80).generate(text) # увеличим размер выводимой фигуры plt.figure(figsize=(9,5)) plt.imshow(cloud) plt.axis('off')
Отлично! Теперь полученное облако слов выводится в виде симпатичного самолета:
Заключение:
Поздравляю вас с успешно проделанной работой! Мы изучили основной принцип формирования облака слов в Python, подготовили русский текст для формирования корректного облака, а также научились менять цвет и форму облака слов. В итоге у нас получилось 2 вида облаков: стандартное облако в виде прямоугольника, и облако в форме самолета!