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

  • 相关阅读:
    mysql常用基本命令
    mysql8.0.13下载与安装图文教程
    k8s ingress 增加跨域配置
    Jenkins 备份恢复插件 thinBackup 使用
    k8s HA master 节点宕机修复
    nginx 跨域问题解决
    mongodb 3.4.24 主从复制
    k8s 线上安装 jenkins并结合 jenkinsfile 实现 helm 自动化部署
    k8s helm 运用与自建helm仓库chartmuseum
    centos6 源码安装 unzip
  • 原文地址:https://www.cnblogs.com/lsdb/p/9199037.html
Copyright © 2011-2022 走看看