wordcloud для файла csv в python

у меня есть файл csv с 2 столбцами (dataframe) столбец 1 содержит предложение я люблю банан

а столбец 2 содержит класс, который у меня есть 5 classes

Мне нужно облако слов для каждого класса, на самом деле все семенции, соответствующие каждому классу, можно ли это сделать? попробуйте этот код, но id не работает

import matplotlib.pyplot as plt
cloud = WordCloud(background_color="white", max_words=20, stopwords=stopwords)
tuples = tuple([tuple(x) for x in df.Phrase.value_counts().reset_index().values])
a = cloud.generate_from_frequencies(tuples)

plt.imshow(a)
plt.axis("off")
plt.title("a")
plt.show()

пример наборов данных

text                           classe
i love banana                 positive 
i hate banana                 negetive
maybe i love maybe no         neutral
bit yes bit no                not_sure
wooooooooooow                 like_it

person Amal Kostali Targhi    schedule 12.02.2017    source источник
comment
@MaxU да, я изменяю описание   -  person Amal Kostali Targhi    schedule 12.02.2017
comment
@MaxU да, я изменил описание   -  person Amal Kostali Targhi    schedule 13.02.2017
comment
Да, я это заметил. Сейчас я изучаю, как работает wordcloud... ;)   -  person MaxU    schedule 13.02.2017
comment
Если я правильно понимаю, вы хотите иметь 5 изображений (облаков) - по одному на класс, я правильно вас понял?   -  person MaxU    schedule 13.02.2017
comment
@MaxU именно то, что мне нужно   -  person Amal Kostali Targhi    schedule 13.02.2017


Ответы (1)


Вот пример для одного класса: positive.

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

In [79]: df
Out[79]:
                    text    classe
0          i love banana  positive
1             love apple  positive
2       love, love, love  positive
3          i hate banana  negative
4               it sucks  negative
5  maybe i love maybe no   neutral
6         bit yes bit no  not_sure
7          wooooooooooow   like_it

Решение:

In [80]: %paste
from wordcloud import WordCloud
from nltk.corpus import stopwords

cloud = WordCloud(background_color="white", max_words=20, stopwords=stopwords.words('english'))

positive_cloud = cloud.generate(df.loc[df.classe == 'positive', 'text'].str.cat(sep='\n'))
plt.figure()
plt.imshow(positive_cloud)
plt.axis("off")
plt.show()
## -- End pasted text --

Результат:

введите здесь описание изображения

Некоторые пояснения:

сгенерированный текст для одного class:

In [81]: df.loc[df.classe == 'positive', 'text'].str.cat(sep='\n')
Out[81]: 'i love banana\nlove apple\nlove, love, love'
person MaxU    schedule 12.02.2017