所用版本: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的jieba和nltk库进行文本处理,通过分词、频数统计,展示了一个关于尺度与人类相对微小性的主题。进一步,借助wordcloud库生成词云图,强调了关键词的重要性,揭示了内容的核心。该博客适合对自然语言处理和数据可视化感兴趣的读者。
1万+

被折叠的 条评论
为什么被折叠?



