中文词频统计与词云生成

本次作业要求来自于: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. 排除语法型词汇,代词、冠词、连词等停用词。

stops

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

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

9. 生成词云。

import jieba


with open(r'F:stops_chinese.txt', 'r', encoding='utf-8')as f:
    stops = f.read().split('
')

txt = open("A Dream in Red Mansions.txt", "r", encoding='utf-8', errors='replace').read()  # ?????
words = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word, 0) + 1

items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)
for i in range(15):
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word, count))

jieba.add_word('天罡北斗阵')  #逐个添加
jieba.load_userdict(r"F:红楼梦【官方推荐】.txt")  #词库文本文件
#token过滤无用关键词
tokens = [token for token in words  if token not in stops]
Set = set(tokens)#把tokens转换为集合方便字典统计
Dict = {}  # 创建一个字典统计词频
for i in Set:
    Dict[i] = tokens.count(i)
for i in range(20):  # 输出词频前20的词语
    print(words[i])

import pandas as pd

# pd.DataFrame(data=word).to_csv('pby.csv', encoding='utf-8')
#生成词云图,进行字体变量配置后用空格分割内容
wl_split =' '.join(tokens)
from wordcloud import WordCloud
mywc1 = WordCloud().generate(wl_split)
import matplotlib.pyplot as plt
plt.imshow(mywc1)
plt.axis("off")
plt.show()

生成的top20:

词云:

原文地址:https://www.cnblogs.com/zjby/p/10593124.html