Как создать облако слов из корпуса в Python?
От создавая подмножество слов из корпуса в R, ответчик может легко преобразовать term-document matrix в облако слов.
Существует ли аналогичная функция из библиотек python, которая принимает либо необработанный текстовый файл word, либо NLTK corpus, либо Gensim Mmcorpus в облако слов?
Результат будет выглядеть примерно так:

5 ответов:
Вот запись в блоге, которая делает именно это: http://peekaboo-vision.blogspot.com/2012/11/a-wordcloud-in-python.html
Весь код здесь: https://github.com/amueller/word_cloud
Если вам нужны эти облака слов для их отображения на веб-сайте или в веб-приложении, вы можете преобразовать свои данные в формат json или csv и загрузить их в библиотеку визуализации JavaScript, такую как d3. облака слов на d3
Если нет, то ответ Марчина-хороший способ сделать то, что вы описываете.
Пример кода амюллера в действии
В командной строке / терминале:
sudo pip install wordcloudЗатем запустите скрипт python:
## Simple WordCloud import matplotlib.pyplot as plt from wordcloud import WordCloud, STOPWORDS text = 'all your base are belong to us all of your base base base' def generate_wordcloud(text): # optionally add: stopwords=STOPWORDS and change the arg below wordcloud = WordCloud(font_path='/Library/Fonts/Verdana.ttf', relative_scaling = 1.0, stopwords = {'to', 'of'} # set or space-separated string ).generate(text) plt.imshow(wordcloud) plt.axis("off") plt.show() generate_wordcloud(text)
from wordcloud import WordCloud, STOPWORDS import matplotlib.pyplot as plt stopwords = set(STOPWORDS) def show_wordcloud(data, title = None): wordcloud = WordCloud( background_color='white', stopwords=stopwords, max_words=200, max_font_size=40, scale=3, random_state=1 # chosen at random by flipping a coin; it was heads ).generate(str(data)) fig = plt.figure(1, figsize=(12, 12)) plt.axis('off') if title: fig.suptitle(title, fontsize=20) fig.subplots_adjust(top=2.3) plt.imshow(wordcloud) plt.show() show_wordcloud(Samsung_Reviews_Negative['Reviews']) show_wordcloud(Samsung_Reviews_positive['Reviews'])
Вот краткий код
#make wordcoud from wordcloud import WordCloud, STOPWORDS import matplotlib.pyplot as plt stopwords = set(STOPWORDS) def show_wordcloud(data, title = None): wordcloud = WordCloud( background_color='white', stopwords=stopwords, max_words=200, max_font_size=40, scale=3, random_state=1 # chosen at random by flipping a coin; it was heads ).generate(str(data)) fig = plt.figure(1, figsize=(12, 12)) plt.axis('off') if title: fig.suptitle(title, fontsize=20) fig.subplots_adjust(top=2.3) plt.imshow(wordcloud) plt.show() if __name__ == '__main__': show_wordcloud(text_str)


Comments