python词云剔除非有效词

一、Why!

之前做了基于python的青少年沉迷网络调查报告,最后用的是jieba分词和wordcloud进行可视化分析,但是结果图由于爬取的内容不精确,有一些不相关词也被放入可视化中,所以此次想把那个内容再重新可视化词云分析,剔除参杂其中的无用词!

二、What!

原源码如下:

# 导入词云制作库wordcloud和中文分词库jieba
import jieba
import wordcloud
# 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片
import imageio
mk = imageio.imread("未标题-1.png")
# 构建并配置词云对象w,注意要加scale参数,提高清晰度
w = wordcloud.WordCloud(width=1000,
                        height=700,
                        background_color='white',
                        font_path='msyh.ttc',
                        mask=mk,
                        scale=15)
# 对来自外部文件的文本进行中文分词,得到string
f = open('提取到的第五列数据.txt',encoding='utf-8')
txt = f.read()
txtlist = jieba.lcut(txt)
string = " ".join(txtlist)
# 将string变量传入w的generate()方法,给词云输入文字
w.generate(string)
# 将词云图片导出到当前文件夹
w.to_file('青少年沉迷网络01.png')
对上方源码分析得17-21行为数据读取分词操作 具体步骤如下: 18行:以utf-8读取文件 19行:将读取的内容赋值给txt 20行:利用jieba库进行分词,以列表形式存储 21行:以空格连接列表内的每一个元素 所以可以在第20-21行之间添加一个方法进行剔除 ## 三、How! test.py ```python import jieba list=[] txt="我们总是在意别人的言论,不敢做自己喜欢的事情,害怕淹没在飞短流长之中。其实没有人真的在乎你在想什么,不要过高估量自己在他人心目中的地位。被别人议论甚至误解都没啥,谁人不被别人说,谁人背后不说人,你生活在别人的眼神里,就迷失在自己的心路上。人和人之间就是一份情,一份缘,你珍惜我,我会加倍奉还,你不在意我,就让一切归零!" txtlist = jieba.lcut(txt) print(txtlist) words=["你","人","我",",","。","的",","] for word in txtlist: if word in words: continue else: list.append(word) print(list) string = " ".join(list) print(string) ``` 结果如下: ```python >>> ========= RESTART: D:\桌面\Python\拓展\weiboSpider-master\关键词爬取\剔除词test.py ========= Building prefix dict from the default dictionary ... Loading model from cache C:\Users\Bai\AppData\Local\Temp\jieba.cache Loading model cost 0.594 seconds. Prefix dict has been built successfully. ['我们', '总是', '在意', '别人', '的', '言论', ',', '不敢', '做', '自己', '喜欢', '的', '事情', ',', '害怕', '淹没', '在', '飞短流长', '之中', '。', '其实', '没有', '人', '真的', '在乎', '你', '在', '想', '什么', ',', '不要', '过高', '估量', '自己', '在', '他人', '心目', '中', '的', '地位', '。', '被', '别人', '议论', '甚至', '误解', '都', '没', '啥', ',', '谁', '人', '不', '被', '别人', '说', ',', '谁', '人', '背后', '不', '说', '人', ',', '你', '生活', '在', '别人', '的', '眼神', '里', ',', '就', '迷失', '在', '自己', '的', '心', '路上', '。', '人', '和', '人', '之间', '就是', '一份', '情', ',', '一份', '缘', ',', '你', '珍惜', '我', ',', '我会', '加倍', '奉还', ',', '你', '不在意', '我', ',', '就让', '一切', '归零', '!'] ['我们', '总是', '在意', '别人', '言论', '不敢', '做', '自己', '喜欢', '事情', '害怕', '淹没', '在', '飞短流长', '之中', '其实', '没有', '真的', '在乎', '在', '想', '什么', '不要', '过高', '估量', '自己', '在', '他人', '心目', '中', '地位', '被', '别人', '议论', '甚至', '误解', '都', '没', '啥', '谁', '不', '被', '别人', '说', '谁', '背后', '不', '说', '生活', '在', '别人', '眼神', '里', '就', '迷失', '在', '自己', '心', '路上', '和', '之间', '就是', '一份', '情', '一份', '缘', '珍惜', '我会', '加倍', '奉还', '不在意', '就让', '一切', '归零', '!'] 我们 总是 在意 别人 言论 不敢 做 自己 喜欢 事情 害怕 淹没 在 飞短流长 之中 其实 没有 真的 在乎 在 想 什么 不要 过高 估量 自己 在 他人 心目 中 地位 被 别人 议论 甚至 误解 都 没 啥 谁 不 被 别人 说 谁 背后 不 说 生活 在 别人 眼神 里 就 迷失 在 自己 心 路上 和 之间 就是 一份 情 一份 缘 珍惜 我会 加倍 奉还 不在意 就让 一切 归零 ! ``` ## 四、result! 源码如下: ```python # 导入词云制作库wordcloud和中文分词库jieba import jieba import wordcloud # 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片 import imageio mk = imageio.imread("未标题-1.png") list=[] # 构建并配置词云对象w,注意要加stopwords集合参数,将不想展示在词云中的词放在stopwords集合里,这里去掉“曹操”和“孔明”两个词 w = wordcloud.WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc', mask=mk, scale=5, #contour_width=1, #contour_color="black" ) # 对来自外部文件的文本进行中文分词,得到string f = open('提取到的第五列数据.txt',encoding='utf-8') txt = f.read() txtlist = jieba.lcut(txt) words=["收起","全文","所以","多少","路过",",",",",".","。","[","]","【","】"] for word in txtlist: if word in words: continue else: list.append(word) print(list) string = " ".join(list) # 将string变量传入w的generate()方法,给词云输入文字 w.generate(string) # 将词云图片导出到当前文件夹 w.to_file('不信你不出来.png') print("finish") ``` 结果对比: 很容易看出:收起全文没了 ![](https://picture-store-repository.oss-cn-hangzhou.aliyuncs.com/PicGo/20201123205628.png) ![](https://picture-store-repository.oss-cn-hangzhou.aliyuncs.com/PicGo/20201123212010.png)

参考

posted @ 2022-10-10 21:46  baixf白小飞  阅读(781)  评论(0编辑  收藏  举报