我用 tensorflow 实现的“一个神经聊天模型”,一个基于深度学习的聊天机器人

2017-09-05 16:53:44 +08:00
 fendouai_com

标题的我是指 DeepQA 项目的作者。 接上篇: https://www.v2ex.com/t/388328 ,翻译了部分项目说明文档。

概述

这个工作尝试重现这个论文的结果 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...

预训练模型

项目截图:

实测截图:

一步一步教程:

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

4.复制 save/model-pretrainedv2/dataset-cornell-old-lenght10-filter0-vocabSize0.pkl 这个文件到 data/samples/

如图所示:

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

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

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

聊天机器人资源合集

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

更多教程:

http://www.tensorflownews.com/

DeepQA

https://github.com/Conchylicultor/DeepQA

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

5143 次点击
所在节点    Python
11 条回复
shihty5
2017-09-05 17:04:14 +08:00
kinda of silly, but I'd like to try:)
fendouai_com
2017-09-05 17:05:02 +08:00
@shihty5 just do it!
oott123
2017-09-05 17:16:18 +08:00
Q: Can you say no?
A: No.

这句笑死了
shihty5
2017-09-05 17:17:03 +08:00
@oott123 悖论哈哈
kyleyan
2017-09-05 17:28:51 +08:00
神经聊天 [滑稽
assad
2017-09-05 17:36:33 +08:00
哈哈,认识中文不?
silencefent
2017-09-05 17:46:54 +08:00
俩神经病在聊天
Actrace
2017-09-05 19:12:40 +08:00
@silencefent 没毛病啊。
lunatic5
2017-09-05 20:35:19 +08:00
会说中文不
keysona
2017-09-05 20:45:05 +08:00
楼主,不好意思。

看成神经病聊天了...
fendouai_com
2017-09-05 22:13:40 +08:00
@lunatic5 不会,没有中文数据集,稍后会发一个中文聊天机器人。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/388363

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX