【问题标题】:Natural Language Generation - how to go beyond templates自然语言生成——如何超越模板
【发布时间】:2017-05-24 13:35:32
【问题描述】:

我们已经构建了一个系统,可以分析一些数据并以简单的英语输出一些结果(即没有图表等)。当前的实现依赖于大量模板和一些随机化,以便为文本提供尽可能多的多样性。

我们希望切换到更高级的内容,希望生成的文本不那么重复,听起来不那么机械。我在谷歌上搜索了很多,但我找不到具体的开始。有什么想法吗?

编辑:提供给 NLG 机制的数据采用 JSON 格式。这是一个关于网络分析数据的例子。 json 文件可能包含例如一个指标(例如访问量)、它在过去 X 天内的值、最后一个值是否是预期的以及哪些维度(例如国家或营销渠道)影响了它的变化。

当前的实现可能是这样的:

主要来自 ABC 电子邮件活动的英国总访问量达到 10K(+20% DoD),比预期值高 10%。用户主要登陆 XXX 页面,而不同设备的增长是一致的。

我们正在寻找一种方法来减少对模板的依赖,听起来更自然并增加词汇量。

【问题讨论】:

  • 那么您使用的是哪种数据,这些结果是什么样的?你是想要更自然的句子,还是只是想用词汇来混合事物?
  • @patrick 编辑了我上面的帖子
  • 这是一个相当广泛的问题,所以我不确定它是否适合 Stack Overflow。也就是说,为什么您特别想摆脱模板?更多的模板不是有助于听起来更自然,增加词汇量,同时保持易于维护和可测试性吗?

标签: text nlp nlg


【解决方案1】:

您正在寻找的是一个热门的研究领域和一项相当艰巨的任务。目前还没有办法生成 100% 有意义的多样化和自然的句子。生成句子的一种方法是使用 n-gram。使用这些方法,您可以生成看起来更自然和多样化的句子,这些句子可能看起来不错,但可能毫无意义且语法不正确。 一种更新的方法是使用深度学习。无论如何,如果你想生成有意义的句子,也许你最好的方法是使用你当前的基于模板的方法。 您可以在此处找到有关基于 n-gram 的 NLG 基础知识的介绍: Generating Random Text with Bigrams

这个工具听起来可以实现一些最著名的自然语言生成技术:simplenlg

【讨论】:

    【解决方案2】:

    您是否尝试过神经网络,尤其是 LSTM 和 GRU 架构?这些模型是预测单词序列的最新进展。生成自然语言意味着生成一个单词序列,使其对输入和序列中的较早单词有意义。这相当于预测时间序列。 LSTM 专为预测时间序列而设计。因此,它通常用于在给定输入序列、输入单词或任何其他可以嵌入向量中的输入的情况下预测单词序列。

    Tensorflow、Keras 和 Torch 等深度学习库都具有序列到序列的实现,可用于通过预测给定输入的单词序列来生成自然语言。

    请注意,通常这些模型需要大量的训练数据。

    您需要满足两个条件才能从此类模型中受益:

    1. 您应该能够将输入表示为向量。
    2. 您需要相对大量的输入/目标对。

    【讨论】:

    • 创建如此大量的输入/目标对实际上是不可行的。我还需要一些不那么黑匣子的东西。
    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    相关资源
    最近更新 更多