Mas*_* Po 3 java nlg simplenlg
我正在尝试在 NLG 的帮助下生成产品描述。例如,如果我指定产品的属性(例如手机),例如其操作系统、RAM、处理器、显示器、电池等,它应该向我输出手机的可读描述。我看到有一些付费服务(Quill、Wordsmith 等)也是如此。然后我遇到了 NLG 的开源 Java API - simplenlg。我看到如何通过指定句子短语和特征(如时态、询问等)来创建句子,但没有看到从文本创建描述的选项。
有谁知道如何使用 simplenlg 从单词创建文本描述?
是否有其他工具/框架/API 可用于完成此任务(不限于 Java)?
小智 8
SimpleNLG 主要是一个Surface Realizer。它需要格式良好的输入,但随后可以执行诸如更改句子时态之类的任务。可以在上面的链接中找到实现者可以执行的任务类型的说明。
生成像您描述的那样的句子需要额外的组件来处理文档规划和微观规划。这些组件之间的确切界限是模糊的,但从广义上讲,您将在文档计划中定义您想说的内容,然后让微计划员执行诸如引用表达生成之类的任务(选择是否说“它”而不是“手机”) ') 和聚合,即句子的合并。SimpleNLG 对聚合有一些支持。
还值得注意的是,这个 3 阶段过程不是执行 NLG 的唯一方法,它只是一种常见的方法。
我知道没有什么神奇的解决方案可以从随机域中获取一些信息并生成可读且有意义的文本。在您的手机示例中,将描述链接在一起并形成以下内容将是微不足道的:
iPhone 7 配备 iOS11、2GB RAM、1960 mA·h 锂离子电池,32GB 型号零售价为 649 美元。
但这只是您数据中的简单字符串连接或插值。它没有考虑细微差别,例如是否更好地说:
iPhone 7运行iOS11,具有2GB 内存并由1960 mA·h 锂离子电池供电。 它花费$ 649的零售价为32GB的模型。
在第二个例子中,我调整了动词(因此也调整了名词短语),使用了“it”的指称表达,并将我们的长句一分为二(由于拆分,还有一些进一步的变化)。进行这些更改需要了解单词及其在域内的用法(因此需要了解计算规则)。它很快变得非常重要。
如果您的要求很简单,比如一部手机的 5 或 6 条信息,那么没有 NLG 软件,您可能会做得很好,只需创建某种模板并确保所有数据在插入时都有意义。然而,一旦你超越了手机,描述了汽车,你就需要为新领域再次做所有这些工作。
值得一看Ehud Reiter 的博客(SimpleNLG 的最初作者)。还有一些论文,例如 Albert Gatt(自然语言生成现状调查:核心任务、应用和评估),尽管如果您只是涉足一点编程,后者有点密集,但它确实提供了NLG 是什么,它可以做什么以及它当前的局限性是什么。
| 归档时间: |
|
| 查看次数: |
2672 次 |
| 最近记录: |