使用TensorFlow构建会话模型

时间:2016-02-12 15:21:58

标签: tensorflow

我想构建一个会话模式,可以使用TensorFlow LSTM使用之前的句子预测句子。 TensorFlow教程中提供的示例可用于预测句子中的下一个单词。

https://www.tensorflow.org/versions/v0.6.0/tutorials/recurrent/index.html

lstm = rnn_cell.BasicLSTMCell(lstm_size)
# Initial state of the LSTM memory.
state = tf.zeros([batch_size, lstm.state_size])

loss = 0.0
for current_batch_of_words in words_in_dataset:
    # The value of state is updated after processing each batch of words.
    output, state = lstm(current_batch_of_words, state)

    # The LSTM output can be used to make next word predictions
    logits = tf.matmul(output, softmax_w) + softmax_b
    probabilities = tf.nn.softmax(logits)
    loss += loss_function(probabilities, target_words)

我可以使用相同的技术预测下一句话吗?有没有关于如何做到这一点的工作示例?

2 个答案:

答案 0 :(得分:2)

您想使用Sequence-to-sequence模型。不是让它学会将句子从源语言翻译成目标语言,而是让它学习对话中先前话语的回应。

您可以使用源语言'英语'的类比来调整张量流中的示例seq2seq模型。是你以前的句子和目标语言'法语'是你的回答句子。

理论上,您可以通过将训练样例与特殊符号连接起来,使用您正在查看的基本LSTM:

hello there ! __RESPONSE hi , how can i help ?

然后在测试期间,使用一个序列向前运行它,包括__RESPONSE符号,LSTM可以在剩下的时间内执行它。

然而,上面的seq2seq模型应该更准确和更强大,因为它有一个单独的编码器/解码器,并包括注意机制。

答案 1 :(得分:1)

句子由单词组成,因此您可以通过按顺序预测单词来预测下一句。有些模型,例如this论文中描述的模型,可以为整个段落构建嵌入,这对您的目的非常有用。当然,有Neural Conversational Model项工作可能直接满足您的需求。 TensorFlow没有提供这些模型的工作示例,但TensorFlow附带的循环模型应该为您提供实现它们的良好起点。