作业要求来自: https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2773
中文词频统计
1. 下载一长篇中文小说。
《挪威的森林》
2. 从文件读取待分析文本。
3. 安装并使用jieba进行中文分词。
pip install jieba
import jieba
ljieba.lcut(text)
4. 更新词库,加入所分析对象的专业词汇。
jieba.add_word('天罡北斗阵') #逐个添加
jieba.load_userdict(word_dict) #词库文本文件
5. 生成词频统计
6. 排序
7. 排除语法型词汇,代词、冠词、连词
8. 输出词频最大TOP20,把结果存放到文件里
9. 生成词云。
代码:
1 import jieba 2 txt=open(r'D:all1.txt','r',encoding='utf-8').read() 3 #排除语法型词汇,代词、冠词、连词 4 delword=open(r'D:del.txt','r',encoding='utf-8').read() 5 #更新词库,加入所分析对象的专业词汇。 6 jieba.add_word('小林绿子') #逐个添加 7 #词库文本文件 8 word_list=[line.strip() for line in open('word_list.txt',encoding='utf-8').readlines()] 9 jieba.load_userdict(word_list) 10 #使用jieba进行中文分词 11 wordsls=jieba.lcut(txt) 12 wcdict={} 13 for word in wordsls: 14 if word not in delword: 15 if len(word)==1: 16 continue 17 else: 18 wcdict[word]=wcdict.get(word,0)+1 19 wcdict['渡边彻']=wcdict['渡边彻']+wcdict['彻'] 20 del(wcdict['彻']) 21 wcdict['小林绿子']=wcdict['小林绿子']+wcdict['绿子'] 22 del(wcdict['绿子']) 23 wcls=list(wcdict.items()) 24 #排序(输出前20) 25 wcls.sort(key=lambda x:x[1],reverse=True) 26 for i in range(20): 27 print(wcls[i]) 28 cut_text=" ".join(wordsls) 29 from wordcloud import WordCloud 30 import matplotlib.pyplot as plt 31 mywc=WordCloud().generate(cut_text) 32 #显示词云 33 plt.imshow(mywc) 34 plt.axis("off") 35 plt.show()
运行结果:
生成云图: