【Python学习笔记】词频统计

前往:我自己搭建的博客

所用版本:Python 3.6,jieba 0.42.1,nltk 3.2.4,wordcloud 1.8.1

NLTK统计

将分词后的结果放入list,调用nltk.FreqDist()进行频数统计。支持用下标查询某个词语的频数。用most_common(k)函数可以将频数排名前k的词语存入一个list,list中的元素类型为tuple。

生成词云

先生成存放着频数的字典,然后调用wordcloud.WordCloud().fit_words()生成词云。

import jieba.analyse
import nltk
import wordcloud
import matplotlib.pyplot as plt
s="我所研究的东西,尺度要么在十的负三十次方厘米以下,要么在一百亿光年以上,在这两个尺度上,地球和人类都微不足道。——丁仪"
words=jieba.analyse.extract_tags(s) #提取非停用词
cut=jieba.lcut(s) #分词结果
cnt=nltk.FreqDist(cut) #频数统计
print(cnt['我']) #查询频数
cnt=cnt.most_common(1000) #频数列表
cnt=[x for x in cnt if x[0] in words] #非停用词频数列表
cnt=dict(cnt) #将列表转化为字典
font="C:\Windows\Fonts\simsun.ttc"
w=wordcloud.WordCloud(font_path=font, #设置字体
    width=1200,height=800, #设置图片的宽高(默认200)
    max_words=50, #最多绘制的词条数(默认200)
    min_font_size=4, #最小字体大小(默认为4)
    max_font_size=None, #最大字体大小(默认为None,表示图像的高度)
    prefer_horizontal=0.9, #水平显示的比例(默认为0.9)(程序会尝试达到这个比例,但不一定能) 
    background_color=None, #背景颜色(默认黑色)
    mode="RGBA", #模式(默认为RGB),当mode=“RGBA”,background_color为None时,将生成透明背景
    stopwords=None, #可以指定停用词表,默认的停用词表只支持英文
    ).fit_words(cnt)
plt.imshow(w)
plt.axis("off") #不显示坐标轴
plt.show()
w.to_file("词云.png") #保存词云图片

你可能感兴趣的:(【Python学习笔记】词频统计)