一、环境配置
在运行分词之前首先要确定Python已经正确安装,这里我安装的是python3.9,但建议安装低一个版本的,如python3.8,因为有些包在pip install安装的时候不支持最新版本。
其次,本文需要用到lda、jieba、numpy、wordcloud等主要的包。如果发现pip安装出现错误,可以上whl官方包手动安装whl格式的包,在网页中利用Ctrl+F快速查找到相应包,如果发现这里面没有,比如lda包,还有个网站提供python官方packagetar.gz后缀的压缩包,具体安装方式百度,主要就是用python setup.py install安装命令。
二、jieba分词-数据预处理
这里采用的是jieba分词,代码如下所示,相关数据及代码文件可以在数据文本下载,在复现时需要根据自己的文件名称修改下面的文件名称。
(3.31补充:有同学反馈github因为某些原因,有时上不去,这里给上网盘地址,一个是只有500个的短文本版本,可以快速复现,另一个是完整的30M长文本-需要久点跑完)文本-提取码1111
import jieba
from os import path #用来获取文档的路径
import jieba.analyse as anls
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
#词云生成工具
from wordcloud import WordCloud,ImageColorGenerator
#需要对中文进行处理
import matplotlib.font_manager as fm
#背景图
bg=np.array(Image.open("boy.png"))
#获取当前的项目文件加的路径
d=path.dirname(__file__)
#读取停用词表
stopwords = [line.strip() for line in open('cn_stopwords.txt', encoding='UTF-8').readlines()]
#读取要分析的文本
text_path="answers.txt"
#读取要分析的文本,读取格式
text=open(path.join(d,text_path),encoding="utf8").read()
text_split = jieba.cut(text) # 未去掉停用词的分词结果 list类型
#去掉停用词的分词结果 list类型
text_split_no = []
for word in text_split:
if word not in stopwords:
text_split_no.append(word)
#print(text_split_no)
fW = open('fencioutput.txt','w',encoding = 'UTF-8')
fW.write(' '.join(text_split_no))
fW.close()
text_split_no_str =' '.join(text_split_no) #list类型分为str
with open('fencioutput.txt',"r",encoding