中文词频统计与词云生成
本次作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2822
一、中文词频统计
1. 下载一长篇中文小说。
2. 从文件读取待分析文本。
3. 安装并使用jieba进行中文分词。
pip install jieba
import jieba
jieba.lcut(text)
4. 更新词库,加入所分析对象的专业词汇。
jieba.add_word('天罡北斗阵') #逐个添加
jieba.load_userdict(word_dict) #词库文本文件
参考词库下载地址:https://pinyin.sogou.com/dict/
转换代码:scel_to_text
5. 生成词频统计
6. 排序
7. 排除语法型词汇,代词、冠词、连词等停用词。
8. 输出词频最大TOP20,把结果存放到文件里
9. 生成词云。
二、实现
1、本文下载了余华的《活着》,放于huozhe.txt中
2、读取文本
mytext = open('huozhe.txt',encoding='UTF-8').read()
3、安装jieba
4、更新词库,加入所分析对象的专业词汇
jieba.add_word('福贵') jieba.add_word('家珍') jieba.add_word('凤霞') jieba.add_word('有庆') jieba.add_word('二喜') jieba.add_word('苦根')
5. 生成词频统计
'''分割出词汇''' words = list(jieba.cut(mytext)) wordDict={} '''统计频率次数''' wordSet=set(words) for w in wordSet: if len(w)>1: wordDict[w] = words.count(w)
6. 排序
'''排序''' wordList = list(wordDict.items()) wordList.sort(key=lambda x:x[1],reverse=True)
7. 排除语法型词汇,代词、冠词、连词等停用词。
ci=['我们','知道','看到','自己','起来','什么','他们','一个','看着','没有','看看','就是','怎么','还是','这么','觉得'] for c in ci: mytext = mytext.replace(c, "")
8. 输出词频最大TOP20,把结果存放到文件里
'''输出top20''' for i in range(20): print(wordList[i]) '''保存为csv文件''' pd.DataFrame(data=wordList).to_csv('My story.csv',encoding='utf-8')
9. 生成词云
10、整体代码
import jieba import pandas as pd mytext = open('huozhe.txt',encoding='UTF-8').read() jieba.add_word('福贵') jieba.add_word('家珍') jieba.add_word('凤霞') jieba.add_word('有庆') jieba.add_word('二喜') jieba.add_word('苦根') ci=['。','《','》',' ','我们','知道','看到','自己','起来','什么','他们','一个','看着','没有','看看','就是','怎么','还是','这么','觉得'] for c in ci: mytext = mytext.replace(c, "") '''分割出词汇''' words = list(jieba.cut(mytext)) wordDict={} '''统计频率次数''' wordSet=set(words) for w in wordSet: if len(w)>1: wordDict[w] = words.count(w) '''排序''' wordList = list(wordDict.items()) wordList.sort(key=lambda x:x[1],reverse=True) '''输出top20''' for i in range(20): print(wordList[i]) '''保存为csv文件''' pd.DataFrame(data=wordList).to_csv('My story.csv',encoding='utf-8')
11、运行截图