中文词频统计与词云生成

作业来源: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

import jieba
from os import path
from scipy.misc import imread
import matplotlib.pyplot as plt
txt = open(r'zhongwen.txt','r',encoding='UTF-8').read() #加载待分词的文本

# 添加停用词文件
stops_chinese = open(r'stops_chinese.txt','r',encoding='UTF-8').read()
stops=stops_chinese.split('\n')

txt = txt.replace("\n",'')
txt = txt.replace(" ",'')
jieba.load_userdict(r'worddict.txt')#添加词库
cuttxt=jieba.lcut(txt) #分词
cutset = set(cuttxt)
tokens = [token for token in cutset if token not in stops]
cutdict={}
for w in tokens:
    cutdict[w]=cuttxt.count(w)
cutsort = list(cutdict.items())
cutsort.sort(key= lambda x:x[1],reverse=True)

#输出Top20
for i in range(20):
    print(cutsort[i])

# 输出到文件
pd.DataFrame(data = wordsort).to_csv(r'sort.csv',encoding='utf-8')

from wordcloud import WordCloud,ImageColorGenerator
back_coloring_path = "photo.png" # 设置背景图片路径
d = path.dirname(__file__) #设置当前项目路径
font_path = 'C:\Windows\Fonts\SIMLI.TTF' #设置字体路径
back_coloring = imread(path.join(d, back_coloring_path))# 设置背景图片

# 设置词云属性
wc = WordCloud(font_path=font_path,  # 设置字体
               background_color="white",  # 背景颜色
               max_words=100,  # 词云显示的最大词数
               mask=back_coloring,  # 设置背景图片
               max_font_size=400,  # 字体最大值
               random_state=42,
               width=100, height=86, margin=2,# 设置图片默认的大小,但是如果使用背景图片的话,那么保存的图片大小将会按照其大小保存,margin为词语边缘距离
               )
wc.generate_from_frequencies(cutdict)
image_colors = ImageColorGenerator(back_coloring)

# 以下代码显示图片
plt.imshow(wc)
plt.axis("off")
plt.show()

 

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

Top20:

 

9. 生成词云。

生成词云图如下:

 

posted @ 2019-03-25 13:57  初学-者  阅读(332)  评论(0编辑  收藏  举报