请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 3144|回复: 0

Python有嘻哈:Crossin教你用代码写出押韵的verse

[复制链接]

169

主题

1

好友

733

积分

版主

Rank: 7Rank: 7Rank: 7

发表于 2018-7-18 16:44:28 |显示全部楼层

托某奇艺选秀节目的福,“嘻哈”无疑是这个夏天最热的音乐标签。年初的时候,我们教室实习生小D还是网易云上一只忧郁的民谣狗(参见 数据分析:当赵雷唱民谣时他唱些什么?)。没想到一夜之间,他的歌单已被HipHop占据,俨然一只黑怕老炮儿。

这对小D来说可谓一大利好:本来报个吉他班,学了仨月才把1645摸熟,如今去淘宝了一把嘻哈四件套,找段beat,药药切克闹,就嗨起来啦!

小D underground听多了就想找人battle。隔壁老王他早就不爽了,这次一定要写段词来diss他!但像小D这么real的rapper是绝对不屑套别人的词的,这可难为坏他小学及格的作文水平了。

小D一连几天闷头在纸上写写画画,也没憋出来几句。我实在看不下去了,不就是写点押韵的词嘛,交给哥来帮你搞定。小D一脸鄙夷:你还会写歌词?我微微一笑:词我是写不了,但我们会什么?编程啊!都什么时代了,还要靠人力嘛。

我的想法很简单:就是找些嘻哈歌手的歌词,把里面的词语都拿出来。当想要写一段歌词时,只要给一个参考词,就帮你找出押韵的备选词。当然太简单的单字押韵我都懒得列出来了,咱们要做就做双押和三押!

说干就干!

1.拿网易云的接口,抓了十几位中文嘻哈歌手的歌单,包括:

红花会、PGone、VaVa、艾福杰尼、BooM黄旭、Bridge、GAI爷、TizzyT、JonyJ、小青龙、辉子、孙八一、谢帝、马思维、满舒克、Mc光光
  1. import requests
  2. url = 'http://music.163.com/api/playlist/detail?id=402614161'
  3. req = requests.get(url)
  4. data = req.json()
复制代码
2.把他们的歌词全抓下来,共 459 首歌曲
  1. import requests
  2. url = 'http://music.163.com/api/song/lyric?os=pc&id=411988938&lv=-1&kv=-1&tv=-1'
  3. req = requests.get(url)
  4. data = req.json()
复制代码
3.用我们之前介绍过的结巴分词(参见【编程课堂】jieba-中文分词利器),把歌词处理下,分成一个个的词语,得到 21206 个词
  1. import jieba
  2. seg_list = jieba.cut("我做的说唱从来不是为了混这圈子", cut_all=True)
  3. print("Full Mode: " + "/ ".join(seg_list))
  4. '''
  5. 结果
  6. Full Mode: 我/ 做/ 的/ 说唱/ 从来/ 从来不/ 不是/ 为了/ 混/ 这/ 圈子
  7. '''
复制代码
4.用 xpinyin 将处理出来的词语转成拼音
  1. from xpinyin import Pinyin
  2. p = Pinyin()
  3. print(p.get_pinyin(u"嘻哈"))
  4. '''
  5. xi-ha
  6. '''
复制代码
5.有了拼音就好办了。从网上找个押韵表,把这些嘻哈词语分门别类,就大告功成啦。最后得到 2845 个双押及三押的备选词汇
一、佳麻  a ia ua   第十部 麻、佳半,部分入声二、开来  ai uai    第五部 佳半、灰半三、先寒  an ian uan üan 第七部 寒删先元半十四部覃盐咸四、江阳  ang iang uang 第二部 江阳五、逍遥  ao iao     第八部 萧肴豪六、国歌  e o uo    第九部 歌,部分入声七、灰微  ei ui   第三部 支微齐,部分入声八、森林  en in un ün  第六部 真文元半,十三部 侵九、冬青  eng ing ong iong 第一部 东冬,十一部 庚青蒸十、希奇(儿)i(er并入) 第三部 支微齐,部分入声十一、诗词 i(整体认读)第三部 支微齐,部分入声十二、别叠 ie (y)e      部分入声,佳麻二韵部分字十三、忧愁 ou iu     十二部 尤十四、读书 u      第四部 鱼虞,部分入声十五、须臾 ü       第四部 鱼虞,部分入声十六、绝学 üe      部分入声
6.最后,用django搭个网站,把这功能做成可在线访问的

接下来,小D要做的事就只剩下:想一个词,然后去搜一下有什么其他词跟它配。比如要diss老王,搜一下“老王”:                     

于是小D就写下了:隔壁老王,你不要嚣张,放学之后给我等在操场!

实在太方便啦!

如果你也想来首自己的嘻哈,点击这里,进入网站自个儿玩儿去吧!

想要完整代码及详细讲解的,请在公众号(Crossin的编程教室)里回复 嘻哈。

最后,本人亲自演示,如何用搜出来的双押词汇加上一段简单beat做出一段嘻哈歌曲。
   https://www.zhihu.com/video/888055148159602688  
多谢各位homie支持,别忘了转发文章以及给我的知乎专栏点赞!



════

其他文章及回答:
听说你好不容易写了个爬虫,结果没抓几个就被封了? 喏,你们要的 PyCharm 快速上手指南 编程新手:看懂很多示例,却依然写不好一个程序 给伸手党的福利:Python 新手入门引导 如何用100行Python代码做出魔性声控游戏“八分音符酱” 学习编程的过程中可能会走哪些弯路,有哪些经验可以参考? 你是如何自学 Python 的?
Crossin的编程教室
微信公众号ID:crossincode网站:crossincode.com


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-3-29 20:14 , Processed in 0.025340 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部