Объект WordCloud ‘module’ не вызывается Python3

#python-3.x #object #word-cloud

#python-3.x #объект #word-cloud

Вопрос:

Хорошо, итак, я пытаюсь извлечь текст из pdf и отобразить wordcloud из извлеченного текста.

Получение TypeError: объект ‘module’ не вызывается в строке

cloud = wordcloud(mask=rsMask).generate(pageObj.extractText())

Вот код, который я запускаю, заранее спасибо, приветствую:

  #Extracting text from a pdf

import wordcloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import PyPDF4


pdfFileObj = open('Test-Resume-Doc.pdf', 'rb')
pdfReader = PyPDF4.PdfFileReader(pdfFileObj)
print(pdfReader.numPages)
pageObj = pdfReader.getPage(0)
pageText = (pageObj.extractText())
pdfFileObj.close()

rsMask = np.array(Image.open('Resume_WordCloud.png'))
print(rsMask)
#
cloud = wordcloud(mask=rsMask).generate(pageObj.extractText())
print(cloud)

plt.imshow(cloud, interpolation="bilinear")
plt.axis('off')
plt.show()
  

Комментарии:

1. Вы вызываете imshow функцию из plt модуля как plt.imshow , так и array функцию из np модуля, оба корректно. Вы должны сделать то же самое с функцией из wordcloud модуля: wordcloud.somefunction(mask=rsMask).generate...

2. Большое спасибо!! Проблема решена. изменен на : cloud = wordcloud.WordCloud(mask = rsMask).generate(pageObj.extractText())

Ответ №1:

Я думаю, что проблема с кодом в том, что модуль смешан с классом, который определен в модуле. Пожалуйста, попробуйте это:

 from wordcloud import WordCloud
cloud = WordCloud(mask=rsMask).generate(pageObj.extractText())
  

Облако будет изображением, поэтому вы не сможете распечатать его на консоль, вам придется его где-то отобразить (или записать в файл).

Ответ №2:

Спасибо @DaruiszOstolski и @mkiever вот законченное решение для тех, кто сталкивается с аналогичной проблемой с добавлением стоп-слов:

 #Exracting text from a pdf

#import libraries
import wordcloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import PyPDF4

#open pdf extract text
pdfFileObj = open('docName.pdf', 'rb')
pdfReader = PyPDF4.PdfFileReader(pdfFileObj)
print(pdfReader.numPages)
pageObj = pdfReader.getPage(0)
pageText = (pageObj.extractText())
pdfFileObj.close()

#create array with extracted text
rsMask = np.array(Image.open('pngName.png'))

#create cloud from wordcloud.WordCloud with stopwords bcg color mask generated cloud
cloud = wordcloud.WordCloud(stopwords='stopwords.txt', background_color="black", mask=rsMask).generate(pageObj.extractText())

#display and save
plt.imshow(cloud, interpolation="bilinear")
plt.axis("off")
plt.savefig('.../path...newPNGName.png'.format(cloud))
plt.show()