中国有嘻哈——押韵机器人

[本文出自天外归云的博客园]

押韵机器人简介

近来群里看到有人谈起押韵机器,突然想起好多年前的回忆。

心血来潮写了一个押韵机器人。可以识别韵脚、比较韵脚、词汇列表按韵脚分类。

 

经测试,目前对多音字支持不好:比如唠嗑,唠叨。这种就识别会出错。欢迎大家继续测试,有问题反馈给我。

 

拼音识别基于pypinyin库实现,具体用法详见其github

押韵机器人代码

押韵机器人代码文件命名叫“punchliner.py”,代码如下:

from pypinyin import pinyin, lazy_pinyin, Style

words = ["今天","太躁","艾福杰尼","着迷","太绕","心间","","盛宴","榴莲","亏欠","二百五","腐乳","火锅底料","MC大笑","别跟我唠","我感冒","好不好","太早","住","兄弟","胸臆","太辣","太大","太炸","我手抖"]

def is_alphabet(uchar):
    rule1 = (uchar >= u'\u0041' and uchar<=u'\u005a')
    rule2 = (uchar >= u'\u0061' and uchar<=u'\u007a')
    if rule1 or rule2:
        return True
    else:
        return False

def get_punchline(word):
    last_character = word[len(word)-1]
    last_character_pinyin = pinyin(last_character)[0][0]
    punchline = []
    for the_char in last_character_pinyin:
        if not is_alphabet(the_char):
            punchline.append(last_character_pinyin.split(the_char)[0])
            punchline.append(the_char)
            punchline.append(last_character_pinyin.split(the_char)[1])
    return punchline

def compare_punchline(word1,word2):
    punchline1 = get_punchline(word1)
    punchline2 = get_punchline(word2)
    prefix1 = punchline1[0]
    prefix2 = punchline2[0]
    #前缀尾字母设定不为空
    prefix1_last_char = 'x'
    prefix2_last_char = 'x'
    if prefix1 != '':
        prefix1_last_char = prefix1[len(prefix1)-1]
    if prefix2 != '':
        prefix2_last_char = prefix2[len(prefix2)-1]
    #前缀先决条件,都是i或都不是i才算押韵
    pre_rule1 = (prefix1_last_char == 'i')
    pre_rule2 = (prefix2_last_char == 'i')
    all_i = (pre_rule1 and pre_rule2)
    all_not_i = 'i' not in [prefix1_last_char,prefix2_last_char]
    if all_i or all_not_i:
        rule1 = punchline1[1] == punchline2[1]
        rule2 = punchline1[2] == punchline2[2]
        if rule1 and rule2:
            return True
        else:
            return False
    else:
        return False

def classify_punchline(words_list):
    target = words_list[0]
    yayun_words = filter(lambda word:compare_punchline(target,word)==True,words)
    yayun_words_list = list(set(yayun_words))
    left_words_list = list(set(words_list)-set(yayun_words_list))
    print(yayun_words_list)
    rule1 = left_words_list != words_list
    rule2 = len(left_words_list) > 0
    if rule1 and rule2:
        classify_punchline(left_words_list)
    
if __name__ == '__main__':
    #print(get_punchline("变"))
    #print(get_punchline("案"))
    #print(get_punchline("绕"))
    #print(compare_punchline("安","翻"))
    #print(compare_punchline("变","案"))
    #print(compare_punchline("房","狼"))
    #print(get_punchline("唠"))
    classify_punchline(words)

其中:

1. 函数fuck_yayun可以对词藻列表中的词汇进行判断,把押韵的词汇进行自动归类;

2. 函数get_punchline可以获取词汇韵脚;

3. 函数compare_punchline可以比较韵脚。

希望有朝一日可以像发明AlphaGo一样发明AlphaRapper,让他去参加中国有嘻哈。

运行结果:

 

转载于:https://www.cnblogs.com/LanTianYou/p/7527666.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件简介:     “韵脚大全”顾名思义,就是韵脚的集合 。当初刚开始写顺口溜的时候,诗中的字、词、句都是在脑子里构思,想到什么就写什么,搜索的范围非常有限,也没什么整体规划的概念 。诗词写多了,也就开始有所转变,『韵脚大全』也就应运而生了。     韵母:一个韵母分为平舌音和卷舌音,每个发音均有4个声调,每一个韵母配合一种声调单独成为一组押韵的韵脚。还有几个特殊音,如J,Q,X。       声调:第一声=阴平、第二声=阳平、第三声=上声、第四声=去声 ===============更新日志============== 2012.05.21    【v6.5】 01、添加“词组联想”功能 02、"成语联想"修正不能即时搜索问题 03、添加“友情链接”模块 04、完善“同韵四声”查询时的效果 05、软件设置页面添加告别感悟,修改北漂示意图 2012.02.22    【v6.2】 01、支持窗体最大化和自定义大小 02、添加自定义字体大小、颜色选项 03、添加右侧快捷按钮板块 2012.02.05    【v6.0】 01、添加“自行输入韵母”查询功能 02、新增网友诗集并更新部分网友留言 03、软件设置页面移除“设置首页面”选项 04、更换托盘程序代码,添加右键操作菜单 05、修复输入法设置一个小BUG 2011.10.15    【v5.8】 01、修正程序最小化到托盘后的一些问题 02、成语词库联想最开始的光标定位 03、统一所有子窗体输入法设置 04、调整软件回访编码、Image目录图片整理归类 05、广告页面代码整合,添加《天朝乞丐》顺口溜 06、软件关闭时自动修改首页面供下次启动时调用 2011.09.17    【v5.7】 01、修正Win7系统下输入法读取错误问题 02、韵脚查询区域、草稿区域字体稍加增大 03、双击“成语区域”弹出“成语联想”页面,完善韵脚查询 2011.08.18    【v5.6】 01、软件开启前弹出 Hello 框,为后续软件统一品牌铺路 02、应网友要求添加可选软件启动时密码登陆功能 03、将非文字类管理页面移除,进一步精简代码 04、软件设置页面图片超级链接添加 Setup_ 参数 2011.07.02    【v5.5】 01、调整程序后台打开统计页面的次数和间隔时间 02、关于作者、软件更新、友情链接变更访问官网ID 03、全文检索如搜索不到数据则提示是否搜寻网络 04、在分类数据/友情链接未更改的情况下不刷新文章 05、修正在没有记录时,输入一些数据后点删除会出错 06、添加软件记忆功能,开启后显示最后访问的类别 07、文章排序方式改为pr值排序,数值越大排名越靠前 2011.05.26   【v5.4】 01、《韵脚大全》字库调整窗体底部增加操作提示信息 02、《韵脚大全》菜单“扩展”处新增“字库调整”方便调用 03、《韵脚大全》更新不覆盖韵母数据,界面数据转移 2011.04.07    【v5.3】 01、应网友要求《韵脚大全》添加“同韵四声"查询功能 02、诗词歌赋处添加网友"王茂"21首韵脚诗供大家鉴赏 03、添加《韵脚大全》底部的条件查询信息提示 04、双击韵脚窗口弹出“字库调整”,可自行调整字库 2011.03.19    【v5.2】 01、操作提示信息窗弹出2秒后将自动关闭 02、主窗体控件统一下移9位,使整体布局更显紧凑 03、窗体《资源共享》平台完善各项快捷操作 04、窗体《软件设置》添加总在最前选项 05、窗体《友情链接》添加新浪等文档共享网络地址 06、新增《常用工具》一期,二期可自由添加快捷图标 07、文章数据保存之前判断文件名输入是否规范 08、修正文章内容修改后无法保存以及剪切问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值