【问题标题】:Accurate text generation准确的文本生成
【发布时间】:2017-11-15 09:30:31
【问题描述】:

我有一个可以处理预定义消息的聊天应用。该数据库有大约 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 post。 虽然 RNN 可以在旧的基础上做出新的内容,但是新的内容是相当随机和无意义的。

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

【问题讨论】:

  • 你想完成什么?您只是想生成听起来逼真的对话,还是想让它真正提供信息?
  • 逼真的声音,因此使用起来很有趣是主要目标

标签: text machine-learning artificial-intelligence generator recurrent-neural-network


【解决方案1】:

我可能会从生成文本模型开始。有一个很好的 article 使用 Python 和 Keras(但是你也可以使用 LSTM 循环神经网络和 TensorFlow)。凭借一组良好且丰富的训练数据,该算法确实可以产生非常有趣的文本输出。正如上面文章中提到的,有一个Gutenberg 项目,您可以在其中免费找到数量惊人的免费书籍。这应该提供足够数量的训练数据。但是,由于您可能已经玩过 RNN,因此我将继续进行。

接下来是question 和可能的responses 之间的关系。这告诉我,您的对话中涉及某种语义。这意味着它不是随机的,并且生成的响应至少应该尝试“适应”一些相关的响应。像Latent Dirichlet Allocation 这样的东西可以根据数据找到适当的类别和主题,但以相反的方式 - 基于主题(问题),您需要至少以某种方式找出相关数据(响应)。也许某种方式将生成的文本分成许多部分,然后对这些部分进行矢量化并使用类似Document Distance 的算法来找到最接近的匹配? Latent Semantic Analysis 也可以派上用场,因为事实上,从单词/向量矩阵中,您需要尽可能地减少矩阵,同时仍然保持相似性。

【讨论】:

    【解决方案2】:

    我建议使用 PPDB http://www.cis.upenn.edu/~ccb/ppdb/ 重新表述您的短语以扩展您的训练数据。看看这篇论文,例如:https://www.aclweb.org/anthology/P/P16/P16-2.pdf#page=177你可以使用类似的方法来改写每个句子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2019-01-02
      • 2018-05-20
      相关资源
      最近更新 更多