español - ¿Cómo crear una nube de palabras a partir de un corpus en Python?
word cloud python (5)
Aquí está el código corto
#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)
Desde la creación de un subconjunto de palabras de un corpus en R , el que responde puede convertir fácilmente una term-document matrix
en una nube de palabras fácilmente.
¿Existe una función similar de las bibliotecas de python que toma un Gensim
texto de palabra sin Gensim
o un corpus Gensim
o Gensim
Mmcorpus en una nube de palabras?
El resultado se verá algo así:
Aquí hay una publicación de blog que hace precisamente eso: http://peekaboo-vision.blogspot.com/2012/11/a-wordcloud-in-python.html
El código completo está aquí: https://github.com/amueller/word_cloud
En caso de que necesite estas nubes de palabras para mostrarlas en el sitio web o la aplicación web, puede convertir sus datos a formato json o csv y cargarlos en una biblioteca de visualización de JavaScript como d3 . Word Clouds en d3
Si no, la respuesta de Marcin es una buena manera de hacer lo que describe.
Ejemplo de código de amueller en acción.
En línea de comandos / terminal:
sudo pip install wordcloud
Luego ejecuta el script 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''])