成语接龙大战(AI来袭)


公司里现在已经不能访问公众号了,家里又几乎没时间开电脑,上个月偶然发现公众号终于出了手机版,所以我胡汉三又回来了。(搞了半天,手机版一堆bug,最后还是起了个大早,用电脑发了)

本文附带的代码GitHub地址在文末。

有任何问题可以微信yang_an_china联系我,也可以后台留言。

规则

成语接龙的规则,应该大家都知道,比较简单:

  • 至少2个人参与

  • 先初始化说一个成语,假设X个人参与的话,那么这X个人按照固定顺序接龙前一个人的成语

  • 接龙这个成语的第一个字的字音必须跟前一个人说的成语的最后一个字的字音相同(声调不要求),则可以继续

  • n个人循环接龙,接不上成语的则失败,无法继续参与,从下一个人继续接龙

  • 坚持到最后的一个人是王者

  • 不能出现死循环(不能出现重复的成语)

 

正例:一丘之貉(he) - 和和美美 - 眉飞色舞 - 无边无际 ... 

反例:一心一意 - 一心一意 - 一心一意 - ... 

特例:风雨无阻 (一招制敌,一招成为王者)

AI的数据集

按照成语接龙大战的规则,数据集的基本数据必须要包含成语和成语的拼音, 现在的输入法都有很全的字词库集,可以很好的满足我们的需求。搜狗用的比较多,直接可以在搜狗的官网上下载到成语大全的字库集。那么我们的第一步是就是要解析成语大全字库集,变成我们需要的文本格式。

文章链接地址:#python# 成语接龙(一)

AI初级模式

初级模式的实现很简单,随机从数据集中匹配一个可以接龙的成语进行应答 ,当然不要认为初级AI容易对付,随机方式是真随机,不到失败是不会退出的 ,如果你出的成语容易接龙的话,它可以陪你下到地老天荒。

AI对战:

stat_primer_AI_war(1000)
随机生成的成语是:查无实据
[primer]AI1:举鼎绝膑
[primer]AI2:宾入如归
[primer]AI3:诡谲怪诞
[primer]AI1:丹书铁券
[primer]AI2:全功尽弃
[primer]AI3:泣数行下
[primer]AI1:下情上达
[primer]AI2:大吹大擂
[primer]AI3:泪流满面
[primer]AI1:面缚舆榇
[primer]AI2:趁火抢劫
[primer]AI3:阶下百诺
[primer]AI1:喏喏连声
[primer]AI2:生拖死拽
[primer]AI3:None
[primer]AI1:None
获胜者是:AI2
{'AI1': 373, 'AI2': 325, 'AI3': 302}
同等水平下,先手优势很明显。

AI专家模式

初级模式重复的次数足够多就变成了专家模式;

什么意思?

1W小时定律,接龙的次数多了,哪些成语容易接龙哪些成语不容易接龙总知道吧;

专家模式的训练也很有意思,让两个初级模式的AI左右互搏,下100000000把(不用数了,小目标,1个亿)

什么?目标太小,好吧,几个亿都行,你开心就好。

AI对决:

stat_primer_AI_vs_expert_AI_war(1000)
……
随机生成的成语是:一传十十传百
[primer]腾一雷:败俗伤风
[expert]吴长风:凤表龙姿
[primer]腾一雷:None
获胜者是:吴长风
{'expert': 857, 'primer': 143}
专家模式的AI胜率差不多能到9成。

AI大神模式

专家(模式)的缺点是冷酷无情,而且容易掉书袋, 一丘之貉可能还认识,那语笑喧阗呢?跟大神下棋的感觉,就像是“在春风中坐了一月”, 大神不仅是知识渊博,信手拈来,用你熟悉的成语来接龙,还会照顾你的低智商,接一个成语还要'思考'一下。

人机对战模式:

Human_vs_primer_AI()
请输入名字:令狐冲
随机生成的成语是:南柯一梦
请输入成语:梦笔生花
[human]令狐冲:梦笔生花
[primer]石嫂:花枝招展
请输入成语:战天斗地
[human]令狐冲:战天斗地
[primer]石嫂:砥砺风节
请输入成语:节哀顺变
[human]令狐冲:节哀顺变
[primer]石嫂:变容改俗
请输入成语:俗不可耐
[human]令狐冲:俗不可耐
[primer]石嫂:耐人咀嚼
请输入成语:觉人觉世
[human]令狐冲:觉人觉世
[primer]石嫂:十病九痛
请输入成语:痛不欲生
[human]令狐冲:痛不欲生
[primer]石嫂:生张熟魏
请输入成语:魏紫姚黄
[human]令狐冲:魏紫姚黄
[primer]石嫂:黄公酒垆
请输入成语:碌碌无为
[human]令狐冲:碌碌无为
[primer]石嫂:为期不远
请输入成语:圆滑世故
[human]令狐冲:None
获胜者是:石嫂

点击“阅读原文”可访问本文对应的GitHub代码。

阅读原文

(↓ - 有些内容只在小龙家发,可关注同名“趣Python”号,谢谢 - ↓) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值