Я пытаюсь создать облако слов после векторизации текста из PDF, и я получаю следующую ошибку:
невозможно преобразовать число с плавающей точкой в целое число
вот кусочек кода
from wordcloud import WordCloud as wc
DoW = dict(zip(b,a))
zg = wc(max_font_size=12)
p=wc.generate_from_frequencies(zg, frequencies = DoW)
from matplotlib import pyplot as plt
plt.figure(figsize = (50,50))
plt.imshow(p)
замена a списком (range (12) в DoW = dict (zip (b, a)) решает проблему, но я не вижу, что не так с данными в исходной переменной
a и b вырезаны из моего набора данных, где
a: массив ([1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], dtype = int64)
b: ['смягчить',
«Мм»,
«Мобильный»,
«Модель»,
«Модульный»,
«Влаги»,
«Монитор»,
'Больше',
'самый',
'переехать',
«Движение»,
'Много']
Полная ошибка:
p=wc.generate_from_frequencies(zg, frequencies = DoW)
C:\ProgramData\Anaconda3\lib\site-packages\wordcloud\wordcloud.py:464: RuntimeWarning: invalid value encountered in double_scalars
font_size = int(round((rs * (freq / float(last_freq))
Traceback (most recent call last):
File "<ipython-input-120-a3e0214149fa>", line 1, in <module>
p=wc.generate_from_frequencies(zg, frequencies = DoW)
File "C:\ProgramData\Anaconda3\lib\site-packages\wordcloud\wordcloud.py", line 465, in generate_from_frequencies
+ (1 - rs)) * font_size))
ValueError: cannot convert float NaN to integer
с использованием Python 3, Wordcloud версия 1.5.0
EDIT:
Я понимаю, что при сбрасывании значения, выводимого на печать, ошибка изменяется на: деление с плавающей запятой на ноль, я подозреваю, что, возможно, потому, что каждый член должен встречаться хотя бы один раз. однако это не исправило бы мою первоначальную ошибку (данные нарезаны, и я сомневаюсь, что есть неиспользуемый термин, потому что переменные нарезаны из: vectorizer.fit_transform (cleanParagraphs) .toarray () и vectorizer.get_feature_names ()