The Ubuntu Dialogue Corpus- A Large Dataset for Research in Unstructured Multi-Turn Dialogue Systems

ubuntu对话语料库

训练数据由:1,000,000个例子组成,50%positive(label1)50%negative(label0)。每个example由一个文本,这里有对话,一个表达和一个与之对应的回答,和一个negative label意味着这个表达不正确--这个negative label是从语料库中随机选取的。这里有一些数据的例子

  这个数据集有test和validations sets。从这些训练数据中的格式是不一样的。每一条记录在test/validation set 都有context,a ground truth utterace(the real respose)和9个不正确的utterances叫做distractors(干扰选项)。模型的目标是把得分最高的utterace分配给正确的utterace,和把得分地的分配给错误的utterances。
  
  有许多方式来评估我们的模型效果。一个常用的度量标准是recall@k。Recall@k意味着我们让模型从10个可能的响应(1 true 9 distractors)挑选出最好的response。如果正确那个是在我们挑选的里面那么我们将标记test example是正确的。所以,一个大的k均值让这个任务更加容易。如果我们设置k=10我们获得一个recall 100%因为我们仅仅有10个响应。
  在这个数据集里那九个干扰项是随机选择的。然而,在真实的世界你可能有成百上千的回答而且你并不知道哪个才是正确的。你不可能去评估成百上千的回答然后挑选得分最高的回答,因为那样太耗时了。Google’s Smart Reply 使用clustering技术来生成一个可能的响应集来所先选择。或者,如果你可能的答案并不是很多那你可以评估每个答案的得分然后在回答。
  http://chuansong.me/n/404973642924

代码

如果运行程序时出现如下报错:
tensorflow.python.framework.errors.InvalidArgumentError: Incompatible shapes: [80,1] vs. [160,1]
 [[Node: prediction/logistic_loss/mul = Mul[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"](prediction/Squeeze, prediction/ToFloat)]]
 [[Node: recall_at_10/ToInt64/_145 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_145_recall_at_10/ToInt64", tensor_type=DT_INT64, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
 那么解决方法:it seems to run fine after reducing batch_size and eval_batch_size in udc_hparams.py. going to close this as not an issue.

tf.flags.DEFINE_integer(“batch_size”, 64, “Batch size during training”)
tf.flags.DEFINE_integer(“eval_batch_size”, 8, “Batch size during evaluation”)
其实是显存报错,显存不够用了,把batch_size改小一些就是了。

udc_inputs

TEXT_FEATURE_SIZE = 160

models

dual_encoder

helpers

你可能感兴趣的:(The Ubuntu Dialogue Corpus- A Large Dataset for Research in Unstructured Multi-Turn Dialogue Systems)