词云是对网络文本中出现频率较高的关键词予以视觉上的突出。
安装结巴库和词云库
pip install jieba
pip install wordcloud
jieba是分词工具,下面是其使用
jieba.cut(str,cut_all=False)
cut_all是否使用全模式,默认False
jieba.cut_for_search(s) #适用于搜索引擎构建倒排索引的分词,粒度比较细,效果和cut(cut_all=True)基本相同
通过列表推导式将返回结果变成列表
res = [i for i in jieba.cut(content)]
或者使用list()转为列表
jieba.cut()不会自动对分词结果去重,如果想获取去重的结果可以用set()转换为集合
词频和分词字典
词频是指某个词在整个文本中出现的次数
collections.Counter(str or list).most_common(n)
传入列表或者字符串,它会返回列表中出现次数超过n次的元素,n不传默认显示所有词的词频
指定属于自己的词典
比如,jieba分词会将一些专有名词给拆分,但是实际上这些词不能拆分,为了让分词的准确率更高,可以自定义词典
jieba.load_userdict(file_name)
词典文件中,一个词占一行,每行为 词语,词频(可省略),词性(可省略) 用空格隔开;文件必须以utf-8编码
设置词频是为了让他的成词率更高,一般指定3~5的样子就可以
只需先
jieba.load_userdict()
再
jieba.cut()
即可按照自己的词典分词
========================
词云是将感兴趣的词放在一副图像中,可以控制词语的位置,大小,字体,字体的大小反映词语出现频率。
res = WordClound(font_path="simhei.ttf").generate(content) #simhei.ttf是中文字体
其中content是字符串,这个字符串是一个文本分词后将分词用空格隔开的字符串。
词云会根据content中的内容自动计算每个词的词频,无需我们手动计算词频
它返回的是一个对象
plt.imshow(res)
plt.axis("off")
plt.show()
即可展现词云图
如果想保存图片可以plt.savefig("路径")或者res.to_file("路径")即可
词云图
WordClound()其他参数如下:
width height 画布宽高 默认400*200
mask 词云轮廓,数据类型为nd-array;如果设置了mask,则width和height会被忽略
max_words number,最多在画布上显示多少词
stopwords 停用词,数据类型是字符串;默认使用wordCloud内置的停用词库
background_color
max_font_size
除了generate方法,WordCloud还有其他方法:
fit_words(dict)
根据词频生成词云,dict是一个类似于这样的字典: {"词1":5,"词2":12,"词3":2,....}
可以通过使用
res = Counter(content).most_common()
dict1 = dict(res)
来获取到上面这样的字典
to_file() 图片另存为
to_array() 转为numpy数组
接下来生成一张有轮廓的词云图
带轮廓的词云图