精确的文本生成

我有一个使用预定义消息的聊天应用程序。数据库中有大约80个预定义的对话,每个对话有5个可能的回应。为了更清楚地说明,这里有一个例子:

Q: "北极熊有多重?"R1: "非常重?"R2: "重到足以打破冰层。"R3: "我不知道。这问题真傻。"R4: ...R5: ...

假设用户选择了 R3: “我不知道。这问题真傻”

那么这个回应将有5个可能的回应,例如:

R1: "为什么这问题傻?"R2: "你才傻!"R3: "啊,我现在不想和你说话了。"R4: ...R5: ...

而这些回应中的每一个也将有5个可能的回应;之后,对话将结束,必须开始新的对话。

总结一下,我有80个手动编写的对话,每个对话有5个可能的回应,深度为3层,总共10,000条消息。

我的问题: 使用机器学习自动生成更多此类对话的最准确方法是什么?

我研究了RNN:Karparthy的RNN文章。尽管RNN可以基于旧内容生成新内容,但新内容相当随机且无意义。

为了更好地理解这些对话的使用,请访问 http://getvene.com/ 并观看预览视频。


回答:

我可能会从一个生成性文本模型开始。有篇很好的文章使用了Python和Keras(你也可以使用LSTM循环神经网络与TensorFlow)。有了丰富且优质的训练数据,算法确实可以生成非常有趣的文本输出。如上文所述,有一个古腾堡项目,你可以找到大量免费的书籍。这应该能提供足够的训练数据。然而,既然你可能已经尝试过RNN,我将继续深入讨论。

接下来是问题与可能的回应之间的关系。这告诉我你的对话中涉及到一定的语义。也就是说,这不是随机的,生成的回应至少应该尝试“适合”某种相关的回应。类似于潜在Dirichlet分配,基于数据找到合适的类别和主题,但以相反的方式进行——基于主题(问题)你需要至少找到某种相关的数据(回应)。或许可以将生成的文本分成许多部分,然后将这些部分向量化,并使用类似于文档距离的算法来找到最接近的匹配?另一个可能有用的想法是潜在语义分析,因为实际上,你需要从一个词/向量矩阵中尽可能地减少矩阵,同时仍然保持相似性。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注