文本数据“关键词渲染”的高频词可视化——词云图。

目录

前言:

 官方示例:

实践示例:

        背景说明:基于电影用户评论的数据,通过其中关键词出现的频率做出词云图,从而让阅览者一目了然的看出该电影的正反面评价,甚至电影的分类标签。

 

数据预处理

1、首先将我们所需要的数据爬取出成Excel文件,并用pandas库读取出来。

2、评论分词——结巴分词

 

3、分词词性标注

4.统计且筛选出做需要的词性

最后,通过pyecharts画出词云图

        1、首先导入我们所需的画图库

        2.绘制词云图

         简单说明一下

 代码参数:

        相关网站:

总结:


前言:

        词云图是数据可视化的一种形式,即对文本数据中高频出现关键词以视觉上的突出的形式形成"关键词的渲染",过滤大数文本信息,使阅览者一眼就能领略文本数据的主要表达意思,达到“一眼万年”的效果。

文本数据“关键词渲染”的高频词可视化——词云图。_第1张图片

 官方示例:

这里选用pyecharts官方社区的示例代码

链接——Wordcloud - Basic_wordcloud - Document (pyecharts.org)

import pyecharts.options as opts
from pyecharts.charts import WordCloud

data = [
    ("生活资源", "999"),
    ("供热管理", "888"),
    ("供气质量", "777"),
    ("生活用水管理", "688"),
    ("一次供水问题", "588"),
    ("交通运输", "516"),
    ("城市交通", "515"),
    ("环境保护", "483"),
    ("房地产管理", "462"),
    ("城乡建设", "449"),
    ("社会保障与福利", "429"),
    ("社会保障", "407"),
    ("文体与教育管理", "406"),
    ("公共安全", "406"),
    ("公交运输管理", "386"),
    ("出租车运营管理", "385"),
    ("供热管理", "375"),
    ("市容环卫", "355"),
    ("自然资源管理", "355"),
    ("粉尘污染", "335"),
    ("噪声污染", "324"),
    ("土地资源管理", "304"),
    ("物业服务与管理", "304"),
    ("医疗卫生", "284"),
    ("粉煤灰污染", "284"),
    ("占道", "284"),
    ("供热发展", "254"),
    ("农村土地规划管理", "254"),
    ("生活噪音", "253"),
    ("供热单位影响", "253"),
    ("城市供电", "223"),
    ("房屋质量与安全", "223"),
    ("大气污染", "223"),
    ("房屋安全", "223"),
    ("文化活动", "223"),
    ("拆迁管理", "223"),
    ("公共设施", "223"),
    ("供气质量", "223"),
    ("供电管理", "223"),
    ("燃气管理", "152"),
    ("教育管理", "152"),
    ("医疗纠纷", "152"),
    ("执法监督", "152"),
    ("设备安全", "152"),
    ("政务建设", "152"),
    ("县区、开发区", "152"),
    ("宏观经济", "152"),
    ("教育管理", "112"),
    ("社会保障", "112"),
    ("生活用水管理", "112"),
    ("物业服务与管理", "112"),
    ("分类列表", "112"),
    ("农业生产", "112"),
    ("二次供水问题", "112"),
    ("城市公共设施", "92"),
    ("拆迁政策咨询", "92"),
    ("物业服务", "92"),
    ("物业管理", "92"),
    ("社会保障保险管理", "92"),
    ("低保管理", "92"),
    ("文娱市场管理", "72"),
    ("城市交通秩序管理", "72"),
    ("执法争议", "72"),
    ("商业烟尘污染", "72"),
    ("占道堆放", "71"),
    ("地上设施", "71"),
    ("水质", "71"),
    ("无水", "71"),
    ("供热单位影响", "71"),
    ("人行道管理", "71"),
    ("主网原因", "71"),
    ("集中供热", "71"),
    ("客运管理", "71"),
    ("国有公交(大巴)管理", "71"),
    ("工业粉尘污染", "71"),
    ("治安案件", "71"),
    ("压力容器安全", "71"),
    ("身份证管理", "71"),
    ("群众健身", "41"),
    ("工业排放污染", "41"),
    ("破坏森林资源", "41"),
    ("市场收费", "41"),
    ("生产资金", "41"),
    ("生产噪声", "41"),
    ("农村低保", "41"),
    ("劳动争议", "41"),
    ("劳动合同争议", "41"),
    ("劳动报酬与福利", "41"),
    ("医疗事故", "21"),
    ("停供", "21"),
    ("基础教育", "21"),
    ("职业教育", "21"),
    ("物业资质管理", "21"),
    ("拆迁补偿", "21"),
    ("设施维护", "21"),
    ("市场外溢", "11"),
    ("占道经营", "11"),
    ("树木管理", "11"),
    ("农村基础设施", "11"),
    ("无水", "11"),
    ("供气质量", "11"),
    ("停气", "11"),
    ("市政府工作部门(含部门管理机构、直属单位)", "11"),
    ("燃气管理", "11"),
    ("市容环卫", "11"),
    ("新闻传媒", "11"),
    ("人才招聘", "11"),
    ("市场环境", "11"),
    ("行政事业收费", "11"),
    ("食品安全与卫生", "11"),
    ("城市交通", "11"),
    ("房地产开发", "11"),
    ("房屋配套问题", "11"),
    ("物业服务", "11"),
    ("物业管理", "11"),
    ("占道", "11"),
    ("园林绿化", "11"),
    ("户籍管理及身份证", "11"),
    ("公交运输管理", "11"),
    ("公路(水路)交通", "11"),
    ("房屋与图纸不符", "11"),
    ("有线电视", "11"),
    ("社会治安", "11"),
    ("林业资源", "11"),
    ("其他行政事业收费", "11"),
    ("经营性收费", "11"),
    ("食品安全与卫生", "11"),
    ("体育活动", "11"),
    ("有线电视安装及调试维护", "11"),
    ("低保管理", "11"),
    ("劳动争议", "11"),
    ("社会福利及事务", "11"),
    ("一次供水问题", "11"),
]


(
    WordCloud()
    .add(series_name="热点分析", data_pair=data, word_size_range=[6, 66])
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="热点分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
        ),
        tooltip_opts=opts.TooltipOpts(is_show=True),
    )
    .render("basic_wordcloud.html")
)

运行结果:

出现次数越多的词汇/词语,所呈现在图中的字体越大。后续也可通过自行修改参数,改变词汇字体、图片背景等等。

文本数据“关键词渲染”的高频词可视化——词云图。_第2张图片


实践示例:

        背景说明:基于电影用户评论的数据,通过其中关键词出现的频率做出词云图,从而让阅览者一目了然的看出该电影的正反面评价,甚至电影的分类标签。

这里选用豆瓣第一高分电影、280万人评论、1994年的《肖申克的救赎 The Shawshank Redemption》的豆瓣短评作为数据集,来制作词云,看看评论区对该电影的“关键词”。

文本数据“关键词渲染”的高频词可视化——词云图。_第3张图片


数据预处理

1、首先将我们所需要的数据爬取出成Excel文件,并用pandas库读取出来。

(不会爬的同学可以用八爪鱼,有详细教程)

import pandas as pd
data = pd.read_excel(r'肖申克的救赎 短评.xlsx')

文本数据“关键词渲染”的高频词可视化——词云图。_第4张图片

 这里我们选取200条评论。


2、评论分词——结巴分词

        jieba分词,号称要做最好的 Python 中文分词组件。jieba的主要功能是做中文分词,可以进行简单分词、并行分词、命令行分词等等等等。

总之jieba在开源社区的受欢迎程度非常之高,是非常多人使用的分词组件。

镜像下载- pip install jieba -i https://pypi.douban.com/simple/

我们引用jieba库进行分词:

# 分词
import jieba
data['分词'] = data['评论'].agg(lambda x:jieba.lcut(x))

文本数据“关键词渲染”的高频词可视化——词云图。_第5张图片


3、分词词性标注

        snowNLP是国人开发的python类库,可以方便的处理中文文本内容,snownlp主要可以进行中文分词(算法是Character-Based Generative Model)、词性标注、情感分析、文本分类(原理是朴素贝叶斯)、转换拼音、繁体转简体、提取文本关键词(原理TextRank)、提取摘要(原理TextRank)、分割句子、文本相似(原理BM25)。

        先安装snownlp

pip install snownlp

         词性标注:

 # 词性标注
from snownlp import SnowNLP 
data['词性标注'] = data['评论'].agg(lambda x:list(SnowNLP(x).tags))

        整理:

# 把词性一列中所有列表的数据对拼接到一个列表中,方便后续分析
list_tags = []
for i in data['词性标注']:
    for j in i:
        list_tags.append(j)

# 转换成表格对象
data_tags = pd.DataFrame(list_tags,columns=['词语','词性'])

文本数据“关键词渲染”的高频词可视化——词云图。_第6张图片文本数据“关键词渲染”的高频词可视化——词云图。_第7张图片


4.统计且筛选出做需要的词性

# 统计每一个词性出现的次数
# data_tags['词性'].value_counts()


# 统计形容词的出现频次
result = data_tags[data_tags['词性']=='a'].groupby(by='词语')['词语'].count().sort_values(ascending=False)#[:20]


# 将形容词一列和出现频次一列转换成二维列表
# 注意:频次的数字需要转换成字符
data_wordcloud_tags = [(i,str(j)) for i,j in zip(result.index,result.values)]

我们选用形容词来做我们的词云,在将形容词一列喝出现频次一列转换为二维的列表。

文本数据“关键词渲染”的高频词可视化——词云图。_第8张图片

 文本数据“关键词渲染”的高频词可视化——词云图。_第9张图片


最后,通过pyecharts画出词云图

        1、首先导入我们所需的画图库

import pyecharts.options as opts
from pyecharts.charts import WordCloud

pyecharts是将Python与Echarts相结合的数据可视化工具,其强大毋容置疑,不多解释。

安装:

pip install pyecharts

而后,wordcloud库可以说是python非常优秀的词云展示第三方库。词云以词语为基本单位更加直观和艺术的展示文本。词云图必备!!

        2.绘制词云图

c = (
    WordCloud()
    .add(series_name="", 
         data_pair=data_wordcloud_tags, 
         word_size_range=[15, 90],
         mask_image='4444.jpeg'
        )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="削肾客的感言", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
        ),
        tooltip_opts=opts.TooltipOpts(is_show=True),
    )
)
c.render_notebook()

出图如下:

文本数据“关键词渲染”的高频词可视化——词云图。_第10张图片

         简单说明一下

这处我是自定义的背景,也就是mask_image=""参数,如不设置则默认长方形。注意:背景图最好是白底!(其他底会怎么样没试过)

文本数据“关键词渲染”的高频词可视化——词云图。_第11张图片

 代码参数:

以下是wordcloud词云图的其他参数:

# 系列名称,用于 tooltip 的显示,legend 的图例筛选。
    series_name: str,

    # 系列数据项,[(word1, count1), (word2, count2)]
    data_pair: Sequence,

    # 词云图轮廓,有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选
    shape: str = "circle",

    # 自定义的图片(目前支持 jpg, jpeg, png, ico 的格式,其他的图片格式待测试)
    # 该参数支持:
    # 1、 base64 (需要补充 data 头);
    # 2、本地文件路径(相对或者绝对路径都可以)
    # 注:如果使用了 mask_image 之后第一次渲染会出现空白的情况,再刷新一次就可以了(Echarts 的问题)
    # Echarts Issue: https://github.com/ecomfe/echarts-wordcloud/issues/74
    mask_image: types.Optional[str] = None,

    # 单词间隔
    word_gap: Numeric = 20,

    # 单词字体大小范围
    word_size_range=None,

    # 旋转单词角度
    rotate_step: Numeric = 45,

    # 距离左侧的距离
    pos_left: types.Optional[str] = None,

    # 距离顶部的距离
    pos_top: types.Optional[str] = None,

    # 距离右侧的距离
    pos_right: types.Optional[str] = None,

    # 距离底部的距离
    pos_bottom: types.Optional[str] = None,

    # 词云图的宽度
    width: types.Optional[str] = None,

    # 词云图的高度
    height: types.Optional[str] = None,

    # 允许词云图的数据展示在画布范围之外
    is_draw_out_of_bound: bool = False,

    # 提示框组件配置项,参考 `series_options.TooltipOpts`
    tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,

    # 词云图文字的配置
    textstyle_opts: types.TextStyle = None,

    # 词云图文字阴影的范围
    emphasis_shadow_blur: types.Optional[types.Numeric] = None,

    # 词云图文字阴影的颜色
    emphasis_shadow_color: types.Optional[str] = None,

        相关网站:

1、官网文档

包含pyecharts中各个功能和图形的介绍和代码参数解析。

pyecharts - A Python Echarts Plotting Library built with love.Descriptionhttps://pyecharts.org/#/zh-cn/intro

2、社区

包含各种图形demo的项目案例代码和演示。

https://gallery.pyecharts.org/#/READMEhttps://gallery.pyecharts.org/#/README

3、背景图素材

易词云

http://yciyun.comhttp://yciyun.com


总结:

        此次学习词云图,在通过第三方库,使得过程十分方便简洁,希望对你有所帮助,不足的地方也请不要提出,学无止境,谢谢!!

文本数据“关键词渲染”的高频词可视化——词云图。_第12张图片

你可能感兴趣的:(信息可视化,python)