Home

Awesome

MXNET-SMN

Sequential Matching Network(ACL 2017) reimplemented by MXNET1.0-GPU//but you can always use cpu

用mxnet写的SMN,这篇文章发表在ACL 2017,使用MXNET1.0实现

<br>

What's SMN

SMN是啥?

SoTA model of multi-turn retrieval-based conversation systems.

You can see the paperSMN

Don't forget reference it if you use.

Wu, Yu, et al. "Sequential Matching Network: A New Archtechture for Multi-turn Response Selection in Retrieval-based Chatbots." ACL. 2017.

SMN是目前最屌的多轮检索对话模型.

如果你是个大佬,请去读一下这篇论文SMN,这是我这一年中读过的为数不多的好文章.

它坦诚了SMN在某些方面的失败,对于baseline也作了完整归类,总结,所以ACL的质量还是非常高的。

<br>

How to use?

你能不能告诉我怎么用?

1.get data from msradouban corpus

2.get pre-trained word2vec.model use bash python3.5 gen_w2v.py train.txt train_vec.model train_vec.vec

3.get processed data use Process.py(also only support py3)

4.run the model

1.下载数据 douban corpus

2.预训练Embedding矩阵python3.5 gen_w2v.py train.txt train_vec.model train_vec.vec

3.预处理数据使用Process.py

4.跑模型

额外赠礼:每个py文件的作用

代码作用
gen_w2v.py用来生成预训练的词向量
Process.py用来打包数据
model.py用来训练模型
<br>

Params of Model

模型的参数

batch_size = 1000(with 1 titan xp)

embedding_size = 200

gru_layer = 1

max_turn = 10

max_len = 50

lr = 0.001

警告:如果尝试修改参数,将会是一件非常痛苦的事情,因为我的代码高耦合

<br>

Why you use MXNET

为什么是MXNET?

Fast!

! 不仅是开发快,运行快,训练也快。

当你使用MXNET的时候你会有一种闪电侠在中城奔跑的错觉。 -杜存宵

<br>

Other versions?

我只会用该死的TensorFlow,怎么办?

There is Theano version.

你可以选择学习theano或者mxnet,也可以自己实现一个。

或者自杀

<br>

Your code is not pythonic!

你的代码就像shit一样

Sorry to hear that.

你可以贡献你pythonic的代码,但是不好意思,我只用了三天的边角零头来开发这个模型。

<br>

Can I use your code to do a chatbot

我能用这个东西做个聊天机器人吗

If you can use lucene then you can.

需要为每个query使用lucene检索出一个候选列表,之后进行排序

<br>

How to tipping

你真帅,我要为你生猴子

You can sent your money to this website

你可以在支付宝E公益进行打赏。

<br>

你的屁话真多

不好意思,不好意思。

TODO:

1.save model

2.add dropout

3.add evaluations

4.add inference