专栏首页趣Python成语接龙大战(AI来袭)

成语接龙大战(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
获胜者是:石嫂

本文分享自微信公众号 - 趣Python(yang-an-china),作者:滚神大人

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • # python # # 分形 # Sierpinski Carpet 谢尔宾斯基地毯

    好久没更新,趁着中午休息更新一下, 这次的是分形中的谢尔宾斯基地毯,3阶的地毯是下面这个形状(不是二维码哈☺):

    滚神大人
  • # python # # 分形 # 圆

    滚神大人
  • # python # # 分形 # 唱片

    发现turtle几个好玩的东西,螺旋圈圈,实现方式很简单,按照不同的半径接续画圆。

    滚神大人
  • Kafka 中使用 Avro 序列化框架(一):使用传统的 avro API 自定义序列化类和反序列化类

    关于 avro 的 maven 工程的搭建以及 avro 的入门知识,可以参考: Apache Avro 入门

    CoderJed
  • js设置百分比保留两位小数

    CreateTime--2017年8月23日11:03:31 Author:Marydon

    别先生
  • 2015:数据安全大乱大治年

    2014年数据库市场的热词非“大数据”莫属,当市场上很多人被电商、互联网公司的“经典案例”吸引后,随即便希望尽快将自己的数据交给外部的大数据服务公司,力图通过新...

    CSDN技术头条
  • [原创翻译]Protocol Buffer Basics: C#

    Protocol Buffer 基础知识:c#    原文地址:https://developers.google.com/protocol-buffers/d...

    lpxxn
  • 【干货】前端持续集成和工程化之路

    孙茂斌,曾先后在Yeahmobi、TCL、平安科技等公司从事过Java后台开发、项目管理以及Web前端开发等相关工作,擅长从0-1解决问题。自2013年以来专注...

    杨振涛
  • 【干货】前端持续集成和工程化之路

    孙茂斌,曾先后在Yeahmobi、TCL、平安科技等公司从事过Java后台开发、项目管理以及Web前端开发等相关工作,擅长从0-1解决问题。自2013年以来专注...

    杨振涛
  • python的StringIO

    但是有时候不想写到本地,只是要存在电脑内存就好,这样就可以用 StringIO 进行保存:

    机器学习和大数据挖掘

扫码关注云+社区

领取腾讯云代金券