Итак, у нас есть эта практика кода для создания облака слов, кажется очень простой, поскольку он просто создает словарь ... но каким-то образом код, который они предоставили для выполнения облака слов, дает мне ошибку
"TypeError: Image data cannot be converted to float".
Я проверил тот же текстовый файл, который использовался на моем собственном компьютере только для создания словаря, и подтвердил, что значения действительно являются целыми числами, поэтому я застрял. Размещение всего кода, представленного ниже:
!pip install wordcloud
!pip install fileupload
!pip install ipywidgets
!jupyter nbextension install --py --user fileupload
!jupyter nbextension enable --py fileupload
import wordcloud
import numpy as np
from matplotlib import pyplot as plt
from IPython.display import display
import fileupload
import io
import sys
Это виджет загрузчика, который они нам дали
def _upload():
_upload_widget = fileupload.FileUploadWidget()
def _cb(change):
global file_contents
decoded = io.StringIO(change['owner'].data.decode('utf-8'))
filename = change['owner'].filename
print('Uploaded `{}` ({:.2f} kB)'.format(
filename, len(decoded.read()) / 2 **10))
file_contents = decoded.getvalue()
_upload_widget.observe(_cb, names='data')
display(_upload_widget)
_upload()
Вот код, который я написал
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"]
# My Code
frequencies = {}
floatdic = {}
case = file_contents.split()
for word in case:
words = word.strip(punctuations)
lower = words.lower()
if lower.isalpha() == False or lower in uninteresting_words:
continue
elif lower not in frequencies:
frequencies[lower]= 0
frequencies[lower]+=1
return frequencies
#Their Code Provided for wordcloud
cloud = wordcloud.WordCloud()
cloud.generate_from_frequencies(frequencies)
cloud.to_file("myfile.jpg")
return cloud.to_array()
Затем они дайте этот код, чтобы выполнить слово cloud
myimage = calculate_frequencies(file_contents)
plt.imshow(myimage, interpolation = 'nearest')
plt.axis('off')
plt.show()
, которое вылетает в строке "plt.imshow". Они запускают этот код на ноутбуке Jupyter, если это поможет