Python3+pdfminer+jieba+wordcloud+matplotlib生成詞雲(以深圳十三五規划綱要為例)


一、各庫功能說明

pdfminer----用於讀取pdf文件的內容,python3安裝pdfminer3k

jieba----用於中文分詞

wordcloud----用於生成詞雲

matplotlib----用於將詞雲可視化

這幾個庫的順序也對應程序的順序:

生使用pdfminer讀取pdf文件的內容,然后使用jieba對內容進行中文分詞,再然后使用wordcloud基於分詞生成詞雲,最后使用matplotlib將詞雲可視化

 

二、程序源碼

from urllib.request import urlopen
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfinterp import process_pdf, PDFResourceManager
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
from io import StringIO

class MyWordCloud():
    def __init__(self):
        pass

    #此函數用於讀取和返回pdf文件的內容
    def getPdfText(self,pdf_url):
        pdf_file_obj = urlopen(pdf_url)

        pdf_rm = PDFResourceManager()
        ret_str = StringIO()
        lap = LAParams()
        tc = TextConverter(pdf_rm, ret_str, laparams=lap)

        process_pdf(pdf_rm, tc, pdf_file_obj)
        tc.close()
        pdf_text = ret_str.getvalue()
        ret_str.close()
        return pdf_text


    def genWordCloud(self,pdf_url):
        pdf_text = self.getPdfText(pdf_url)
        
        # WordCloud(按英文習慣)以空格分詞,中文不用空格所以WordCloud不能正確對中文進行分詞
        # 為了使用WordCloud我們就需要先自己自己想辦法完成分詞,並將所有分詞以空格隔開
        # 我們的方法是先用結巴生成中文序列,然后使用join方法使用空格拼接所有序列
        jieba_cut_seq = jieba.cut(pdf_text)
        pdf_cut_text = " ".join(jieba_cut_seq)

        # 默認字體不支中文,需要指定要使用的中文字體路徑;可從自己電腦已安裝的字體中選,目錄C:\Windows\Fonts
        font_path = "C:\\Windows\\Fonts\\simfang.ttf"
        wc = WordCloud(font_path,width=1000, height=880).generate(pdf_cut_text)

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


    def __del__(self):
        pass

if __name__ == '__main__':
    # 深圳十三五規划綱要文件的URL鏈接,要生成其他pdf文件的詞雲修改成該文件的URL即可
    pdf_url = 'http://www.sz.gov.cn/fzggj/home/zwgk/ghjh/fzgh/201604/P020160412518770846515.pdf'
    mwc = MyWordCloud()
    mwc.genWordCloud(pdf_url)

運行程序,生成詞雲如下:

 

參考:

https://www.cnblogs.com/gooseeker/p/5527519.html
http://www.unixuser.org/~euske/python/pdfminer/programming.html
https://www.cnblogs.com/delav/p/7845539.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM