Advertisement

Python可视化词云图

阅读量:

一、绘制词云时常用库及函数的意义

1、dir库

1)查看函数的用法

复制代码
    print(dir(函数))

2、os库:对文件和目录进行操作,重命名文件,添加,删除,复制目录以及文件等。

1)获得当前路径

复制代码
    os.getcwd()

2)修改当前脚本所在的路径

复制代码
    os.chdir('要去的路径')

3、wordcloud库:可以根据文本中词语出现的频率等参数绘制词云

(1)向WordCloud对象中加载文本txt

复制代码
    WordCloud.generate(txt)

Pyplot 是 matplotlib 的一个子库,在数据可视化领域非常常用。它提供了一套简便的界面让用户生成二维图表。当需要绘图时,默认导入 matplotlib.pyplot 并将其命名为 plt

(1)作图

复制代码
    plt.imshow('变量')

(2)显示出做好的图

复制代码
    plt.show()

(3)坐标轴的显示与否

复制代码
    plt.axis('on/off')

二、绘制词云的步骤以及可能的报错

Step1 :建立txt文档,并导入需要生成词云的文章

Step2 :检查python环境中有无wordcloud包

复制代码
 from wordcloud import WordCloud

    
 text=open('China145.txt','r').read()

可能报错:意思是没有wordcloud包

ModuleNotFoundError: No module named 'wordcloud

Step3 :下载wordcloud包

复制代码
    pip install wordcloud

Step4 :转换到txt文件所在路径

复制代码
 import os

    
 os.chdir('txt文件所在路径')
    
 print(os.getcwd())

可能报错:

复制代码
    SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

原因是:文件路径要用“/”或者“\ ”分隔开,不可以用“\”

Step5 :绘图

复制代码
 import matplotlib.pyplot as plt

    
 from wordcloud import WordCloud
    
 text=open('txt文件名','r',encoding='utf-8').read()
    
 w=WordCloud().generate(text)
    
 plt.imshow(w)
    
 plt.show()

出现问题:没有设置字体,显示不出来

解决办法:加上一段代码

复制代码
 w=WordCloud(font_path=font).generate(text)

    
 font='找到系统自带的字体的路径,选择要用的字体名并加上后缀'
    
 (例如:'c:\Windows\Fonts\AdobeHeitiStd-Regular.otf')

Step6 :修饰词云图

三、使用jieba库进行分词并统计有用词的词频

1、jieba三种模式:有什么区别?

复制代码
 import jieba

    
 words = "他来到了网易大厦。"
    
  
    
 print("/".join(jieba.cut(words)))    # 精简模式,返回一个列表类型的结果
    
 print("/".join(jieba.cut(words, cut_all=True)))      # 全模式,使用 'cut_all=True' 指定
    
 print("/".join(jieba.cut(words, cut_all=False)))      #精确模式
    
 print("/".join(jieba.cut_for_search(words)))     # 搜索引擎模式

join():用于将序列中的元素以指定的字符连接成新的字符串

2、jieba.posseg():用于查看分词词性

复制代码
 import jieba.possey as pseg

    
 words=pseg.cut('中国国家领导人在开会')
    
 for key in words:
    
     print(key.word,key.flag)

3、jieba.load_userdict('文件名'):用于添加指定文件名的词典

Step1 :分词并统计词数

复制代码
 import jieba

    
 with open('文件名','r') as f:
    
      renmin=f.read()
    
  
    
 jieba.load_userdict('本地词典')
    
 seg_list=jieba.cut(renmin.cut_all=False) #精确分词
    
  
    
 tf={}
    
 for seg in seg_list:
    
     if seg in tf:
    
       tf[seg]+=1
    
     else:
    
       tf[seg]=1     #将分词表放入字典里计数
    
 ci=list(tf.keys())
    
 print(len(ci))

Step2 :删掉停用词,并统计剩下的词与其词频

复制代码
 with open('停用词表','r',encoding='utf-8') as ft:

    
     stopword=ft.read()
    
 for seg in ci:
    
     if 不要词的条件1 or 不要词的条件2:
    
      tf.pop(seg)
    
 print(tf)
    
 print(len(tf))

Step3 :将词与词频从字典中调换位置

倒数第二排没看懂,是怎么换的键和值的顺序

复制代码
 ci,num,data=list(tf.keys()),list(tf.values()),[]

    
 for i in range(len(tf)):
    
     data.append((num[i],ci[i]))
    
 data.sort()  #sort()默认按升序排列,若按降序,括号里加上reverse=False
    
 tf_sorted={}
    
 for i in range(len(data)):
    
     tf_sorted[data[i][1]]=data[i][0]
    
 print(tf_sorted)

全部评论 (0)

还没有任何评论哟~