前言
今天用jieba和词云库做个作业,顺便记录一下,作业要求:
1.使用jieba进行分词处理
2.排除去停词
3.统计完整词频并按降序排列
4.前20词绘制词云图
一、jieba是什么?
jieba 是目前表现较为不错的 Python 中文分词组件,并且有:
支持四种分词模式:
- 精确模式
- 全模式
- 搜索引擎模式
- paddle模式
支持繁体分词
支持自定义词典
MIT 授权协议
所以它在中文分词这方面还是很牛的,大家需要就自己看看叭
二、直接上代码了
import jieba
import wordcloud
def 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:
continue
else:
counts[word] = counts.get(word, 0) + 1
fourStopwords = open(r"cn_stopwords.txt", "r", encoding='utf-8').read() # 打开中文停词表
StopWord = fourStopwords.split("\n") # 以换行符为间隔符切割中文停词
for delWord in StopWord: # 如果词在停词表中就删掉
try:
del counts[delWord]
except:
continue
items = 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 + ' ' + keyWord
count = item[1]
createWordCloud(wordscloud) # 生成词云
运行结果:
注1: 中文停词表我是直接在github上下的 链接放这了中文停词表点进去就是的
注2:创建词云中字体的位置 在电脑的C:\Windows\Fonts
自己去复制一个过来就行了
最后我会把我的完整文件上传到资源,有需要的也可以下载
总结
本文就是用jieba和词云库做的小作业噜,完结撒花~ 芜湖!唐怡佳继续加油叭!