资讯 人工智能开发者
此为临时链接,仅用于文章预览,将在时失效

我用 tensorflow 实现的 “一个神经聊天模型”

作者:AI研习社 编辑:贾智龙
2017/09/07 10:26

雷锋网按:本文原作者小灰灰,原载于专栏。雷锋网已获得作者授权。

概述

这个工作尝试重现这个论文的结果 A Neural Conversational Model (aka the Google chatbot).
它使用了循环神经网络(seq2seq 模型)来进行句子预测。它是用 python 和 TensorFlow 开发。

程序的加载主体部分是参考 Torch 的  neuralconvo from macournoyer.

现在, DeepQA 支持一下对话语料:

To speedup the training, it's also possible to use pre-trained word embeddings (thanks to Eschnou). More info here.

安装

这个程序需要一下依赖 (easy to install using pip: pip3 install -r requirements.txt):

你可能需要下载附带的数据让 nltk 正常工作。

python3 -m nltk.downloader punkt

Cornell 数据集已经包括了。其他的数据集查看 readme 文件到他们所在的文件夹。  (在  data/).

网站接口需要一些附加的包:

Docker 安装也是支持的,更多详细的教程参考  here.

运行

聊天机器人

训练这个模型,直接运行 main.py 。一旦训练完成,你可以测试结果用 main.py --test
(结果生成在  'save/model/samples_predictions.txt') 或者用 main.py --test interactive (更有趣).

Here are some flags which could be useful. For more help and options, use python main.py -h:

To visualize the computational graph and the cost with TensorBoard, just run tensorboard --logdir save/.

默认的这个网络架构是一个标准的 encoder/decoder 有两个 LSTM layers (隐藏层大小 256) ,然后 vocabulary 的 embedding size 是  32. 这个网络用 ADAM 训练。最大的句子长度设置为 10 个单词,但是可以增加。

结果

当然,这个网络并不会很擅长聊天:

Q: Hi
A: Hi.

Q: What is your name ?
A: Laura.

Q: What does that mean ?
A: I dunno.

Q: How old are you ?
A: thirty-five.

Q: Will Google hire me ?
A: No.

Q: Tell me the alphabet
A: Fuck you.

Q: That's not nice
A: Yeah.

这里有一些情况它并不能正确回答:

Q: Who is Laura ?
A: My brother.

Q: Say 'goodbye'
A: Alright.

Q: What is cooking ?
A: A channel.

Q: Can you say no ?
A: No.

Q: Two plus two
A: Manny...

预训练模型

项目截图

我用 tensorflow 实现的 “一个神经聊天模型”

chatbot_miniature.png

实测截图

我用 tensorflow 实现的 “一个神经聊天模型”

Screenshot from 2017-09-05 14-47-52.png

一步一步教程

1. 下载这个项目:
https://github.com/Conchylicultor/DeepQA
2. 下载训练好的模型:
https://drive.google.com/file/d/0Bw-phsNSkq23OXRFTkNqN0JGUU0/view
(如果网址不能打开的话,今晚我会上传到百度网盘,分享到:http://www.tensorflownews.com/
3. 解压之后放在 项目 save 目录下,如图所示

我用 tensorflow 实现的 “一个神经聊天模型”

Screenshot from 2017-09-05 14-52-13.png

4. 复制 save/model-pretrainedv2/dataset-cornell-old-lenght10-filter0-vocabSize0.pkl 这个文件到  data/samples/,如图所示:

我用 tensorflow 实现的 “一个神经聊天模型”

Screenshot from 2017-09-05 14-55-00.png

5. 在项目目录执行一下命令:

python3 main.py --modelTag pretrainedv2 --test interactive

程序读取了预训练的模型之后,如图:

我用 tensorflow 实现的 “一个神经聊天模型”

Screenshot from 2017-09-05 14-57-14.png

聊天机器人资源合集

项目,语聊,论文,教程
https://github.com/fendouai/Awesome-Chatbot

DeepQA

https://github.com/Conchylicultor/DeepQA

备注:为了更加容易了解这个项目,说明部分翻译了项目的部分 readme ,主要是介绍使用预处理数据来运行这个项目。

长按图片保存图片,分享给好友或朋友圈

我用 tensorflow 实现的 “一个神经聊天模型”

扫码查看文章

正在生成分享图...

取消
相关文章