文章目录

  • ​​环境准备​​
  • ​​导入库​​
  • ​​读取docx并进行分词​​
  • ​​词频​​
  • ​​词云​​
  • ​​设置背景图片(可选)​​
  • ​​生成词云​​
  • ​​保存词云并显示​​

环境准备

# 不是docx,是python-docx!!!!!!!
pip install python-docx
pip install wordcloud
pip install jieba

导入库

#导入所需库
from docx import Document

#打开word文档
document = Document("第六组访谈简报汇总.docx")

读取docx并进行分词

关键词:

ask_keyWord_list = ["访", "点", "发现"]
del_keyWord_list = ["会", '情况', '一个', '时候', '对', "的", '好', '不', '还', '就', '可以', '两个', '大', '人', '带', "所", "是", "有", "啥", "来", "陈","点", ':',",", '。', ".", ";", ' ', "、", "他", "自己", '因为', '在', '和', '用', '也', '都', '了', '比较', '去', "觉得", "很"]
import jieba
#获取所有段落
all_paragraphs = document.paragraphs
txt = ""
text_all_list = []
for paragraph in all_paragraphs:
DEL_LINE = False
# 必须给个符号分隔开分词结果来形成字符串,否则绘制词云都以符号为分割,不具备特征性。
cut_text = jieba.cut(paragraph.text)
result = " ".join(cut_text)
# 删除提问
for keyWord in ask_keyWord_list:
if keyWord in result:
DEL_LINE = True
break
# 如果是提问,跳过该段
if DEL_LINE or result == "":
continue
# 删除不必要词语
res_list = result.split( )
res_list_copy = res_list
for delWord in del_keyWord_list:
for i, res in enumerate(res_list):
if delWord in res:
res_list_copy.pop(res_list.index(res))
# 合成列表
text_all_list += res_list_copy
text_result = " ".join(res_list_copy)
# print("result:", result)
# print("res_list:", res_list)
# print("text_result:", text_result)
txt += text_result
# input()
# txt

python——读取docx文档wordcloud生成词云并进行词频统计_词云

词频

# 词频统计
import collections # 词频统计库
word_counts = collections.Counter(text_all_list) # 对分词做词频统计
word_counts_top20 = word_counts.most_common(20) # 获取前10最高频的词
print (word_counts_top20) # 输出检查

python——读取docx文档wordcloud生成词云并进行词频统计_词频_02

词云

设置背景图片(可选)

from PIL import Image
mask_pic = Image.open("科创学院.png")
mask_pic_array = np.array(mask_pic)#将词云图片转换为数组

生成词云

from wordcloud import WordCloud
wc = WordCloud(
# 设置字体旋转度,0-1,1为垂直
prefer_horizontal=1,
# 设置词云的中文字体所在路径,不指定就会出现乱码
font_path = "义启-破苍穹.TTF",
# 设置背景色
background_color='white',
# 设置背景宽
width=1920,
# 设置背景高
height=1080,
# 最大字体
max_font_size=300,
# 最小字体
min_font_size=10,
# 词频与放大程度的相关性
relative_scaling = 1,
mode='RGBA',
# colormap='Purples',
# mask = mask_pic_array
)
wc.generate(txt)

保存词云并显示

wc.to_file(r"wordcloud.png") # 按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰
# 4.显示图片
# 指定所绘图名称
plt.figure("jay")
# 以图片的形式显示词云
plt.imshow(wc)
# 关闭图像坐标系
plt.axis("off")
plt.show()

python——读取docx文档wordcloud生成词云并进行词频统计_python_03

参考文档: