中文词频统计与词云生成

作业来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2822

作业要求:

1. 下载一长篇中文小说。

我下载的是钱钟书先生写的《围城》,放于wc.txt文件中

2. 从文件读取待分析文本。

txt = open('wc.txt',encoding='UTF_8').read()

3. 安装并使用jieba进行中文分词。

pip install jieba

import jieba

jieba.lcut(text)

中文词频统计与词云生成

4. 更新词库,加入所分析对象的专业词汇。

jieba.add_word('天罡北斗阵')  #逐个添加

jieba.load_userdict(word_dict)  #词库文本文件

jieba.add_word('赵辛楣')
jieba.add_word('唐晓芙')
jieba.add_word('孙柔嘉')
jieba.add_word('苏文纨')
jieba.add_word('鲍小姐')
jieba.add_word('董斜川')

参考词库下载地址:https://pinyin.sogou.com/dict/

转换代码:scel_to_text

5. 生成词频统计

# 统计频率次数
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:
        txt = txt.replace(c, "")

stops

tokens=[token for token in wordsls if token not in stops]

8. 输出词频最大TOP20,把结果存放到文件里

# 输出top20
for i in range(20):
    print(wordList[i])

9. 生成词云。