5

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

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

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

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

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

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

4

2 回答 2

2

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

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

于 2017-06-05T10:04:27.703 回答
1

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

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

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

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

  1. 您应该能够将输入表示为向量。
  2. 您需要相对大量的输入/目标对。
于 2017-05-31T15:45:48.237 回答