您当前的位置:首页 > 计算机 > 编程开发 > Python

Python3+pdfminer+jieba+wordcloud+matplotlib生成词云(以深圳十三五规划纲要为例)

时间:06-02来源:作者:点击数:

一、各库功能说明

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)

运行程序,生成词云如下:

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门