案例实操
准备资源
导入所需库
1 2
import wordcloud import jieba
准备好源文件,屏蔽词文件,备用字体
1 2 3
font_path = 'C:\Windows\Fonts\时尚中黑简体.ttf' file_path = '新建文本文档.txt' fake_path = 'stop_key.txt'
自定义变量
1 2 3 4 5 6 7
alist = [] # btext = '' # fake_set = {1} #第三方屏蔽列集合 #根据文档特殊性而设计的自定义屏蔽词 stop_words = {'我们','这个','一个','可以','下来','这样','就是','用来', '非常','然后','这里','非常','大家','时候','上面','里面', '放在','首先','准备','出来','很多','其实','一些','拿出','还有','如果'}
读取数据集
|
|
分词
|
|
生成词云
|
|
Demo
手动爬取 15 个沙雕营销号生活妙用视频文案,利用 jieba + wordcloud 统计高频词。
问题总结
文件读写统一编码格式
错误案例:读取多个编码格式不同的文件时,使用了统一的解码格式,导致文本乱码或屏蔽失效。
例如:屏蔽词文件 stop_key.txt
编码为 GBK,源文件 raw_text.txt
编码为 UTF-8
。一开始写函数并没有注意到这个细节,而后整个程序的读文件操作都通过一个 read_file() function
进行,导致整个程序陷入了无限报错之中,拆东墙补西墙。
解决方案:给 read_file() function
自定义参数 mode
,进而针对特殊编码的文件单独控制 encoding。
- ps:此处分别用两个
open
强调文件编码不同 - ps:在我没意识到文件编码异常之前,一直在调整统一的 encoding 试错,从 UTF-8 到 GBK 再到 GB18030,显然都不能解决问题。如果通过设置
errors=ignore
强行忽视非法编码,要么导致源文文本乱码,要么就会在词库过滤时发现 stop_words 集合并没有起作用(原因一致)。由此引发的 Error 信息如下。
|
|
补充:如果数据集从创建到调用都是自己通过python函数操作,往往不会出现编码格式错乱的问题(无非就 GBK 或 UTF-8 )。出现问题很可能是数据集被创建后自己 手动 打开 修改 保存 了源文档!这时候保存的文档编码格式可能会分裂成 UTF-8,GBK,GB18030,Unicode,ANSI,GB2312,BIG5 等等常见的中文格式编码,这要看编辑器的默认转录格式
wordcloud易错参数解释
参数stopwords接受的文本格式是set
函数 generate接受的文本格式是str
1 2 3 4 5 6 7 8 9
# 词云实例化 wc = wordcloud.WordCloud(stopwords=stop_words) print(type(stop_words)) # <class 'set'> # 词云生成 wc.generate(btext) print(type(btext)) # <class 'str'>
实验附件
这里呈上沙雕营销号文案
|
|