我想构建一个会话模式,可以使用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)
我可以使用相同的技术预测下一句话吗?有没有关于如何做到这一点的工作示例?
答案 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附带的循环模型应该为您提供实现它们的良好起点。