keras教程:手把手教你做聊天机器人(上)

本篇教程的目标:

使用keras,快速搭建属于自己的聊天机器人。

好啦,话不多说,第一代机器人,走起~~


让机器人开口讲话,总共需要三步:

1. 准备对话数据

2. 搭建seq2seq模型

3. 训练模型,并预测聊天效果

需要的工具有3样:

下面,我们就按照步骤,逐一来学习。

第一步:准备对话数据。

A: 复习了一晚上的机器学习。 B: 看懂了? A: 看开了…… B: ……

上面一段对话,如果让机器能“听”懂,又学会“说”,首先,我们需要将它转换为“机器语言”。

什么是“机器语言”?

不是文字,而是一串一串的数字

打个比方,

如果你跟机器人讲“复习”这个词语,她是蒙圈的。

但如果你跟她讲

“[ 0.006 -0.054 -0.101 ]”

此时,她就能收到指令并随时准备去干活…… 尽管有可能,这时换你蒙圈了。

其实,像这样“一个词,对应一串数字 ”,专业术语被称为“词向量”:

复习 → [ 0.006 -0.054 -0.101 ]

它们都被统一放在一个“字典”里

翻开字典,里面记录着每个词语(或字),所对应的向量:

有了这部字典,你就能将每一个词语(或汉字),替换为一串数字,喂给你的机器人。

注意:在上例中,每个词(或字),由3个数字组成,即维数为3。实际工作中,维数通常会达到几十到上百不等,维数越多,词与词之间所表述的关系越准确。此处为了便于理解,将问题进行了简化。

我们可以这样使用“语料”和“字典”:

先将“语料”,切分成“一个一个的词(或字)”,

之后,从字典中,去寻找对应的词向量,

如下图(点击可查看大图):

当我们完成从“文本”到“词向量”的转换,并将每一组“A-B”对话,分别放进变量X和Y中,例如,

那么,我们“第一步,准备数据”的工作,就完成了。

下面,来看代码。

我们使用的Python以及各种包:

Python 3.5.2

jieba 0.38

gensim 2.3.0

numpy 1.13.1

re 2.2.1

首先,导入库和模块。

接下来,我们需要准备“字典”和“语料”。

下载地址:

https://pan.baidu.com/s/1dE2xOJ3

密码: mqu9

(微信无法添加外链,请自行复制到浏览器)

【文件截图】

注意:word_vector中的3个文件,都要下载到本地,并放置在同一个文件夹下。

有了“字典”和“语料”,接下来,我们就要准备所需的训练数据了。

首先,对“语料”进行分词。

接着,将分词后的问-答语句,分别输入X和Y中。

然后,将X和Y中的词语,转换为词向量,并将问答句的长度统一。

至此,数据的准备工作,就完成了。

我们来看下生成的X_vector、Y_vector,它们长什么样子:

打印结果:

由于篇幅有限,这里仅展示出问答句中,第1个句子的第1个词语。

因为,我们使用的字典,其词向量的维数是60,所以,从结果中我们能够看到,每一个词语,都是由60个数字组成。

温馨提示

在本教程中,我们使用的“字典”,即“词向量”,是已经被训练好的、可以直接拿来用的词向量。

当然,你也可以自己训练一套属于自己的“词向量”。

想要详细了解相关知识的同学,可以在后台留言,我会根据大家的需求,酌情展开此部分内容。

恭喜你!

学到这里,

构建聊天机器人最繁琐的部分,

我们已经全部处理完了。

下次课,我们将会搭建算法模型,这部分很重要,但是放宽心,使用keras搭建的速度非常快,代码也简单得令人“发指”!!

好啦,不跟你们多唠了,我要回去给我的robot喂数据了,下次见~~

如果在本文中,有任何疑问,可以关注微信公众号:AI传送门,留言给我们,我们会定期为同学进行答疑。

长按上方二维码,关注我们

原文发布于微信公众号 - AI传送门(aiportal)

原文发表时间:2017-09-12

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

开发 | 一文详解英伟达刚发布的 Tesla V100 究竟牛在哪?

AI科技评论按:很多读者在思考,“我和AI科技评论的距离在哪里?”答案就是:一封求职信。 5 月 11 日,在加州圣何塞举办的的 2017 年度 GPU 技术大...

27813
来自专栏PPV课数据科学社区

近期GitHub上最热门的开源项目(附链接)

来源:开源最前线 2 月份 GitHub 上最热门的开源项目又出炉了,又有哪些新的项目挤进热门榜单了呢,一起来看看。 ……………………………… 1、nocode...

3539
来自专栏机器之心

开源 | 猿辅导分布式机器学习库ytk-learn、分布式通信库ytk-mp4j

机器之心投稿 作者:猿辅导研究团队语音识别负责人夏龙、机器学习工程师吴凡 近期,猿辅导公司开源了两个机器学习项目—ytk-learn, ytk-mp4j,其中...

2957
来自专栏机器人网

机器人在什么情况下遇到奇异点?

在调试机器人时,如果机器人处于下图状态(处于J4轴和J6轴同轴),会发生报警:MOTN-023或者MOTN-063,在此情况下,机器人只能在关节坐标系下移动。以...

761
来自专栏AI研习社

官方博客:英伟达的新卡如何从硬件上支持了深度学习

编者按:5 月 11 日,在加州圣何塞举办的 2017 年度 GPU 技术大会上,英伟达发布了 Tesla V100,号称史上最强的 GPU 加速器。发布之后,...

3125
来自专栏有趣的Python

1-机器学习启蒙- Python基础语法与工具

机器学习正在改变世界 以前的机器学习观点 ? 我为什么学习机器学习?机器人:人工智能应用。 ? 亚马逊零售推荐,Google广告。电影推荐,音乐推荐,社交推荐。...

3027
来自专栏玉树芝兰

如何用 R 绘制动态统计图?

漫长的演化史上,人类的感官只要能有效发现食物(包含猎物),快速捕获危险信号(例如捕食者逼近),和同类高效交流(使用声音、表情或肢体语言)就大概率可以在残酷的自然...

762
来自专栏织云平台团队的专栏

AI 时代下的海量业务智能监控实践

作者丨李春晓:腾讯高级工程师,目前为腾讯SNG社交网络运营部社交平台业务运维组员工。 海量业务的挑战 互联网业务讲究“极致、口碑、快”,经历过长时间的演进,腾...

1.1K10
来自专栏量子位

少年,这有套《街霸2》AI速成心法,想传授于你……

千平 发自 LZYY 量子位 出品 | 公众号 QbitAI ? “ 少年,我看你骨骼精奇,是万中无一的武学奇才。我这有套《街霸2》心法,见与你有缘,就十块钱卖...

3786
来自专栏企鹅号快讯

Tensorflow:谷歌的一种深度学习框架/丹炉

懒人阅读:想要傻瓜式体验深度学习的请先绕开TF,可以考虑pytorch、keras。想要真正从事可部署产品研发的童鞋,TF可能是一个绕不开的存在。 写在前面:引...

2737

扫码关注云+社区