zoukankan      html  css  js  c++  java
  • 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:WindowsFonts
            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

  • 相关阅读:
    Java性能总结一(转)
    Java性能总结三(转)
    Java性能总结二(转)
    Jsp设计第三版文摘
    java配置错误记录
    PatternsInJava文摘
    Java性能总结四(转)
    Spring+Struts+Hibernate 简介(转)
    baidu c++吧上的一道题
    IT公司笔试题总结(三)
  • 原文地址:https://www.cnblogs.com/lsdb/p/9199037.html
Copyright © 2011-2022 走看看