python谐音梗_有没有类似“duck不必”的谐音梗?

8月份看到此问题,灵感突然爆发。然后文章写写停停停停停……快11月才写出来……

谐音梗干嘛要找人问,自己创造不快乐吗~

我潜心研究,发明了谐音梗生成器。 文章版见:M小白:谐 音 梗 生 成 器​zhuanlan.zhihu.comv2-f8beeafe0c05fb95027e961ba225418a_180x120.jpg

谐音梗,即通过谐音来制造笑点,比如book思议,Tony带水,贪生pass等等。

谐音梗相较于其他段子来说比较容易创作,不用花费太多心思就能创作出令人愉悦的段子。当然,在李诞同学面前讲谐音梗会获得双倍的愉悦。谐音梗——李诞的快乐源泉

既然谐音梗如此有趣,那我们能否用程序自动生成谐音梗呢?本文中,我们将制作谐音梗生成器,又名李诞同学的快乐源泉。

首先,我们要明确目标:给出一个成语(如有备而来),谐音梗生成器可以自动将其中的两个字替换成读音相似的英文单词(如有bear来)。

明确了目标后,谐音梗生成器的大体思路如下:谐音梗生成器 总流程图

第一步:汉语转拼音

首先,我们将汉字成语(有备而来)转换成拼音(you-bei-er-lai)。

在此类问题上,已有很多现成的函数库,直接调用即可(如python中的xpinyin)

第二步:准备英语词典

紧接着,我们需要准备一个英语词典。

为了简化计算,我们只需要考虑最常用的小学词汇,并筛选出所有长度为3-5个字母的单词。一个包含音标的小学词汇英语词典

这样选出的单词能保证大部分读者认识,如green,blue,time等等,同时也会减少后面字符串匹配的工作量。毕竟一些如supercali...的超长单词是绝对用不上的。Supercalifragilisticexpialidocious(人见人爱,花见花开,车见爆胎)

第三步:字符串相似度计算与匹配

已有了一个成语的拼音(YouBeiErLai)以及由上千的简单词汇组成的英语词典后,下一步就是进行字符串匹配了。

这里的匹配不是说找出与成语拼音完全一模一样的英文单词,而是先计算出与成语拼音与各英文单词的相似度,然后进行字符串替换。

于是乎,最重要的问题来了:如何定义两个字符串的相似度?

下面将介绍几种常用的算法,点击下图即可查看。对算法不感兴趣的读者可以跳到第四步。

1. 汉明(Hamming)距离

我们先考虑最简单的情况:两个字符串的长度相等。

汉明(Hamming)距离指的是将一个字符串转变成另一个字符串所需要替换的字符个数。简单来说即比较两个字符串各个位置的字符是否相等。

字符串A与B有两个位置不相等(第三位和第五位),因此,字符串A与B的汉明距离是2。

一般,我们讨论的相似度取值是在0到1之间,数值越趋近1则两个字符串越相似。因此我们可以定义两个字符串的相似度为其相似的字符数除以字符串总长度,上图中为3/5,即0.6

(另一种对汉明距离的理解是对两个字符串进行异或操作,并统计结果中1的个数。)

2. 编辑距离

接下来,我们讨论两个字符串非等长的情况。

类比于汉明距离为替换字符的个数,在非等长的情况下,我们可以统计字符增删改的次数。

编辑距离为对一个字符串进行字符替换、字符添加、字符删除操作,使之变为另一个字符串所需的最少操作步数。

在本例中,我们可以删除字符串A的第2位和第3位,并将第五位由字符a替换成字符d,从而三步得到字符串B。于是,字符串A与字符串B的编辑距离为3。

当然,我们也可以对字符串A进行5次删除操作,对字符串B进行3次删除操作,从而使得字符串AB都变成相等的空串,总共需要8步。但这不是字符串A变成字符串B的最少操作步数,因此编辑距离不为8。

我们可以用如下公式计算字符串AB的相似度。在本例中,字符串A与B的相似度为(8-3)/8 = 0.625

编辑距离算法的逻辑看似简单,但算法实现起来需要动一定的脑筋,是一道很经典的动态规划练习题。有兴趣的读者可以前往下面的地址进行尝试。

3. 余弦相似度

在计算两个向量相似度时,余弦是最常用的一种算法。

我们可以先将字符串转为向量,接着用余弦来计算着两个向量的相似度。

那如何将字符串向量化呢?用词袋(Bag of words)模型!

假设字符串A与字符串B如下:

则两个字符串由四种基本字符组成:"a","b","c","d"

于是乎,我们可以统计字符串A和B中包含这四种基本字符的个数,从而构成一串向量。

A={2,2,1,0}, B={1,0,1,1}即字符串A中包含2个字符"a",2个字符"b",1个字符"c"和0个字符"d"。字符串B同理。

值得注意的是词袋模型没有考虑字符出现的先后顺序。字符串"aabbc"可以编码为{2,2,1,0},字符串"cabab"亦可以编码为{2,2,1,0}

经过上述步骤得出字符串AB所对应的向量后,用余弦公式计算两个向量的余弦相似度即可。余弦公式

余弦相似度也适用于两个文本之间的相似度计算。

4. 其他

除了上述三种相似度以外,其他计算相似度的方式有:

Jaccard 相似度:

Dice 相似度:

Jaccard和Dice比较适合计算文本之间的相似度。此时,集合A与B代表一段文本,集合内的元素为单词。

上述所有的相似度计算方式除了在字符串匹配时会用到,在如目标检测、人脸识别等其他领域也会用到。

在了解了5种相似度计算的方法后,我们来回顾一下之前提出的疑问:如何定义两个字符串的相似度?

问题的答案是依据具体情况而定的,如果两字符串等长,用汉明编码最简单直接;如果我们想进行两段文本之间的相似度计算,用Jaccard、Dice或余弦相似度会比较好;如果……

当然,就像深度学习中的损失函数一样,除了套用比较著名的公式以外,我们还可以根据具体情况,自行定义相似度计算公式。理解算法的原理比套用算法要重要得多。

第四步:最终效果与进一步完善

我们将上述的几个步骤进行一个整合:

给出单词“有备而来”,将其转换成拼音“You Bei Er Lai”

另外,准备好由若干简单英文单词构成的词库。

选择四字词语里的两个字,如选择“备而”(这里的选择可以人工手动选,也可以遍历所有可能的组合,最后选出最佳的结果即可)

“备而”的拼音是“beier”。采用第三步中介绍的某一个算法(如编辑距离)来计算“beier”与英语词典中的所有词(able,above,act...,zoo)的字符串相似度。

最终我们发现单词“beer”与拼音“beier”的相似度最高,高达0.88888(如果按照第三步中对编辑距离的介绍,则其编辑距离为1)

于是,我们可以用单词“beer”来代替拼音“beier”,成语“有备而来”也就变成了“有beer来”。

“欢天喜地”变成了“hunt喜地”

上述方法在部分情况下可以达到不错的效果,但在有些时候,还是略有缺陷的。

比如“不可思议”中的“不可”,拼音是“buke”,发音相似的单词应该是“book”,但是由于编辑距离的定义,“buke”与“book”的编辑距离是4(删除掉buke中的u和e,并加上两个o)。“buke” 与 “bake” 、 “bike” 的编辑距离是1,于是输出结果就成了“bake思议”。

虽说结果也可以,但仍旧有提升的空间。

那有没有什么比较好的提升方法呢?

有的!用音标!

拼音是对中文汉字进行注音,音标是对英文单词进行注音。拼音和音标正好可以对接起来!

新算法的流程图如下:

整体思路保持不变,仍旧是给出汉字“有备而来”,转为拼音“YouBeiErLai”,选择待匹配拼音“BeiEr”。

新算法对要匹配的英文单词进行了修改。首先,我们通过查询英文词典,可以得知每个单词的音标:“beer”对应“ber”,“sky”对应“skaɪ”。

接着,我们手动设置每个音标对应什么声音。比如音标“aɪ”对应中文拼音的“ai”,音标“ð”音似中文的“zhe”,音标“ˈ”是用于表示重读,这里直接忽略。

最后,我们编写一个音标转近似拼音的函数

单词“beer”的音标“ber”近似为拼音后保持不变,仍旧为“ber”,而单词“sky”的音标“skaɪ”近似为拼音后则变为了“skai”。

此时,我们将“有备而来”中的拼音“BeiEr”与这些近似的拼音进行字符串匹配即可。最后发现单词“beer”的近似音标“ber”与拼音“BeiEr”最相似,于是就用“beer”来代替“备而”。

新方法会比直接用英文单词进行字符串相似度计算性能会好一点,但也不会好多少。

比如“不可思议”中的“不可”(“buke”)用旧方法智能找到“bake”,“bike”。使用新方法后可以找出“book”,但同时也找到了其他不太相关的词如“box”,“block”等等。

包括“谐音梗生成器”在内的往期文章代码

已上传至GITHUB

github.com/DrMofu/MLab_wechat

推荐阅读M小白:如何用AI调戏骗子​zhuanlan.zhihu.comv2-edbf2fa93a4ffb92f5c9c5ab105b5437_180x120.jpgM小白:标题党文章生成器​zhuanlan.zhihu.comv2-0bd375ff0fe82f548a9042791333d3e7_180x120.jpgM小白:长 辈 表 情 包 美 学​zhuanlan.zhihu.comv2-8df594674f836623a1a9e0798fa11951_180x120.jpgM小白:毕业照合成器​zhuanlan.zhihu.comv2-c81f7400e67f780be054523ddaba81ad_180x120.jpg

如果你觉得本篇文章比较有意思,欢迎关注技术杂学铺公众号,点赞分享本文章。文章第一时间在公众号内更新

weixin_39900676
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
程序员的1024:代码+程序,引起你的好奇
Hsuesh的博客
10-24 2162
1024是什么? 游戏?2的十次方?某论坛节日?一级棒(1G与1级谐音,也有一级棒的意思)? 你可能知道1GB=1024M,1M=1024K,1KB=1024B 但你不知道一年365天有41天是节日,只有这个是真正属于程序员的 so,在这个特殊的日子里 让我们一起大声喊出: 有这么一群人 他们工作起来没日没夜 加最忙的班,熬最深的夜 从茂密黑发,到深度地中海 从炯炯有神,到黑眼圈+大眼袋 从百变衣帽间,到同款格子衫 从翩翩少年 ,到单身宅男 以前在王者峡谷里找对手,现如今.
python谐音_谐音生成器
weixin_39821604的博客
11-21 1807
duck不必,babe无耻……如何批量制造李诞的快乐源泉。(封面灵感来自奇葩说)阅读全文预计约9分钟段子:★★知识:★★★阅读本文你将学到:字符串相似度谐音,即通过谐音来制造笑点,比如book思议,Tony带水,贪生pass等等。谐音相较于其他段子来说比较容易创作,不用花费太多心思就能创作出令人愉悦的段子。当然,在李诞同学面前讲谐音会获得双倍的愉悦。谐音——李诞的快乐源泉既然谐音如此有趣...
谐音记忆造词器 v1.1
02-15
谐音记忆造词器:本工具可以对汉字组产生有意义的谐音字组,简单点击几下鼠标就可以得到想要的结果,可用于学生对知识点的谐音记忆等。本工具支持2种模式,汉字组模式和首字母模式。
mPaaS x Menxlab | 1024程序员节:Talk is cheap,Show me the AppID
移动开发平台 mPaaS 的博客
10-22 300
<HAPPY 1024 DAY:只加鸡腿不加班>
python中 什么意思_Python里面的这几个,你能回答出来吗
weixin_39693101的博客
11-25 248
原标题:Python里面的这几个,你能回答出来吗初学者学习Python的时候,会有一些非常不适应,这些是Python特有的地方,今天我罗列出一些,希望对初学者有帮助!1.Python中多重循环如何退出比如我们在进行嵌套循环的时候,需要立刻退出,用break是不行的:deffun():fori inrange(3):fori inrange(10,13):print("inner:",i)ifi...
python谐音_为什么谐音那么好笑?
weixin_39968128的博客
11-21 489
谐音笑话之所以好笑,是因为它利用语言的发音相同或相近的关系,有意识地使用语句的双重意义,言在此而意在彼。用网上常传的笑话举个例子:1.儿子问我韩愈是谁,我告诉他:“韩愈是一位伟大的文学家,25岁就是进士了。” 儿子不屑地说:“爸爸,我今年才6岁,就已经是近视了。”2.老师让小明用“大吃一斤”造句。小明说:我走在路上,看见一陀牛粪,我大吃一惊(大吃一斤)。老师赞叹:“海量,海量……”3.今天上驾校理...
Pa1-4_SPOC20201-4Alarm_giftq41_Duck!_
10-04
Duck 公司在仓库安装了红外报警装置,如图所示,所有红外线互不相交。n 个发射器和 n 个接收器将平面分成 n + 1 个区域,从左到右分别记作 0、1、…、n。现在技术人员正在进行调试,对于每个点,需要快速知道它处于...
python helper方法_Python data_helper.load_data方法代码示例
weixin_33486249的博客
03-01 920
# 需要导入模块: import data_helper [as 别名]# 或者: from data_helper import load_data [as 别名]def train_step():print("loading the dataset...")config = Config()eval_config=Config()eval_config.keep_prob=1.0train_d...
详解duck typing鸭子类型程序设计与Python的实现示例
09-21
鸭子类型(Duck Typing)是一种编程哲学,主要应用于动态类型语言,如Python,它强调对象的行为而非其具体的类型。在鸭子类型中,如果一个对象提供了与某个任务相符的方法,那么它就适合用于那个任务,而不必是特定...
Python库 | blackduck-0.0.34.tar.gz
03-01
在本案例中,我们关注的是名为`blackduck-0.0.34.tar.gz`的压缩包,它包含了一个Python库的源代码。这个库被称为Black Duck,可能与开源代码合规性和安全检测有关。 Black Duck,通常指的是Synopsys公司的Black ...
VOCALOID2谐音转换器
11-04
想要使用VOCALOID,但是不会日语五十音图怎么办,赶快使用此软件吧,方便,好用
[软件工具]姓氏谐音随机生成工具使用教程
最新发布
FL1623863129的博客
07-09 7744
这是一个在windows上运行随机生成谐音工具,生成采用自研算法,离线生成。1.74 bnQ:/ 姓氏谐音随机生成工具 这是一个在windows上运行随机生成谐音工具,生成采用自研算法,离线生成。https://v.douyin.com/iA5PwGV/ 复制此链接,打开Dou音搜索,直接观看视频!输入姓氏和生成数即可开始生成,注意生成数可以随便填,软件会自动按最大数生成,比如你设置生成数位10000则可能只会生成500个,因为软件内置只有这么多。
PHP最好的语言的的笑话
sunsiny
07-23 1762
最早看到这个是由于下面这个笑话: 某女:你能让这个论坛的人都吵起来,我今晚就跟你走。 某软件工程师:PHP是最好的语言! 某论坛真的就炸锅了,各种吵架…… 某女:服了你了,我们走吧,你想干啥都行。 某软件工程师:今天不行,我一定要说服他们,PHP必须是最好的语言…… 其实把PHP换成Python\Ruby\Java…能起到一样的效果。终究这只是一个笑话而已。每个人心中都有自己的女神,每个人都会本能...
python中文读音-python中文谐音 Python 的中文谐音是什么?
q6q6q的专栏
10-28 8066
Python 的中文谐音是什么?请尽量准确,。如:Windows:温豆斯 UNIX派森有时候,不得不假装很快乐,只是为了不让别人问你怎么了”python,英[ˈpaɪθən],美[ˈpaɪθɑːn],英["paɪθən]:发音有点像"派森” 或 "派粉”,有一天终于明白,只要你不放手,小编原本可以爱你很久很久。python 英[ˈpaɪθən] 美[ˈpaɪθɑːn]...
我用python是什么_Python中的一些
weixin_39702714的博客
12-03 666
在学习python的时候,会有一些非常不适应,在此列举列表删除和多重循环退出的例子:列表删除里面的坑比如我们有一个列表里面有很多相同的值,假如:nums=[1,6,6,3,6,2,10,2,100],我想去掉6,可以这样写:1 nums=[1,6,6,3,6,2,10,2,100]2 for n in nums:3 if n==6:4 nums.remove(n)5 nu...
python汉语意思-python汉语谐音
weixin_37988176的博客
10-30 1397
广告关闭2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。未来,我们一起乘风破浪,创造无限可能。上面介绍beautifulsoup的特点时说到了,beautifulsoup支持python标准库的解析器html5lib,纯python实现的。 除此之外,beautifulsoup还支持lxml解析器..."beautifulsoup: we called hi...
python搞笑_豆瓣9.1、刷爆朋友圈,知道这3个就够了
weixin_39733821的博客
12-20 885
原标题:豆瓣9.1、刷爆朋友圈,知道这3个就够了 作者 ✎ 西帕克影评人,电影网站主编1977年,乔治·卢卡斯的《星球大战》上映,引发了全球观影风潮,影评人罗杰·伊伯特(Roger Ebert)在看过之后,留下这样的评论:《星球大战》开创了一个戏服崇拜的时代,我们不再需要角色,而仅仅只需要一套戏服。他所指的是《星战》中的头号反派达斯·维达,在那部电影中,维达没有明显的性格,没有前史关系,仅有的只...
python快乐数字怎么表达_韩语谐音表白!在中国520=我爱你,在韩国怎么用数字表达?...
weixin_30582943的博客
12-11 1327
韩语菌每天都会发一篇学习文,来看看今天被翻牌的是谁?你们想看什么,我们就发什么!欢迎留言区评论~▼今天怎么不说笑话谐音,单独说一说韩语中的数字谐音。大家都知道在中国520=我爱你,其实在韩国也有这样的数字谐音,他们竟然用486代表“我爱你”。这是为什么呢?今天就一起来探讨下韩国的数字暗号吧!1、数字中的谐音就像520跟中文的“我爱你”发音类似,韩国也有很多这种因为发音相似就代表固...
cadence自动生成铺铜_OrCAD中如何铺铜
weixin_35843569的博客
01-16 1895
OrCAD中如何铺铜时间:2017-07-24 浏览次数:59 铺铜(1)Shape/Polygon(2)Option栏设置1)class及subclass2) Dynamic copper动态正片类型铜皮,会自动挖空Static Solid静态实心Static crosshatch静态网格,不会自动挖空避让Unfilled表示静态不填充的shape,适用于绘制board outlin...
python 什么是duck typing?静态类型语言中可以有duck typing吗?
04-21
Duck typing是一种动态类型方法的编程...在Python中,使用duck typing可以使代码更加灵活,因为可以让不同的对象执行相同的操作。而在静态类型语言中,因为类型检查是在编译时进行的,所以通常无法使用duck typing。
写文章

热门文章

  • 无源波分和彩光模块_中国移动多省公司公布无源波分复用设备集采结果 24038
  • python中import re_彻底搞懂Python 中的 import 与 from import 10880
  • switch语句判断范围_Linux C语言: switch语句的范围判断! 8491
  • 登入联机服务器失败怎么 修复,元气骑士连接服务器失败 连接不上网络怎么办... 7096
  • origin数据平滑_Origin绘图中的常见问题集锦 5991

最新文章

  • bl系列刀片(blade)服务器,HPE Integrity BL860c i6 刀片服务器
  • 文件服务器性能,文件服务器性能
  • 紫光云服务器芯片,紫光云与新华三半导体共建芯片设计云2.0 携手打造一站式云端芯片平台...
2021年164篇
2020年217篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家玻璃钢雕塑制作设计哪里有玻璃钢雕塑一平米价格天津玻璃钢卡通水果雕塑玻璃钢雕塑摆件系列批发广东户外商场美陈市场湖北玻璃钢雕塑设计广州户外玻璃钢卡通雕塑玻璃钢贴金雕塑乐陵玻璃钢雕塑加工楚雄市玻璃钢雕塑加工商场10周年用美陈定西玻璃钢雕塑制作玻璃钢人物雕塑规格阳泉玻璃钢花盆花器亳州玻璃钢雕塑厂家汕尾玻璃钢雕塑江门卡通玻璃钢雕塑施工安装安顺商场美陈报价湘潭佛像玻璃钢雕塑广西玻璃钢鹿雕塑昭通市玻璃钢雕塑价位广东室内商场美陈价钱宝鸡水景校园玻璃钢雕塑厂家商场美陈经典案例分析深圳商场美陈布置枣强手糊玻璃钢花盆玻璃钢红军雕塑售价商丘仿古玻璃钢彩绘雕塑厂家德州锻铜玻璃钢彩绘雕塑厂家广场玻璃钢动物雕塑批发香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化