每日10行代码34:wordcloud生成词云时过滤掉某些词

今天在制作词云时发现生成的词云有很多虚词,比方说“情况、一是、二是、要求、加快、推进、发展” 还有一些不想让他出现的人名。这时就需要过滤某些词了,在网上搜了下,发现大多都是在程序里添加一个列表,然后再过滤,或者是用stopwords.add() ,其实还有个方法:

  1. 找到wordcloud的安装文件夹,把要屏蔽的词的添加到stopwords文件的后面。我个人的路径是:C:\Python36\Lib\site-packages\wordcloud
  2. 在第一步中,如果添加的是中文,程序会报错,这是因为python遇到中文,会默认以gbk的编码打开,但存中文时有些编辑器会默认用utf-8存储。这时只需要找到wordcloud.py文件的第35行
STOPWORDS = set(map(str.strip, open(os.path.join(FILE, 'stopwords')).readlines()))

修改成:

STOPWORDS = set(map(str.strip, open(os.path.join(FILE, 'stopwords'),encoding='utf-8').readlines()))

就可以了,不过可能有些编辑器不用修改代码就可以,我就没做多的试验了。
这样修改屏蔽词有个好处就是简单,不用写过多的代码,用的包自身的屏蔽功能,不额外消耗内存,一次设置终身使用。不过也有一个问题,就是如果想针对不同的项目设置不同屏蔽词的话就不行了,这种方法最适合的是设置一些常用屏蔽词。

ps: 明天可能比较忙,先把文章发了,明天可能断更一天。今天又爬了一个网站,写的代码可不止10行,但是跟前面爬人民日报的项目差不多,就不发上来了。

你可能感兴趣的:(每日10行代码,Python,python)