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

时间:2017-05-24 13:35:33

标签: text nlp nlg

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

我们希望切换到更高级的东西,希望生成的文本重复性更低,听起来更少机器人。我在谷歌上搜索了很多但我找不到具体的东西。有什么想法吗?

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

目前的实施可能会有这样的结论:

  

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

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

您需要满足两个标准才能从这些模型中受益:

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