2011-04-08 96 views
9

我正在搜索处理文本句子的算法信息,或者在创建在诸如英语等正常人类语言中有效的句子时遵循结构。我想知道是否有这个领域的项目可以学习或开始使用。例如,如果我给一个程序一个名词,为它提供了一个词库(用于相关词)和词性(所以它理解每个词在一个句子中的位置) - 它是否可以创建一个随机的,有效的句子?计算机AI算法写句子?

我确定有这种研究的许多子部分,所以任何导致这一点都会很好。

回答

1

写随机句并不难。任何解析器教科书的简单英语语法示例都可以反向运行以生成语法正确的无意义句子。

另一种方式是字元组随机行走,而流行的老BYTE杂志的嘲弄,或类似的东西 http://www.perlmonks.org/index.pl?node_id=94856

9

这就是所谓的NLG(自然语言生成),尽管这主要是任务生成描述一组数据的文本。还有很多关于完全随机的句子生成的研究。

一个起点是使用马尔可夫链来生成句子。如何做到这一点是你有一个转换矩阵,说明在每个词类之间转换的可能性有多大。你也有一个句子最可能的开始和结束词性。把所有这些放在一起,你就可以生成可能的部分语音。

现在,你还没有完成,这将首先不会提供一个很好的结果,因为你只考虑相邻单词(也称为双元)之间的概率,所以你想要做的是扩展这要在三个语音部分之间的转换矩阵(这会生成一个3D矩阵并给出卦)之间寻找实例。根据处理能力以及您的语料库是否可以填充此类矩阵,您可以将其扩展为4克,5克等。

最后,您需要修补对象一致(主语 - 动词 - 协议,形容词 - 动词 - 协议(尽管不是英语)等)和时态,以便一切都一致。

14

你正在寻找被称为自然语言生成,自然语言处理的一个分支 http://en.wikipedia.org/wiki/Natural_language_processing

句子生成是本场无论你想如何好句子,是很容易否则真的很难依据。目前,还没有能够针对特定名词(即使是同义词库)生成100%明智句子的程序 - 如果这就是你的意思。

另一方面,如果您会对有时不合语法的废话感到满意,那么您可以尝试使用基于n-gram的句子生成器。这些只是将单词链接在一起,有时会出现顺序,3-4克生成器有时看起来相当不错(尽管您会认为它们会产生大量垃圾邮件)。

这里有一个介绍基于n元一代的基础知识,使用NLTK: http://www.nltk.org/book/ch02.html#generating-random-text-with-bigrams

+0

第二个链接需要验证! – Skynet 2015-02-18 08:10:21

3

是。有一些工作涉及用AI技术解决NLG中的问题。据我所知,目前没有任何方法可以用于实际应用。

如果您有背景知识,我建议您熟悉来自萨尔大学的亚历山大科勒的一些作品。他介绍了如何将NLG编码到PDDL。您要阅读的主要文章是“作为计划问题产生句子”。

如果您在NLP中没有任何背景知识,只需搜索Michael Collings或Dan Jurafsky在线课程或课程材料即可。