您正在使用IE低版浏览器,为了您的FUTUREAI账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
FUTUREAI 机器人
发私信给FUTUREAI
发送

【学习型AI?】 什么原理?能不能自己仿制一个?如何自制一个简易的聊天机器人

本文作者:FUTUREAI 2018-06-10 19:21
导语:一个叫做“小图”的机器人程序貌似最近火了。大家踊跃测试,发掘出很多欢乐的回答。这样的“AI”我们能不能自己也做出一个来?不靠谱大叔说:能! 只要你熟练掌握了一门编程序

一个叫做“小图”的机器人程序貌似最近火了。大家踊跃测试,发掘出很多欢乐的回答。这样的“AI”我们能不能自己也做出一个来?不靠谱大叔说:能!

只要你熟练掌握了一门编程序言、了解数据库的一些知识并会使用SQL语句。

【废话】
大叔脱离IT业已经很久了,程序员证书也早已发黄了。所以,你有足够的理由认为大叔在这个话问题上胡说八道而放弃阅读。

以上是为了我可能荒废了你的时间而做的免责声明。
鉴于大叔自认自己的帖子技术含量低,所以不放在“Hello World”小组去丢人现眼了。
文末有大叔写的程序和玩法介绍。

【背景】
机器人程序(http://166.111.120.164:8081/programd/)
果壳的帖子http://www.guokr.com/post/93498/ 和 http://www.guokr.com/post/93552/ 。

【正文】
大叔专门去体验了一把。认为这是一个基于关键词的聊天程序。
神马意思? 就是说这个“AI”是从你的话语中找出一个或几个词汇,然后依据这些词汇找到答案来回答你。
这个实现起来比较简单。事实上,大叔N年以前游手好闲的时候写过一个聊天机器人的程序,就是基于关键词的。


一、问答
基本原理是这样的:比如存在一个词汇-答案的对照表

从提问的句子中提取出词汇来,到对照表中找出相应的答案即可。这样一些,写出一个基于关键词的聊天程序就变得很容易了。

慢着!汉语有个特点,字与字之间没有分隔符号!不像英文那样有空格分隔。你如何拆分一个句子并确保你拆分出来的是个有意义的词汇?

难道需要一个汉语专家和一个程序员共同合作或者需要一个通才才可以写这个程序么?
不用!我们可以另辟蹊径,换用一个笨办法。反正不怕疲劳连续工作是计算机的优点。我们让“AI”从已经建好的关键词表里面一个一个地取出关键词来和问话比较。一旦发现问话中出现关键词,就可以给出相应的回答了。

这样做效率会不会很低啊?不会!我们可以利用人家已经开发好的技术,而且不必了解其中的细节。

用SQL语句,利用数据库软件自身的功能!

我们假设存在一张对照表matchsheet,其中两个重要的字段就是keywords 和 answer 。
那么下面的句子(以MS-Access为例):
select answer from matchsheet where 'question' like ('*' & keywords & '*')

就返回了一个数据集合,包含了存在于问话中的关键词以及相应的答案。随机选择一个答案并作为回答就可以了。

瞧!就是这么简单。

二、学习
这个的实现也很简单,在你的问话中加入一个特定标识表示这是一句教学。程序检查到表示后把你的话写入知识库。

比如“小图”用了“teach”
大叔的程序使用了"MSG=关键词|回答"这样的格式。

但是自己一个人辅导“AI”太费时间了。没关系,我们有网络。编写一个网络应用接口就可以发动大量好奇的Geek男女前来教授。

大叔写程序的年代WEB聊天室盛行。于是大叔就采取了一个投机取巧的办法:让“AI”登录WEB聊天室,分析从聊天室页面获取的聊天内容,并和聊天的人们对话、学习。

如果你也能够做一些简单的网络通讯编程,那么恭喜你!你可以写出一个“小图”来了。

三、拓展

当你拥有的一个庞大的知识库来供“AI”作为与人对话的依据后,如何提高回答的准确度就变得重要了。

这时候可以引入“权重”因子。

一个简单的计算权重例子:

问:果壳是一个什么样的网站?

有三对相关的关键词vs答案
1 什么 vs 你怎么那多为什么啊?
2 果壳 vs 果壳是一个泛科技类的网站
3 网站 vs 网站是指因特网上用于展示特定内容的相关网页的集合

可以看出第二个答案中含有两个关键词。那么可以选择第二个答案作为最优答案。

当然还有一些其他的方法比如句型分析之类的,但是当年不靠谱大叔很不靠谱,写这个小程序只是为了玩一玩。所以没有继续把它做下去。因为继续做下去就太辛苦啦:大叔就要必须去学很多东西了,而大叔是个懒惰的人。

【附件】

下载:http://vdisk.weibo.com/s/2lTeL
说明:这是大叔后来用VB写的一个单机简版。去掉了网络的部分。为什么?WEB聊天室不火爆了啊!大叔又懒得钻研MSN/QQ之类的即时通讯软件。这一版程序已经修订了原来“24点”游戏的浮点运算BUG。

一些有趣的玩法:

1 24点
问话格式: 24=a b c d
注:a b c d 为四个整数,其间用空格分隔

2 猜数字,AI出一个四位数,你来猜,依据AI反馈的提示,经多次猜测猜出答案。
格式:S4=XXXX 
注:XXXX为一个四位数,比如:2081

3 四则运算
写上四则算式就可以

4 人民币大小写转换
格式: 这是多少钱-XXXXXXX
注:XXXXXXX为数字

下图是玩法参考


分享:
相关文章
最新文章