我有一个聊天应用程序,可以处理预定义的信息。数据库有大约80个预定义的对话,每个会话有5个可能的响应。为了澄清,这里有一个例子:
Q: "How heavy is a polar bear?"
R1: "Very heavy?"
R2: "Heavy enough to break the ice."
R3: "I don't know. Silly question."
R4: ...
R5: ...假设用户选择R3:“我不知道,愚蠢的问题”
然后,该答复将有5种可能的答复,例如:
R1: "Why is that silly?"
R2: "You're silly!"
R3: "Ugh. I'm done talking to you now."
R4: ...
R5: ...这些回复中的每一个都会有5种可能的回应,之后,对话就会结束,而新的一种将不得不开始。
综上所述,我有80次手工书写的对话,每一次都有5种可能的回应,3层深度= 10,000条消息。
我的问题:,使用机器学习自动生成更多对话的最准确的方法是什么?
我研究了RNN:Karparthy's RNN哨所。虽然RNN可以在旧的基础上生成新的内容,但是新的内容是随机的,没有意义的。
为了更好地理解这些对话的使用,请访问http://getvene.com/并观看预览视频。
发布于 2017-06-16 08:31:14
我可能会从一个生成性的文本模型开始。有一个很好的文章,它使用Python (不过,您可以使用LSTM递归神经网络,也可以使用TensorFlow)。有了一组良好而丰富的训练数据,该算法确实可以产生非常有趣的文本输出。正如上面的文章所提到的,有一个古腾堡项目,您可以在该项目中免费找到数量可观的免费书籍。这应能提供足够的培训数据。然而,由于您可能已经玩过RNN,我将继续前进。
接下来是question和可能的responses之间的关系。这告诉我,在你的谈话中有一定的语义学。这意味着它不是随机的,生成的响应至少应该尝试“融入”到一些相关的响应中。像潜Dirichlet分配这样的东西,可以根据数据找到合适的类别和主题,但是以相反的方式--基于主题(问题)--你需要找到至少在某种程度上相关的数据(响应)。也许是某种将生成的文本分割成多个部分的方法,然后将这些部分向量化,并使用类似于文件距离算法的方法来找到紧密匹配?潜在语义分析也可以派上用场,因为实际上,从一个词/向量矩阵中,您需要尽可能地减少矩阵,同时保持相似之处。
发布于 2017-06-20 02:39:10
我建议使用PPDB http://www.cis.upenn.edu/~ccb/ppdb/来调整短语以扩展您的培训数据。查看本文,例如:https://www.aclweb.org/anthology/P/P16/P16-2.pdf#page=177,您可以使用类似的方法对每个句子进行重排。
https://stackoverflow.com/questions/44524279
复制相似问题