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



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

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

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

当前的实现可以给出这样的结果:

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

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

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

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

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

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

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

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

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

最新更新