本帖最后由 贰逼 于 2017-2-13 21:45 编辑

国外原帖:http://www.planetminecraft.com/project/albert-ai---a-self-learning-chatbot/

视频搬运:
[bili=8572631]1[/bili]
http://www.bilibili.com/video/av8572631
存档下载:
https://pan.baidu.com/s/1i5C38xB

实际运行图片:







这款AI能实现对话、自我学习的功能。
其中有关键盘操作、聊天框显示、文本储存、最佳匹配、自我学习算法原理都在视频中。

原理:
大部分原理的概况作者已经在视频中阐明了,具体算法看视频
下面是具体模块介绍(内容不说了,都是按照算法编写的指令,而且有很多枚举相当长,大家知道怎么运行的就行了)

















视频中唯一没有涉及到的是模型动画。
其实模型动画就是修改了钻石锄头不同损害值时的模型,再加上高频修改AS头戴的钻石锄头的损害值让模型仿佛能动起来。

自我学习算法详解:
AI:hello!
接着玩家输入一个消息:
AI:hello!
P:hi!
①在AI记录中查找"hello",在玩家记录中查找对应的"hi",若两者只要有一个没有完全匹配的结果则在AI记录中新增"hello",对应匹配玩家记录新增"hi"
②使用检索算法(视频中交代了一种粗略的算法),在AI记录中查找"hi"。比如找到了完全匹配的结果"hi",再看对应的玩家记录,如果有多个玩家记录:"how are you?" "how's it going?" "how are you doing?",随机选取一个
AI:hello!
P:hi!
AI:how are you?
玩家再输入一个消息
AI:hello!
P:hi!
AI:how are you?
P:I'm fine
①在AI记录中查找"how are you?",在玩家记录中查找对应的"I'm fine",若两者只要有一个没有完全匹配的结果则在AI记录中新增"how are you?",对应匹配玩家记录新增"I'm fine"
②使用检索算法,在AI记录中查找"I'm fine"。比如找到了最优的结果"I'm OK",再看对应的玩家记录,如果只有一个:"glad to hear that",则直接输出

重复上面的过程,你会发现这种自我学习其实就是以玩家的回复套玩家的回复,充实完善自己的数据库。

我们可以把它看作一个触发式复读机。
其实像现在市面上的各种聊天AI,都是这种自我学习算法。其性能高地只不过在于云数据库大小(决定储存多少组对话),还有检索算法的时间复杂度以及最优性(决定处理效率,以及对话搜索结果是否准确)。
因此这就是为什么你怼不过小冰,因为它从某些喷子那里获得了与你的话相匹配的结果,因此和你对怼的实际上是那些喷子。[groupid=546]Command Block Logic[/groupid]