这个问题旨在了解和学习某项技术是否存在。以下是具体情景。
我们将提供200个英语单词。软件可以添加额外的40个单词,即200个单词的20%。现在,使用这些单词,软件应该编写对话,确保对话有意义且没有语法错误。
为此,我研究了Spintax
和Article Spinning
。但你知道它们做什么,它们是基于现有文章进行重写。但这并不是解决这个问题的理想方法(如果是,请告诉我)。那么,是否有任何技术能够做到这一点?可能是谷歌使用的语义理论?有什么经过验证的人工智能方法吗?
请帮助我。
回答:
首先,需要提醒的是,这是在自然语言生成(NLG)领域的前沿研究,目前最先进的研究出版物还不足以替代人类教师。对于以英语为第二语言(ESL)的学生来说,这个问题尤其复杂,因为他们倾向于先用母语思考,然后再将知识翻译成英语。如果我们忽略这个可怕的开场白,通常的做法如下:
NLG包括三个主要组成部分:
- 内容规划
- 句子规划
- 表面实现
内容规划:这一阶段将高层次的沟通目标分解为结构化的原子目标。这些原子目标足够小,可以通过一次沟通步骤(例如在一个从句中)实现。
句子规划:在这里,实际的词素(即具有明确语义的词或词部分)被选中作为原子沟通目标的一部分。词素通过谓词-论元结构连接。句子规划阶段还决定了句子边界。(例如,学生应该写“我去了那里,但她已经走了。”还是“我去那里看她。她已经离开了。”…注意不同的句子边界和不同的词素,但两种回答都表示相同的意思。)
表面实现:在句子规划步骤中获得的半成形结构通过加入功能词(限定词、助动词等)和屈折变化,变成适当的形式。
在你的特定情景中,大多数单词已经提供,因此选择词素将相对简单。连接词素的谓词-论元结构需要通过合适的概率学习模型(例如隐马尔可夫模型)来学习。确保最终正确语法结构的表面实现,应该是语法规则和统计语言模型的结合。
在高层次上,请注意,内容规划是语言无关的(但很可能是文化依赖的),而最后两个阶段是语言依赖的。
最后,我想补充一点,我之前略过了选择40个额外单词的问题,但这与这个过程的其他部分同样重要。在我看来,这些额外单词的选择应该基于它们与给定的200个单词的共现关系。
如需进一步了解,以下两篇论文提供了很好的起点(包括流程架构、示例等):
为了更好地理解共现关系的概念,我发现Sahlgren关于分布假设的文章非常有帮助。他的工作中的分布方法也可以用来学习我之前提到的谓词-论元结构。
最后,提供一些可用的工具:请查看这个ACL的NLG系统列表。我没有使用过这些工具,但听说SPUD和OpenCCG评价不错。