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

中国有嘻哈——押韵机器人本文出自天外归云的博客园 押韵机器人简介近来群里看到有人谈起押韵机器 突然想起好多年前的回忆 心血来潮写了一个押韵机器人 可以识别韵脚 比较韵脚 词汇列表按韵脚分类 经测试 目前对多音字支持不好 比如唠嗑 唠叨 这种就识别会出错 欢迎大家继续测试 有问题反馈给我 拼音识别基于 pypinyin 库实现 具体用法详见其 github 押韵机

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

押韵机器人简介

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

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

 

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

 

拼音识别基于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://javaforall.net/200580.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午10:30
下一篇 2026年3月20日 上午10:31


相关推荐

  • mdi接口不经网络变压器直接连接mdi_一种以太网的SerDes接口与MDI接口转换模块

    mdi接口不经网络变压器直接连接mdi_一种以太网的SerDes接口与MDI接口转换模块技术领域本实用新型涉及电子技术领域 尤其涉及一种以太网的 SerDes 接口与 MDI 接口转换模块 背景技术 SerDes 接口以及 MDI 接口均为以太网中常用的接口 二者通常会组合使用 在组合使用的场景中 需要设计相应的转换电路 现有技术中 转换电路需要采用多个芯片进行组合 且芯片之间采用高速信号线互联 导致转换电路设计难度较大 实用新型内容针对上述现有技术中的不足 本实用新型提供一种以太网的 SerDes 接

    2026年3月18日
    1
  • 腾讯元宝电脑版上传的文件能有多大

    腾讯元宝电脑版上传的文件能有多大

    2026年3月12日
    2
  • Gamma校正算法原理及实现

    Gamma校正算法原理及实现一、Gamma校正的作用及原理1.什么是Gamma校正?理想的显示系统(如CRT显示器)、采像设备(工业相机)与输入的视频信号(真实的图像信息)成正比,但显示系统或采像设备存在的硬件特性指数Ga

    2022年7月3日
    22
  • dedecms的include文件夹是干什么的?

    dedecms的include文件夹是干什么的?

    2021年9月25日
    52
  • 如何计算时间复杂度

    如何计算时间复杂度一 概念时间复杂度是总运算次数表达式中受 n 的变化影响最大的那一项 不含系数 比如 一般总运算次数表达式类似于这样 a 2 n b n 3 c n 2 d n lg n e n fa 0 时 时间复杂度就是 O 2 n a 0 bO n 3 a b 0 cO n 2 依此类推 eg 1 for i 1 i 循环了 n n 次 当然是 O n 2

    2026年3月17日
    1
  • 华为海思六大部门_海思3516

    华为海思六大部门_海思351651-20210316华为海思Hi3516DV300的linux系统编译2021/3/1610:42https://xueqiu.com/7970718062/159110439官井想开挖掘机来自iPhone发布于2020-09-1315:18$润和软件(SZ300339)$HiSparkAICamera套件l支持鸿蒙OS、LiteOS、Linux系统,方便进行产品的原型验证和快速开发l板载海思Hi3516DV300芯片,内置双核Cortex-A7,最高运行评率900M.

    2025年11月11日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号