前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:一粒米饭

本教程基于Python3,使用Jupyter上进行调试开发。

涉及的Python基础包括:

变量和函数的定义和使用

列表和字典等数据结构的使用

条件和循环语句,if、for等

模块的导入和使用,import语法

需要安装以下依赖库:

jupyter - 交互式笔记本

matplotlib - Python2D绘图库

jieba - Python中文分词组件

pillow - Python图像处理库

wordcloud - Python词云库

目标

从海贼王的歌词中提取出关键词,然后生成乔巴形状的云图,最后效果如下:

1.准备数据

1. 事先我已准备好15首海贼王的歌词文本文件, 放在本地的data目录下。

ls data

BON VOYAGE.txt free will.txt 向著阳光.txt

Jungle P.txt memories.txt 心的地图.txt

Run!Run!Run!.txt share the world.txt 未来航海.txt

Shining Ray.txt 全新世界.txt 永久指针.txt

believe.txt 冒险世界.txt 疯狂彩虹.txt

2. 原始数据准备OK后,先实现一个函数循环读取data目录下的所有文件

importosdefread_content(content_path):'''读取目录下的所有文件并合并成一个内容块返回'''

#初始化内容为空

content = ''

#使用os模块的listdir函数枚举文件夹下所有文件

for f inos.listdir(content_path):#拼接文件完整路径

file_fullpath =os.path.join(content_path, f)#判断是否是文件

ifos.path.isfile(file_fullpath):print('loading {}'.format(file_fullpath))#将文件内容进行拼接

content += open(file_fullpath, 'r').read()#每首歌词之间用换行符分隔

content += '\n'

print('done loading')returncontent#读取文件夹内容

content = read_content('./data')print('\n显示内容的前面部分...\n')print(content[:99])

loading ./data/believe.txt

loading ./data/BON VOYAGE.txt

loading ./data/free will.txt

loading ./data/Jungle P.txt

loading ./data/memories.txt

loading ./data/Run!Run!Run!.txt

loading ./data/share the world.txt

loading ./data/Shining Ray.txt

loading ./data/全新世界.txt

loading ./data/冒险世界.txt

loading ./data/向著阳光.txt

loading ./data/心的地图.txt

loading ./data/未来航海.txt

loading ./data/永久指针.txt

loading ./data/疯狂彩虹.txt

done loading

显示内容的前面部分...

世代传承的意志 时代的浪潮 人的梦想

这些都是无法阻挡的

只要人们继续追求自由的解答

这一切都将永不停止

我只相信着未来 就算有人笑我也无所谓

奔驰的热情让你更耀眼

虽然好刺眼 但我仍要继续凝视

3. 使用jieba提取出关键词

importjieba.analyse#这里使用jieba的textrank提取出1000个关键词及其比重

result = jieba.analyse.textrank(content, topK=1000, withWeight=True)#生成关键词比重字典

keywords =dict()for i inresult:

keywords[i[0]]= i[1]print(keywords)

Building prefix dictfromthe default dictionary ...

Loading modelfrom cache /var/folders/5d/mjgsmy7n6vlfrk42v1_jtc7c0000gn/T/jieba.cache

Loading model cost1.042seconds.

Prefix dict has been built succesfully.

{'扬起': 0.15365137065823337, '开始': 0.33887155728627016, '解答': 0.0790997113814255, '奇迹': 0.2019238936444467, '留下': 0.15805775202925612, '想像': 0.08987560148767863, '感觉': 0.058819354518174556, '时间': 0.07551208515941268, '天堂': 0.08441183647061005, '无法': 0.287129785071775, '伸出': 0.09256367548351727, '回到': 0.08349124701438736, '背负': 0.14437968256383968, '前路': 0.05312061493282433, '屏息': 0.1531365836936351, '秘密': 0.09965773105020974, '七色': 0.08878413441578677, '朋友': 0.1397662417669881, '初识': 0.0830682006897093, '光芒': 0.13352559090174942, '指示': 0.06934108111132412, '拥有': 0.11544194392460741, '色彩': 0.12409038761092896, '世间': 0.18888249529919593, '欢笑': 0.050377170853215976, '选择': 0.06444326221759296, '沾湿': 0.13352559090174942, '起来': 0.0845180267560427, '经历': 0.12616245714507396, '小时候': 0.044857635061158724, '失去': 0.05236725016973628, '歌唱': 0.09501118261648268, '分享': 0.05812477489419511, '收起': 0.0915149943221848, '誓言': 0.05988821730341018, '我会': 0.057893640349250965, '不变': 0.12622369920668572, '熄灭': 0.0791613178160737, '呐喊': 0.13320154266821363, '看见': 0.0854926451902643, '坚持': 0.08213062695901673, '意志': 0.1188937276195136, '美学': 0.1435834973386806, '浮动': 0.13450943469637847, '填满': 0.06039295853670237, '天使': 0.16317731845659758, '找到': 0.05533519004787966, '微笑': 0.0799090440777227, '怀着': 0.4817498228002652, '丢弃': 0.13322161964784338, '跟随': 0.09197164245106097, '地图': 0.07341861667659995, '倒流': 0.07515309019779545, '心情': 0.40510507626640513, '加速': 0.16020612316413707, '时代': 0.299255975193261, '映出': 0.058190874872291284, '收获': 0.12902702145794429, '飞舞': 0.13454804385716426, '重重障碍': 0.07306626680915267, '脚步': 0.11339400407789377, '相遇': 0.07486958598052014, '延伸': 0.11401423021177887, '就算': 0.23310398624372167, '旋律': 0.19062549166169998, '梦想': 1.0, '拥抱': 0.20056370347498786, '释放': 0.08048707411918865, '分界点': 0.11445040093643048, '超越': 0.08754528438684966, '水平线': 0.12663559447803469, '地平线': 0.1021244005469806, '忘却': 0.13322161964784338, '发展': 0.05521593346271129, '思念': 0.1296081980642235, '中将': 0.1730725099154214, '漫历': 0.14999796242367477, '照耀': 0.13450943469637847, '抓住': 0.1081902273317158, '大海': 0.2191369911522112, '梦幻': 0.08878413441578677, '没错': 0.06908130733179857, '变迁': 0.08388306680969282, '绽开': 0.0970297226758736, '背影': 0.04489925975654794, '响起': 0.09348462612242271, '传承': 0.08343950722719029, '泪水': 0.2043342791423508, '寄托': 0.15140800018240286, '出发': 0.1376622319882071, '安排': 0.09570513284670208, '凝视': 0.09058874193734022, '目标': 0.20253971299175438, '想法': 0.13322161964784338, '盘旋': 0.04653128171301495, '浪花': 0.14292308695167863, '赢得': 0.13454804385716426, '摸索': 0.13352559090174942, '命运': 0.17767531296473504, '要紧': 0.07100381557014668, '同伴': 0.13322161964784338, '相信': 0.06780937693484108, '到达': 0.11990597718546447, '起航': 0.17121317788528045, '伙伴': 0.1021244005469806, '鼓起': 0.08326947015393454, '角逐': 0.13450943469637847, '得到': 0.139130325974439, '热情': 0.16974545588616355, '咒文': 0.0755227913516226, '追逐': 0.12956507425075023, '吝惜': 0.044375524671743924, '旗帜': 0.22318864743628655, '不会': 0.136742080156981, '紧握着': 0.07074596658159177, '传递': 0.08318907791061766, '知道': 0.049014975541075576, '避开': 0.11925067678883694, '失败': 0.19864619215021206, '直到': 0.16170953592115245, '开辟': 0.11502344884527459, '驶向': 0.08949640367673918, '超乎': 0.17571155584916723, '航海图': 0.17530963330220897, '星空': 0.07085050507113418, '足迹': 0.11380925226394865, '憧憬': 0.13136516727228634, '信号': 0.1345775449622126, '停息': 0.14813550567788228, '抑制': 0.0823736383036949, '力争上游': 0.15985443423198126, '希望': 0.3064348996750364, '探求': 0.10037115703978353, '浪潮': 0.11205492596248597, '奔驰': 0.04647451827818632, '迷惑': 0.10853833347078598, '疾速': 0.09289401344883545, '重拾': 0.13450943469637847, '双手': 0.11833008801272633, '继续': 0.26128426151029494, '前进': 0.38049616332706393, '海洋': 0.07764780435427948, '力量': 0.22448970728817977, '迈进': 0.07788425716172835, '海贼王': 0.05988821730341018, '奔向': 0.1050116694918882, '仰望': 0.11375613415335455, '开创': 0.04909483864698758, '忘怀': 0.1178931622715251, '伴随': 0.1881308832052442, '直率': 0.0819811725519203, '迈向': 0.09805414857074332, '等待': 0.05312061493282433, '追赶': 0.23590910145448465, '橙色': 0.19827470012221343, '飞溅': 0.14517190902077373, '填入': 0.10713343097770893, '寻找': 0.341410398721581, '羁绊': 0.13454804385716426, '愿望': 0.11502105997392056, '描绘': 0.04882446831721362, '号角': 0.18892935090190913, '深渊': 0.11341295672924022, '传说': 0.10453681102617361, '胸膛': 0.10826393677032255, '追忆': 0.13454804385716426, '改变': 0.1105923128490412, '起跑': 0.07840202504448608, '成为': 0.2958892859451614, '投入': 0.054739663860643786, '谜题': 0.13450943469637847, '旅途': 0.13166250912547978, '高声': 0.178643850709469, '追求': 0.1715459745440232, '总会': 0.13242770285698083, '遥望': 0.050377170853215976, '畏惧': 0.05048971733869129, '刻下': 0.10563678032609539, '面对': 0.19682389784566295, '流下': 0.10423811536600736, '逃脱': 0.04488557389782134, '奔跑': 0.08204660421218422, '火种': 0.1411150676880229, '冒险': 0.5005306993202343, '世界': 0.5449287709811719, '能够': 0.25882968219047386, '碎片': 0.13709646143068321, '信念': 0.11795116869385924, '未知': 0.08221194482386406, '吹响': 0.1779165442702793, '全部': 0.13392040723985732, '孩子': 0.13811401117842068, '获得': 0.06780937693484108, '预感': 0.16639206740929596, '把握': 0.08675073217837388, '示人': 0.1026344593871126, '听说': 0.05312061493282433, '冲出': 0.13224882644548555, '没有': 0.15159970579125204, '喜宴': 0.17379403916878816, '才能': 0.12972776044573475, '时候': 0.17420500418671414, '人们': 0.10319997520144626, '为止': 0.052150373830141754, '抬头': 0.11467512436536162, '无限': 0.06764346188867, '出航': 0.03865274219069975, '故事': 0.13392040723985732, '可能': 0.07390594415565045, '引导': 0.16732685717721082, '情绪': 0.12968877267733753, '内心': 0.1475787080533443, '单凭': 0.12542873282600936, '仿效': 0.0918818019595783, '方向': 0.1629842877398635, '想象': 0.09265141828602656, '太阳': 0.20931270320049486, '举起': 0.07341861667659995, '熟悉': 0.12327709678857283, '日子': 0.08479628778416956, '回忆': 0.13352559090174942, '来自': 0.09467283342394821, '片长': 0.07540537390616804, '绝望': 0.09314642277073719, '阻挠': 0.07790059908360082, '追梦': 0.09309586423204035, '鼓励': 0.10880965048592321, '阻挡': 0.17223247845464154, '蔓延': 0.17439976351747224, '征途': 0.15601230856847134, '集起': 0.0904380138460612, '航线': 0.12392209071853239, '终能': 0.13392040723985732, '困扰': 0.12606024257520246, '展开': 0.17772773888330856, '带领': 0.07912571036131048, '不了': 0.16113705986038165, '起始': 0.09330731354358968, '地方': 0.16598627575218824, '踏上': 0.13236658985957564, '描述': 0.07626512494851125, '启程': 0.10245516018260722, '放飞': 0.1598542189807057, '双臂': 0.09340867759406857, '心灵': 0.3305662079948827, '眼神': 0.08399973860720229, '笑颜': 0.13085137132492453, '狂欢': 0.11807469241626582, '铭刻': 0.19068475937471777, '看到': 0.054296059984562176, '大家': 0.18077773704285963, '船舵': 0.10845934179932064, '完成': 0.1227002236449499, '驱使': 0.14999738505133325, '出现': 0.13115377751750223, '跨越': 0.1331441398565992, '高涨': 0.136124054847588, '风帆': 0.11119913692251271, '漂浮': 0.1274242316646285, '起飞': 0.10309000992149217, '相识': 0.13352559090174942, '音符': 0.16639206740929596, '迎风': 0.13392040723985732, '勇气': 0.1507813084829896, '空荡': 0.10791710727689573, '跃动': 0.0829313414107292, '天空': 0.5285292408817545}

2.使用wordcloud生成云图

这里还需要一张底图用于生成云图,这里使用海贼王中乔巴的图片

from PIL importImage, ImageSequenceimportnumpy as npimportmatplotlib.pyplot as pltfrom wordcloud importWordCloud, ImageColorGenerator#初始化图片

image = Image.open('./images/tony_src.png')

graph=np.array(image)#生成云图,这里需要注意的是WordCloud默认不支持中文,所以这里需要加载中文黑体字库

wc = WordCloud(font_path='./fonts/simhei.ttf',

background_color='white', max_words=1000, mask=graph)

wc.generate_from_frequencies(keywords)

image_color=ImageColorGenerator(graph)#显示图片

plt.imshow(wc)

plt.imshow(wc.recolor(color_func=image_color))

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

plt.show()

用python画一个机器猫歌词_Python实现海贼王的歌词组成词云图相关推荐

  1. 用python画一个心形_python怎么画爱心

    Python可以使用turtle库来画爱心. Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指 ...

  2. python中怎么画一个机器猫_如何用Python画一只机器猫?

    作者 | 人邮异步社区 责编 | 胡巍巍 出品 | CSDN博客 自信心是成功的源泉,对刚入门编程行业的初级程序员来说,多敲代码多做项目就是构建自信心的最好办法. 第一次学编程是在屏幕上敲出" ...

  3. python画圆填色_python turtle我想用五种颜色画五个圆,并且用画圆周的颜色填充,老是出问题,怎么回事,怎么修改?:python教程同心圆...

    python turtle画4个同心圆方法 from turtle import * def test(): reset() circle(30,-360) up() goto(0,-10) down ...

  4. php饼图只有一个小方块_如何用Python画一个好看的饼图

    这是一个关于画一个饼图的故事......话说在一个月黑风高的夜晚,笔者肚子饿了,脑海中回想起画饼充饥的典故,于是打算.... 成功冷到自己...... 好吧进入正题,这次我们来说说怎么用python画 ...

  5. 如何使用python画一个爱心

    1 问题 如何使用python画一个爱心. 2 方法 桌面新建一个文本文档,文件后缀改为.py,输入相关代码ctrl+s保存,关闭,最后双击运行. 代码清单 1 from turtle import ...

  6. 如何用python画一个美队盾牌

    如何用python画一个美队盾牌 import turtle# 画一个大圆 turtle.pensize(10) # 用pensize来设置画笔的粗细 turtle.pencolor('red') # ...

  7. 请问怎么用python画一个轮廓图,,例如中国地图这种,注意是轮廓图,求大佬指点

    请问怎么用python画一个轮廓图,,例如中国地图这种,注意是轮廓图 例如这个:

  8. 怎么用python画房子_用python画一个小房子

    用python画一个小房子 2020年07月22日 | 萬仟网IT编程 | 我要评论 如何用python画一个小房子?效果图如下:代码如下:import turtle# 前置p = turtle.Pe ...

  9. 用python画苹果的logo_简单几步,100行代码用Python画一个蝙蝠侠的logo

    转自:菜鸟学Python 简单几步,100行代码用Python画一个蝙蝠侠的logo-1.jpg (35.33 KB, 下载次数: 0) 2020-7-30 12:04 上传 蝙蝠侠作为DC漫画的核心 ...

  10. python turtle画房子代码里面的窗子,如何用python画房子_用python画一个小房子

    如何用python画一个小房子? 效果图如下: 代码如下: import turtle # 前置 p = turtle.Pen() # 作者要说的话 for i in range(6): print( ...

最新文章

  1. java 如何开启一个线程_Java-开启一个新的线程
  2. bzoj 4711 小奇挖矿 ——“承诺”类树形dp
  3. Spring Boot的Tomcat 启动详解
  4. org.activiti.engine.ActivitiException: Couldn‘t deserialize object in variable ‘application‘
  5. 百一测评java基础答案_百一测评——《Web应用开发》选择题(含参考答案)—JavaEE基础...
  6. SharePoint Online 创建门户网站系列之首页布局
  7. python框架django的使用_Django框架的基本使用,若依框架
  8. python pip清华源安装库
  9. highstack的一个bug
  10. 双缓冲(Double Buffer)原理和使用【转】
  11. Go语言与数据库开发:01-02
  12. Xfce 4.4 beta2
  13. json数据快速格式化
  14. 《天龙八部》地形研究
  15. 用php计算身体质量指数,BMI计算器,身体质量指数BMI在线计算
  16. 电脑显示器设置被锁定如何解锁
  17. Linux 踩内存 slub,Linux SLUB 内存分配器分析
  18. linux管理进程ps命令,ps命令进程管理-linux
  19. GO语言基础进阶教程:sync包——互斥锁
  20. android7.1自带壁纸,RK3399 Android7.1 修改壁纸

热门文章

  1. uplift model的理论与实践
  2. 《周一清晨的领导课》读书笔记
  3. 千呼万唤始出来的CoordinatorLayout
  4. java实现积分抽奖_java毕业设计_springboot框架的超市消费积分抽奖
  5. dayjs格式化使用
  6. 大数据将走向何方?未来大数据的十大趋势评析
  7. 激光清洗的优点和实际案例
  8. eplan窗口宏与符号宏是什么_电气设计||Eplan P8 宏功能的应用
  9. eCommerce电子商务业务领域常见的一些术语
  10. 前端开发笔记:记一次网站创建的过程