Python新手学习笔记之词云可视化

作者: 123a6418de09 | 来源:发表于2019-06-21 10:08 被阅读58次

    没办法啊,年龄大了,想做点感兴趣的事情,不懂技术又赚不到钱。所以就想学着玩一下抽空时间可以打发下时间。其实最初想学这个语言的理由是想在网页下载些图片啥的,在没找到合适的批量下载工具时,听人说这个语言可以爬取下来,所以就尝试学一下用来爬取图片。当然,写笔记的原因是因为年龄大了,记不住啊,敲代码都要对着现成的或者百度才能敲完整,所以劝大家学东西、学技术的时候还是要趁年轻、趁早学啊。

    词云可视化

    来说一下这个词云可视化的作用,主要是为了好看,在好看之余也是为了透露些想要展示的内容,潜移默化内容,先给大家看一下我之前用于卖电动车时做的词云吧,电动车还没卖出去,估计是做的太丑了,哈哈。

    词云的四行主要代码

    做词云最主要的就是四行代码,这四行代码也就搞定直接可以生成出来了。需要用到wordcloud库,如下:

    import wordcloud #导入模块

    w = wordcloud.WordCloud() #创建一个做出词云的对像

    w.generate("词云内容") #传入需要做词云的内容生成词云

    w.to_file("路径名称") #保存对像,生成词云后保存的路径和名称

    看到这里是不是很简单,其实对于新手的我来说真心记不住每个字啥的,都是对着代码才来敲出来啊,人老了记忆力真的很捉急啊。下面来说一下在这个基础上对生成出的词云进一步丰富、美化。

    采用图片样式或轮廓做词云形态

    如果想要把词云做成有一定的形状,那么就需要传入一类似的形状才行,这样就可以让生成词云的内容只在这个形状内显示。比如一个三角形、五角星,或者一个人的形状。需要用到imageio这个库,然后把准备好的形状图片创建一个对像传入代码wordcloud中,这样生成出来的词云样式就是自己想要的。代码如下:

    import imageio #导入模块

    mk = imageio.imread('路径名称') #导入图片

    w = wordcloud.WordCloud(mask=mk) #创建词云对像时,配置词云参数mask传入图片。

    另外再说一点,就是wordcloud.WordCloud()这句代码里面可以配置很多相关的参数,比如宽度、高度、背景色、字体等等,根据自己的喜好不同进行配置,上面电动车词云我配置的参数代码是w = wordcloud.WordCloud(width=1000,height=700,background_color='white',font_path='./soujintie.ttf',mask=mk,scale=15),这个词云的字体我用的瘦金体,哈哈,毕竟这个字体很特别嘛。

    词云中文分词

    如果想传入更多的文本内容,这里就需要导入中文分词库jieba。如果文本内容更大了,比如一部小说什么的,这样就需要将TXT文档通过open()来导入,在这里就不说了。这里使用jieba库主要是通过分词获得单个的词语,这样才能更好的做出大文本内容的词云。具体代码如下:

    txt = “词云文字内容” #导入词云内容,这里也可以open()某个路径中的TXT文档

    txtlist = jieba.lcut(txt) #将内容进行分割成列表

    txtstring = " ".join(txtlist) #将列表以空格拼接成字符串

    w.generate(txtstring) #生成词云时传入字符串

    参数去除词

    面对大文本内容时,如果在生成词云有不想展示出来的词语,可以通过stopwords参数去除掉不想展示的词语,然后将stopwords参数传入wordcloud.WordCloud中,代码如下

    w = wordcloud.WordCloud(stopwords={"张三","李四"})

    这里除了去掉“张三、李四”,还可以在后面加入更多不想展示的词语。

    词语情感分析

    如果在做词云时,对于词语的感观情感有要求,比如展示情感积极的词语,不想展示消极情绪的词语,可以用snownlp这个情感分析库来进行分析,需导入snownlp。代码如下:

    word = snownlp.SnowNLP(txt) #传入txt这个需要进行情感分析的文本内容

    feeling = word.sentiments #调属性

    现在就可以判断feeling的大小进行区分为积极词汇和消极词汇,当feeling大于0.96时判断为积极词汇、小于0.06时判断为消极词汇,判断的方法如下:

    将jieba分割出来的词语列表txtlist用for循环进行遍历,然后判断出积极词汇或者消极词汇,并分别加入positivelist积极词汇列表、negativelist消极词汇列表,再用join()以空格拼接成字符串,如果想展示积极词汇,则将拼接后的positivelist传入generate()生成词云。

    好了,就到这里。写的不好不喜欢也请多多指教哦,我毕竟是新手啊,才学了不到半个月而已,也是第一次在这里写笔记,帮助大家的同时,也为了自己记忆的更牢一些啊。

    求支持哦,一杯卡布其诺的情怀!

    相关文章

      网友评论

        本文标题:Python新手学习笔记之词云可视化

        本文链接:https://www.haomeiwen.com/subject/luseqctx.html