Seq2Seq Chatbot 聊天机器人:基于Torch的一个Demo搭建 手札

系列目录:
Seq2Seq Chatbot 聊天机器人:基于Torch的一个Demo搭建 手札
深度学习(BOT方向) 学习笔记(1) Sequence2Sequence 学习
深度学习(BOT方向) 学习笔记(2) RNN Encoder-Decoder 及 LSTM 学习

说明

@MebiuW
之前在微博爱可可那里看见一个用Seq2Seq做的聊天机器人,正好下来跑一下代码研究研究。。所以有了这篇手札

这篇手札相对完整,即便你环境没什么也能跑

特别说明:我不用Torch了,代码也不是我的,仅仅只是记录,如果有问题也不用问我,我不了解了,我随后应该会来一个基于Tensorflow的,大家请期待吧。。这个有问题,问了我也真的不知道。。sorry,不用留言或者微博私信了

Torch安装

安装Torch,安装官方的说法,使用git克隆代码后进行安装。
默认安装在了主目录的torch文件下,大家可以根据自己的需求进行更改,安装需要联网下载依赖,还是需要耐心等待下的。

git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch; bash install-deps;
./install.sh

安装完成后,需要将torch添加进入自己的bash目录,挑选下面一个命令执行就好

# 如果使用Linux和Bash执行这个
source ~/.bashrc
# 如果是Linux和Zsh
source ~/.zshrc
# ****然后再执行这个
source ~/.profile

如果安装成功,那么在命令行终端输入

th

就可以看到如下的界面,也就证明已经下载成功
Seq2Seq Chatbot 聊天机器人:基于Torch的一个Demo搭建 手札_第1张图片

安装依赖和语料

注意这里直接使用了torch的安装地址,如果你之前安装的地址不一样,那么记得修改一下luarocks前面的地址

sudo ~/torch/install/bin/luarocks install nn
sudo ~/torch/install/bin/luarocks install rnn
sudo ~/torch/install/bin/luarocks install async

接下来克隆源代码和语料,注意自己提前选择好目录

git clone --recursive https://github.com/rustcbf/chatbot-zh-torch7 #代码
git clone --recursive https://github.com/rustcbf/dgk_lost_conv #语料
git clone --recursive https://github.com/chenb67/neuralconvo #以上两个在此源码进行改进,可作为参考

同时根据我运行源代码,有一些python依赖是之前的人没有写到的,可能需要执行如下的代码:

sudo pip install --upgrade chardet

运行

在语料dgk那个目录,将语料解压缩

unzip dgk_shooter_min.conv.zip 

然后进入到代码目录(chatbot-zh-torch7)
修改如下的文件

 vi cornell_movie_dialogs.lua

将第18行 xx.conv那个地址,改成刚刚解压的那个conv地址,这个是语料
然后还是在代码那个目录运行

th train.lua

然后就会开始运行了
这里写图片描述

我使用虚拟机跑的,还是要等一下的,有一次跑了8分钟提示内存不足(1.8G),然后加到3GB去跑了也失败了,然后就换了一个物理机(这个就高配了 64G内存)重新配置了一下,也是提示内存不足就挂了。。我惊呆了。

所以请用如下的参数训练(如果你只是用CPU 做一个Demo):

th train.lua --dataset 20000 --hiddenSize 100 &

训练一共30轮,耗时非常长,我给的那个参数应该1个小时多能跑完,如果是按照原文的参数,我这里要400个小时附近(50000 dataset 1000 hiddensize)

Seq2Seq Chatbot 聊天机器人:基于Torch的一个Demo搭建 手札_第2张图片

运行

首先验证是否成功

th eval.lua

如果没有什么提示,那么就是成功了,那么接下来我们来看下运行效果

修改eval.lua 在末尾增加如下的代码

print("\nType a sentence and hit enter to submit.")
print("CTRL+C then enter to quit.\n")
while true do
  io.write("you> ")
  io.flush()
  io.write(say(io.read()))
end

然后运行这个文件就可以
Seq2Seq Chatbot 聊天机器人:基于Torch的一个Demo搭建 手札_第3张图片

因为我的训练参数给的很少,只是为了看一个Demo,所以比较傻。。。有条件的人可以用cuda加速看看,看看完整训练出来是什么样子?

结语

特别说明:我不用Torch了,代码也不是我的,仅仅只是记录,如果有问题也不用问我,我不了解了,我随后应该会来一个基于Tensorflow的,大家请期待吧。。这个有问题,问了我也真的不知道。。sorry,不用留言或者微博私信了

附录

1、本文主要参考的教程:Mac Neural Conversational Model 自动聊天机器人实验
2、安装主要参考文档:Torch 官网文档

你可能感兴趣的:(机器学习,技术手札,NLP)