python读取PDF、word文件及jieba分词,词云分析(Jupyter)

用pdf文件解析器读取文件

首先要安装pdfplumber库

代码如下:

!pip  install pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple 

上面的代码安装可能会报错,这时我们需要输入以下代码:

#!pip --default-timeout=100 install --user pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple 

输入以上代码能解决大部分问题

import pdfplumber #导入库

#用pdf文件解析器读取文件
with pdfplumber.open(r'C:\Users\bai\Downloads\新时代内地高校港澳学生国情教育模式研究_张小欣.pdf') as f:
    #用for循环读取文件中的每一页
    for page in f.pages:
        text = page.extract_text()
        txt_f = open(r'港澳国情教育.txt',mode='a',encoding='utf-8') #创建txt文件
        txt_f.write(text)     #写入txt文件

执行完上面代码我们得到txt样式的文本了。

接下来读取word文件

同样我们需要安装python-docx第三方库

!pip install python-docx

接下来读取文件

import xlsxwriter as xw
f = docx.Document(r"C:\Users\bai\Downloads\新时代内地高校港澳学生国情教育模式研究_张小欣.docx")

for para in f.paragraphs:   #用for循环读取文件每一段
    txt_f = open(r'港澳国情教育.txt',mode='a',encoding='utf-8') #创建txt文件
    txt_f.write(para.text)     #写入txt文件
    #print(para.text)

使用jieba分词库进行文本处理

import jieba
file = open('港澳国情教育.txt',encoding='utf-8')
file = file.read()  #读取txt文件
txtlist = jieba.lcut(file) # 使用精确模式对文本进行分词
string = " ".join(txtlist)  #列表转化为字符串,绘制词云要传入的对象是字符串
#string

统计词语及其出现的次数

stop_words = {}  #通过键值对的形式存储要排除的词及出现次数
counts = {}     # 通过键值对的形式存储词语及其出现的次数
for txt in txtlist:
    if len(txt) == 1:    # 单个词语应该排除
        stop_words[txt] = stop_words.get(txt,0) + 1 
    else:
        counts[txt] = counts.get(txt, 0) + 1    # 遍历所有词语,每出现一次其对应的值加 1

items = list(counts.items()) 
items.sort(key=lambda x: x[1], reverse=True)    # 根据词语出现的次数进行从大到小排序

将统计好的词语及其出现的次数写入excel

import xlsxwriter as xw #导入第三方库
#根据词语出现的次数进行从大到小排序,并写入excel
workbook = xw.Workbook('词频.xlsx')  # 创建工作簿
worksheet1 = workbook.add_worksheet("sheet1")  # 创建子表
worksheet1.activate()  # 激活表
title = ['词语', '词频', ]  # 设置表头
worksheet1.write_row('A1', title)  # 从A1单元格开始写入表头
i = 2  # 从第二行开始写入数据
for j in range(len(items)):
    insertData = [items[j][0], items[j][1]] #获取items里面的每个元素,items每个元素为元组,[j][0]表示第j个元组中的第1个元素
    row = 'A' + str(i)
    worksheet1.write_row(row, insertData)
    i += 1
workbook.close()  # 关闭表

创建排除单个词的列表

stoplist=[]   #创建排除单个词的列表 
item = list(stop_words.items())
for i in range(len(item)): #遍历列表中所有的字典
    txt,count = item[i]
    stoplist.append(txt)  #将key添加到要排除的列表
#print(stoplist)
setlist = set(stoplist)  #将列表转化为集合,后面WordCloud()方法的stopwords传入的参数要求为集合

创建词云对象,进行词云分析

from wordcloud import WordCloud

wcd = WordCloud(width=1000,height=700,background_color='white',font_path='msyh.ttc',scale=15,stopwords=setlist)
#将string变量传入generate()方法,给词云输入文字
wcd.generate(string)
wcd.to_image() 查看词云图片
wcd.to_file('词云.png') #导出图片

你可能感兴趣的:(python,jupyter,pip)