词云构建
效果展示
词云图
想必大家都见过,是一种形式新颖的查看文本中出现最多词汇的图。
我使用Python
的第三方库stylecloud
来分别生成了 2 张词云图,读者可以猜一猜以下词云图的出处来自于哪里。
词云图 1
词云图 2
2. 实现过程
2.1 导入库
import pandas as pdimport stylecloudimport jieba from collections import Counter
2.2 导入文本
with open('./三体.txt',encoding='utf-8') as f: txt = f.read()txt = txt.split()
2.3 去除停用词
def stopwordslist(): stopwords = [line.strip() for line in open('./常见中文停用词表.txt', 'r', encoding='gbk').readlines()] stopwords.append(' ') # 自定义添加停用词 return stopwords def movestopwords(sentence): stopwords = stopwordslist() # 加载停用词的路径 santi_words =[x for x in sentence if len(x) >1 and x not in stopwords] return ' '.join(santi_words)data_cut = jieba.lcut(str(txt))word_list = movestopwords(data_cut)# print(word_list.split(' '))
2.4 统计词频
mycount = {}for word in word_list.split(' '): mycount[word] = mycount.get(word,0)+1counts_df = pd.DataFrame(mycount.items(), columns=['label', 'counts'])counts_df.sort_values(by='counts',inplace=True, ascending = False)counts_df.to_csv('./词频统计.csv',encoding='utf-8')print('输出词频统计 成功!!')print(counts_df.iloc[:10]) # 输出词频前 10 的词汇
2.5 生成词云图
stylecloud.gen_stylecloud( text=word_list, palette='tableau.BlueRed_6', icon_name='fas fa-apple-alt', font_path='./田英章楷书3500字.ttf', output_name='《三体》词云图.png', # custom_stopwords=stopwords )
3. API详解
3.1 stylecloud.gen_stylecloud() 参数详解
gen_stylecloud(text=None, # 输入文本(不含词频数) file_path=None, # 输入文本/CSV 的文件路径 (可以含词频数) size=512, # stylecloud 的大小(长度和宽度) icon_name='fas fa-flag', # stylecloud 形状的图标名称(如 fas fa-grin)。[default: fas fa-flag] palette='cartocolors.qualitative.Bold_5', # 调色板(通过 palettable 实现)。[default: cartocolors.qualitative.Bold_6] colors=None, # 自定义十六进制的字体颜色 background_color="white", # 背景颜色 max_font_size=200, # stylecloud 中的最大字号 max_words=2000, # stylecloud 可包含的最大单词数 stopwords=True, # 布尔值,用于筛除常见禁用词 custom_stopwords=STOPWORDS, # 去除停用词 icon_dir='.temp', output_name='stylecloud.png', # stylecloud 的输出文本名 gradient=None, # 梯度方向 font_path=os.path.join(STATIC_PATH,'Staatliches-Regular.ttf'), # stylecloud 所用字体 random_state=None, # 控制单词和颜色的随机状态 collocations=True, invert_mask=False, pro_icon_path=None, pro_css_path=None)
3.2 palette (调色板)
❝参考网站:「https://jiffyclub.github.io/palettable/」❞
3.3 icon_name (图标名称)
❝参考网站:「https://fa5.dashgame.com/#/%E5%9B%BE%E6%A0%87」❞
4. 遗留的小问题
中文博大精深,
jieba
对中文切词的准确性
问题,可通过自定义添加词汇
解决。重复无意义的词汇
反复、连续出现,可通过机械压缩词汇
的方法解决。
5. 资料下载
我已将以上配套数据文件和代码文件打包上传至我的 Github 和 Gitee,感兴趣的读者可以下载学习和练手。
「Github 项目地址」
「https://github.com/don2vito/wechat_project/tree/master/词云」
「Gitee 项目地址」
「https://gitee.com/don2vito/wechat_official_account/blob/master/038_词云」
暂无评论
发表评论