conversation tensorflow
1.0.0
对话模型的 TensorFlow 实现。
模型
seq2seq_attention
:带有注意力解码器的 Seq2Seq 模型数据集
由 hb-base 发起项目
.
├── config # Config files (.yml, .json) using with hb-config
├── data/ # dataset path
├── scripts # download dataset using shell scripts
├── seq2seq_attention # seq2seq_attention architecture graphs (from input to logits)
├── __init__.py # Graph
├── encoder.py # Encoder
├── decoder.py # Decoder
├── data_loader.py # raw_date -> precossed_data -> generate_batch (using Dataset)
├── hook.py # training or test hook feature (eg. print_variables)
├── main.py # define experiment_fn
└── model.py # define EstimatorSpec
参考:hb-config、数据集、experiments_fn、EstimatorSpec
可以控制所有实验环境。
示例:cornell-movie-dialogs.yml
data :
base_path : ' data/cornell_movie_dialogs_corpus/ '
conversation_fname : ' movie_conversations.txt '
line_fname : ' movie_lines.txt '
processed_path : ' processed_cornell_movie_dialogs_data '
word_threshold : 2
max_seq_length : 200
sentence_diff : 0.33 # (Filtering with input and output sentence diff)
testset_size : 25000
PAD_ID : 0
UNK_ID : 1
START_ID : 2
EOS_ID : 3
model :
batch_size : 32
num_layers : 4
num_units : 512
embed_dim : 256
embed_share : true # (true or false)
cell_type : gru # (lstm, gru, layer_norm_lstm, nas)
dropout : 0.2
encoder_type : bi # (uni / bi)
attention_mechanism : normed_bahdanau # (bahdanau, normed_bahdanau, luong, scaled_luong)
train :
learning_rate : 0.001
sampling_probability : 0.25 # (Scheduled Sampling)
train_steps : 100000
model_dir : ' logs/cornell_movie_dialogs '
save_checkpoints_steps : 1000
loss_hook_n_iter : 1000
check_hook_n_iter : 1000
min_eval_frequency : 1000
print_verbose : True
debug : False
predict :
beam_width : 5 # (0: GreedyEmbeddingHelper, 1>=: BeamSearchDecoder)
length_penalty_weight : 1.0
slack :
webhook_url : " " # after training notify you using slack-webhook
安装要求。
pip install -r requirements.txt
首先,检查模型是否有效。
python main.py --config check_tiny --mode train
然后,下载 Cornell_Movie-Dialogs_Corpus 并对其进行训练。
sh scripts/prepare_Cornell_Movie-Dialogs_Corpus.sh
python data_loader --config cornell-movie-dialogs # pre-processing data
python main.py --config cornell-movie-dialogs --mode train_and_evaluate
✅:工作
◽:尚未测试。
evaluate
:根据评估数据进行评估。extend_train_hooks
:扩展训练钩子。reset_export_strategies
:使用 new_export_strategies 重置导出策略。run_std_server
:启动 TensorFlow 服务器并加入服务线程。test
:测试单个步骤的训练、评估和导出估计器。train
:使用训练数据拟合估计器。train_and_evaluate
:交叉训练和评估。训练结束后,开始聊天。
python chat.py --config cornell-movie-dialogs
tensorboard --logdir logs
>(人类)
> hi.
i ' m sorry . <s>
> why?
i ' m not interested .
> hmm.. are you human?
nnnnn . <s>
> you are you?
i ' m not going to marry you . <s>
> what? me also!
i ' m sorry . <s>
> anyway, what is your name?
i ' m not going to kill you . <s>
> i'm asking your name.
i ' m sorry . <s>
> yeah, so.. where are you from?
i ' m not sure . <s>
> Have you lost your memory?
i ' m not sure i ' m not going to you . <s>
> Have you ever been to Florida?
i ' m not sure i ' m not a little . <s>
> there there.
no , no , no , no ,
> Are you alright?
i ' m not going to die . <s>
> alsoulutely, you are very healthy.
i don ' t know . <s>
> you know that? you are robot.
i ' m not sure . <s>
> i don ' t know what to say.
i ' m not sure i ' m not a little stupid . <s>
> what do you like to do in your free time?
i ' m not sure i ' m not gonna take you a little more . <s>
> are you in love?
i ' m not sure i ' m not stupid . <s>
> i know.
i ' m not going to let you
> what's your name?
i ' m not sure i ' m not a good guy . <s>
> oh god..
i ' m not going to do that . <s>
> let's talk about something else.
i ' m not sure . <s>
> i have to figure out what is the problem.
i ' m not sure . <s>
> because of you are stupid.
i ' m not going to get you . <s>
> florida?
he is a homosexual - -
> really?
i ' m not sure i
> can you tell me about more detail about him?
i ' m not a cop . <s>
> okay.
i ' m not going to
> you always say 'i....'
i ' m not sure i ' m not a murderer . <s>
> hmm.....
i ' m not sure i ' m not a little popular . <s>
> you are not popular.
i ' m not sure i ' m not a girl .
> are you boy?
i ' m not sure . <s>
> are you girl?
i ' m not sure . <s>
> who are you?
i ' m sorry . <s>
> i'm sorry.
i ' m not crowding . <s>
> just kidding.
i ' m going to be a writer
> great!
i don ' t know .
> what do you mean?
i ' m sorry , i ' m sorry . <s>
> omg
no . <s>
> florida.
he hasn ' t got any
> music is my life.
you ' re a fool , you ' re a man !
> wow!
i ' m not kidding .
> sorry.
i ' m not kidding .
> yeah, i know it.
i ' m not sure . <s>
> california?
what ? <s>
> haha.
it ' s a real competition
李东俊 ( [email protected] )