Python如何实现海贼王的歌词组成词云图
发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,小编给大家分享一下Python如何实现海贼王的歌词组成词云图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言本教程基于P
千家信息网最后更新 2024年09月21日Python如何实现海贼王的歌词组成词云图
小编给大家分享一下Python如何实现海贼王的歌词组成词云图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
前言
本教程基于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 向著阳光.txtJungle P.txt memories.txt 心的地图.txtRun!Run!Run!.txt share the world.txt 未来航海.txtShining Ray.txt 全新世界.txt 永久指针.txtbelieve.txt 冒险世界.txt 疯狂彩虹.txt
2. 原始数据准备OK后,先实现一个函数循环读取data目录下的所有文件
import osdef read_content(content_path): ''' 读取目录下的所有文件并合并成一个内容块返回 ''' # 初始化内容为空 content = '' # 使用os模块的listdir函数枚举文件夹下所有文件 for f in os.listdir(content_path): # 拼接文件完整路径 file_fullpath = os.path.join(content_path, f) # 判断是否是文件 if os.path.isfile(file_fullpath): print('loading {}'.format(file_fullpath)) # 将文件内容进行拼接 content += open(file_fullpath, 'r').read() # 每首歌词之间用换行符分隔 content += '\n' print('done loading') return content
# 读取文件夹内容content = read_content('./data')print('\n显示内容的前面部分...\n')print(content[:99])
loading ./data/believe.txtloading ./data/BON VOYAGE.txtloading ./data/free will.txtloading ./data/Jungle P.txtloading ./data/memories.txtloading ./data/Run!Run!Run!.txtloading ./data/share the world.txtloading ./data/Shining Ray.txtloading ./data/全新世界.txtloading ./data/冒险世界.txtloading ./data/向著阳光.txtloading ./data/心的地图.txtloading ./data/未来航海.txtloading ./data/永久指针.txtloading ./data/疯狂彩虹.txtdone loading显示内容的前面部分...世代传承的意志 时代的浪潮 人的梦想这些都是无法阻挡的只要人们继续追求自由的解答这一切都将永不停止我只相信着未来 就算有人笑我也无所谓奔驰的热情让你更耀眼虽然好刺眼 但我仍要继续凝视
3. 使用jieba提取出关键词
import jieba.analyse# 这里使用jieba的textrank提取出1000个关键词及其比重result = jieba.analyse.textrank(content, topK=1000, withWeight=True)# 生成关键词比重字典keywords = dict()for i in result: keywords[i[0]] = i[1]print(keywords)
Building prefix dict from the default dictionary ...Loading model from cache /var/folders/5d/mjgsmy7n6vlfrk42v1_jtc7c0000gn/T/jieba.cacheLoading model cost 1.042 seconds.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 import Image, ImageSequenceimport numpy as npimport matplotlib.pyplot as pltfrom wordcloud import WordCloud, 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如何实现海贼王的歌词组成词云图"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
文件
内容
云图
海贼
海贼王
歌词
世界
生成
关键
关键词
函数
图片
地图
数据
目录
篇文章
中文
冒险
准备
热情
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器安全评估工具
服务器的管理口怎么进
党建研究数据库
国家网络安全周2020年
南宁网络安全行动
水果捞数据库安装
路由器管理中服务器
软件开发项目管理的制度
疫情信息网络安全
数据库管理系统是哪类软件
新乡网络安全宣传周
计算机网络技术三级真题1
静安区银联软件开发参考价格
0501无法打开数据库文件
数据库金额字段保留两位小数
网络安全教育主题团课活动心得
mysql恢复数据库表
网络安全服务企业论文
pubg体验服服务器连接失败
考试系统数据库连接失败
10个g打服务器
finder连接服务器
山东赤子城网络技术有限公司成立
关系数据库设计基础理论
华为海洋网络技术有限公司
医疗卫生软件开发
软件开发模块拖拽
计算机网络安全不包括
使用网络安全事项
功能软件开发路线