玩转词云 | 天王刘德华歌词可视化,没有那么难!

640?wx_fmt=png

刘德华(Andy Lau),1961年9月27日生于香港新界,祖籍广东江门,香港非官守太平绅士衔,香港特别行政区荣誉勋章佩戴者,中国残疾人福利基金会副理事长,亚洲新星导计划的发起人。大中华区乐坛和影坛巨星,华人娱乐圈影、视、歌综合发展最成功的代表性人物之一。1985年发行首张个人专辑《只知道此刻爱你》。1990年凭借专辑《可不可以》在歌坛获得关注。1994年获得十大劲歌金曲最受欢迎男歌星奖 。1995年在央视春晚上演唱歌曲《忘情水》。2000年被《吉尼斯世界纪录大全》评为“获奖最多的香港男歌手”。2004年第六次获得十大劲歌金曲最受欢迎男歌星奖。2016年参与填词的歌曲《原谅我》正式发行。


        天王刘德华一直是不老男神,娱乐圈常青树。先来看看百度指数,通过百度指数我们看出,近7年一直很平稳,可以说相当低调。只有在2014年底有一个小高峰,因为参加了湖南卫生的跨年演唱会的原因把。


640?wx_fmt=png

再来看一下微信指数,基本和百度指数一样,没有什么大的起伏。


     

640?wx_fmt=png

    从上面的指数,可以看出天王刘德华近几年非常的低调。但是刘德华绝对称得上是娱乐圈里最早的鲜肉级别的明星了,当年华仔帅气的模样也可谓是惊艳了整个娱乐圈啊!出道多年,往常身价早已过10亿。他在业界口碑不断很好,敬业、爱国。很多人肯定以为,天王的父母过着奢华的生活,但是华仔的父母朴实到如同所有的老年人一样,任凭岁月的自然老去,也不曾因为自己的儿子是大明星而显示出任何特殊。小编也终于明白为什么华仔在娱乐圈这么多年了,依旧那么低调尽责,父母给予的教育也有很大的原因啊!


了解了这些以后,我们切换到今天的主题,天王刘德华的歌词可视化。数据可视化的方法有很多种,比如折线图、饼图、数据透视表等。今天我们主要说一下利用词云可视化。


环境



环境:MAC + Python3.6
IDE:Spyder
模块: jieba、wordcloud、matplotlib、 scipy、 pandas  numpy 

    

明确任务与数据收集


做任何事情都要有个目标 ,数据分析也不例外。数据分析的第一步就是明确分析任务,然后根据目的来梳理分析思路、并搭建分析框架。本次的分析任务就是词云可视化天王刘德华的歌词。

 

数据收集是按照确定的数据分析框架,收集相关数据的过程,它为数据分析提供了素材和依据。一般的数据来源主要是数据库、公开出版物、互联网、市场调查等。本次的数据来源主要是互联网查看Andy歌词,收集到一个命名为andy.txt的文件,然后利用python中的open函数打开,它接受一个路径名(可以使用绝对路径)。你还可以收集任何你喜欢的明星的歌词来分析,只要数据源不一样,可视化的结果就不一样。要不要尝试可视化一下你喜欢的明星?


具体代码如下:

     

def open_andy():
    """
        step 1: 数据收集
    """
    #读取文本文件
    andy = open('/Users/yoni.ma/Documents/python_l/scraping/Andy/andy.txt').read()
    print(andy)
    return andy

数据处理与分析


数据处理是指对收集到的数据进行加工整理,形成适合数据分析的样式,他是数据分析前必不可少的阶段,主要包括数据清洗、数据转化、数据提取、数据计算等处理方法。

数据分析是指用适当的分析方法以及工具,对处理过的数据进行分析,提取有价值的信息,形成有效结论的过程。

在本次的可视化任务中,小编主要是用的是结巴包(jieba),它是一个内置库,直接可以使用,不需要按照。它主要用于中文文本切词,如果碰到英文单词,也会以英文的默认形式切分。按照精度不同,分为三种模式式,结巴分词分为三种模式:精确模式(默认)、全模式和搜索引擎模式(精度从低到高)。本次使用的是全模式。在切分以后,也可以进行词频分析。

具体代码如下:

def analyze_andy(data_andy):
    """
        step 2 and 3 : 数据处理与分析
    """


    #全模式,把文本分成尽可能多的词
    #cut_andy = jieba.cut(data_andy,cut_all = True)

    cut_andy = jieba.lcut(data_andy)
    #返回的是一个生成器
    print(type(cut_andy))
    #打印输拆分后的结果
    #print(','.join(cut_andy))

    # 按照空格拆分歌词
    wc_andy = " ".join(cut_andy)

    #打印输拆分后的结果
    print(wc_andy)
    return wc_andy 


    #词频统计


    words_df = pd.DataFrame({'wc_andy':wc_andy},index=[0])

    print (words_df)

    words_stat = words_df.groupby(by=['wc_andy'])['wc_andy'].agg({"计数":numpy.size})
    words_stat = words_stat.reset_index().sort_values(by=["计数"],ascending=False)

    print(words_stat)
    word_frequence = {x[0]:x[1]for x in words_stat.head(10000).values}
    print(word_frequence)

    word_frequence_dict = {}
    for key in word_frequence:
        word_frequence_dict[key] = word_frequence[key]
        print(word_frequence_dict[key])

    print(word_frequence_dict)

数据展现


数据是通过表格和图形的方式呈现出来,常用的数据图表有饼图、柱状图、条形图、折线图、雷达图等。但是今天我们主要是使用python里面的词云包来展示,也就是wordcloud. 使用执行必须先安装:

具体安装方法如下:

安装模块 wordcloud:

方法1: pip install wordcloud

方法2: 下载Packages安装:pip install 软件包名称

软件包下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud

注意:要把下载的软件包放在Python安装路径下。

    

为了能让词云显示中文,你需要下载一个中文字体,simhei.ttf,让后放在当前工作目录下面。为了能使的生成的词云好快,你可以根据指定的图片生成,主要是使用imread方法完成。在指定词云的属性时候,指定背景图片即可,也就是mask 的值为你的图片名。有时候为了能避免不必要的词在词云中展示,你可以使用STOPWORDS.add("流泪")把词去掉,比如去掉眼泪。

词云属性设置完成以后,就是使用matplotlib模块进行展示词云了。

具体代码如下:

def show_andy(analyze_data):
    """
        step 4: 数据处理
    """    
    # 设置词云属性
    color_mask = imread('andy2.jpeg')
    wc_andy = WordCloud(
            #设置中文字体,否则出现乱码
            font_path ="simhei.ttf", 
            #设置背景颜色
            background_color = 'white',
            #设置背景图片
            mask = color_mask,
            #设置图片默认的大小,如果使用背景图片
            width = 1500,height =860,margin=2,

            stopwords=STOPWORDS.add("流泪"),
            #词云显示的最大词数
            max_font_size=100,
            #设置词云显示的最小词数
            min_font_size=0,

            random_state=42,
            )
    #产生词云
    wc_andy.generate(analyze_data)


    #wc_andy.generate_from_frequencies(analyze_data)

     # 从背景图片生成颜色值  
    image_colors = ImageColorGenerator(color_mask) 

    # 重新上色
    wc_andy.recolor(color_func=image_colors)

    #保存图片
    wc_andy.to_file("andy.png")

    #保存图片
    plt.figure("andy")

    #显示图片
    plt.imshow(wc_andy)

    #关闭图像坐标系
    plt.axis("off")
    plt.show()

效果展示


根据刘德华的背景图生成的词云


640?wx_fmt=jpeg

640?wx_fmt=png

根据Alice的图生成词云


640?wx_fmt=jpeg

640?wx_fmt=png

关于天王刘德华的歌词可视化就到这了,关于刘德华你有什么想说的,发信给小编吧。

感谢您的阅读。


更多精彩内容,

请关注人工智能与大数据生活

640?wx_fmt=jpeg

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值