Text 自然语言生成-如何超越模板

Text 自然语言生成-如何超越模板,text,nlp,nlg,Text,Nlp,Nlg,我们已经建立了一个系统,可以分析一些数据,并以简单的英语输出一些结果(即没有图表等)。当前的实现依赖于大量模板和一些随机化,以便尽可能多地提供文本的多样性 我们希望切换到更高级的版本,希望生成的文本不那么重复,听起来也不那么机械。我在谷歌上搜索了很多,但我找不到具体的开始。有什么想法吗 编辑:提供给NLG机制的数据是JSON格式的。下面是一个关于web分析数据的示例。例如,json文件可能包含一个指标(例如访问量)、它在过去X天内的值、最后一个值是否为预期值以及哪些维度(例如国家或营销渠道)影响

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

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

编辑:提供给NLG机制的数据是JSON格式的。下面是一个关于web分析数据的示例。例如,json文件可能包含一个指标(例如访问量)、它在过去X天内的值、最后一个值是否为预期值以及哪些维度(例如国家或营销渠道)影响其更改

当前的实现可以提供如下内容:

在英国的总访问量(主要来自美国广播公司的电子邮件活动)达到了1万人次(+20%国防部),高于预期值10%。用户主要登陆XXX页面,而在不同设备上的增长是一致的


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

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

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

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

要从此类模型中获益,您需要满足两个标准:

  • 您应该能够将输入表示为向量
  • 您需要相对大量的输入/目标对
    你正在寻找的是一个热门的研究领域和一个相当艰巨的任务。目前还没有办法生成100%有意义的、多样的、自然的句子。生成句子的一种方法是使用n-gram。使用这些方法,您可以生成看起来更自然、更多样化的句子,这些句子可能看起来不错,但可能毫无意义,语法错误。 最新的方法是使用深度学习。无论如何,如果你想生成有意义的句子,也许你最好的方法就是使用你当前基于模板的方法。 您可以在此处找到基于n-gram的NLG的基础介绍:


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

    那么您使用的是什么样的数据,这些结果是什么样的呢?帕特里克在上面编辑了我的文章。这是一个相当广泛的问题,所以我不确定它是否适合堆栈溢出。也就是说,为什么您特别想远离模板?在保持易维护性和可测试性的同时,更多的模板是否有助于听起来更自然、增加词汇量?创建如此大量的输入/目标对实际上是不可行的。我还需要一些不太像黑匣子的东西。