Here are all the installation and imports:
!pip install wordcloud!pip install fileupload!pip install ipywidgets!jupyter nbextension install --py --user fileupload!jupyter nbextension enable --py fileuploadimport wordcloudimport numpy as npfrom matplotlib import pyplot as pltfrom IPython.display import displayimport fileuploadimport ioimport sys
This is the uploader widget:
from IPython.display import displayimport fileuploaduploader = fileupload.FileUploadWidget()def _handle_upload(change): w = change['owner'] with open(w.filename, 'wb') as f: f.write(w.data) print('Uploaded `{}` ({:.2f} kB)'.format( w.filename, len(w.data) / 2**10))uploader.observe(_handle_upload, names='data')display(uploader)
The Wordcloud program:
def calculate_frequencies(file_contents): # Here is a list of punctuations and uninteresting words you can use to process your text punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~''' uninteresting_words = ["the", "a", "to", "if", "is", "it", "of", "and", "or", "an", "as", "i", "me", "my", \"we", "our", "ours", "you", "your", "yours", "he", "she", "him", "his", "her", "hers", "its", "they", "them", \"their", "what", "which", "who", "whom", "this", "that", "am", "are", "was", "were", "be", "been", "being", \"have", "has", "had", "do", "does", "did", "but", "at", "by", "with", "from", "here", "when", "where", "how", \"all", "any", "both", "each", "few", "more", "some", "such", "no", "nor", "too", "very", "can", "will", "just"] # LEARNER CODE START HERE non_punctuation_text="" for char in file_contents: if char not in punctuations: non_punctuation_text=non_punctuation_text+char words=non_punctuation_text.split() clean_words=[] frequencies={} for word in words: if word.isalpha(): if word not in uninteresting_words: clean_words.append(word) for alpha_word in clean_words: if alpha_word not in frequencies: frequencies[alpha_word]=1 else: frequencies[alpha_word]+=1 #wordcloud cloud = wordcloud.WordCloud() cloud.generate_from_frequencies(frequencies) return cloud.to_array()
Display our wordcloud image:
myimage = calculate_frequencies(file_contents)plt.imshow(myimage, interpolation = 'nearest')plt.axis('off')plt.show()
Error message:
NameError Traceback (most recent call last)<ipython-input-2-fd0f708f372c> in <module> 1 # Display your wordcloud image 2 ----> 3 myimage = calculate_frequencies(file_contents) 4 plt.imshow(myimage, interpolation = 'nearest') 5 plt.axis('off')NameError: name 'file_contents' is not defined
what part of file_contents
parameter am I missing? Why it is not displaying wordcloud?I tried uploading different .txt
documents from uploader
widget but none is helping.