文章目录
前言一、jieba是什么?支持四种分词模式:支持繁体分词支持自定义词典MIT 授权协议二、直接上代码了总结前言
今天用jieba和词云库做个作业,顺便记录一下,作业要求:
1.使用jieba进行分词处理
2.排除去停词
3.统计完整词频并按降序排列
4.前20词绘制词云图
一、jieba是什么?
jieba 是目前表现较为不错的 Python 中文分词组件,并且有:
支持四种分词模式:
精确模式全模式搜索引擎模式paddle模式支持繁体分词
支持自定义词典
MIT 授权协议
所以它在中文分词这方面还是很牛的,大家需要就自己看看叭
二、直接上代码了
import jiebaimport wordclouddef takeSecond(elem):return elem[1]def createWordCloud(text): #生成词云函数w=wordcloud.WordCloud(font_path="STZHONGS.TTF", width=1000, height=500, background_color="white")w.generate(text)w.to_file("红楼梦词云图.jpg")if __name__=='__main__':path = r"红楼梦.txt"file = open(path, "r", encoding="utf-8")text = file.read()print(text)file.close()words = jieba.lcut(text)# jieba分词counts = {}for word in words: # 如果词长度不为1就留起来 (不是单个的字就留起来)if len(word) == 1:continueelse:counts[word] = counts.get(word, 0) + 1fourStopwords = open(r"cn_stopwords.txt", "r", encoding='utf-8').read()# 打开中文停词表StopWord = fourStopwords.split("\n") # 以换行符为间隔符切割中文停词for delWord in StopWord: # 如果词在停词表中就删掉try:del counts[delWord]except:continueitems = list(counts.items())items.sort(key=takeSecond, reverse=True) # 保留下来的词按降序排列print(items)wordscloud = ""# 存放要做的词云for i in range(20): # 前20个词 存入词云item = items[i]keyWord = item[0]wordscloud = wordscloud + ' ' + keyWordcount = item[1]createWordCloud(wordscloud) # 生成词云
运行结果:
注1: 中文停词表我是直接在github上下的 链接放这了中文停词表点进去就是的
注2:创建词云中字体的位置 在电脑的C:\Windows\Fonts
自己去复制一个过来就行了
最后我会把我的完整文件上传到资源,有需要的也可以下载
总结
完结撒花~ 唐怡佳继续加油叭!
对中国四大名著--红楼梦 使用jieba进行分词处理 排除去停词 统计完整词频并按降序排列 前20词绘制词云图