计算机AI算法写句子?

Xeo*_*oss 13 parsing nlp artificial-intelligence

我正在搜索有关处理文本句子的算法的信息,或者在创建在普通人类语言(例如英语)中有效的句子时遵循结构.我想知道是否有项目在这个领域工作,我可以学习或开始使用.

例如,如果我给一个程序一个名词,提供一个词库(用于相关词)和词性(因此它理解每个词属于一个句子的位置) - 它可以创建一个随机的,有效的句子吗?

我确信这种研究有很多子部分,所以任何引导都会很好.

sil*_*asm 17

您正在寻找的领域称为自然语言生成,自然语言处理的子领域 http://en.wikipedia.org/wiki/Natural_language_processing

根据你想要的句子有多好,句子生成要么真的很容易,要么真的很难.目前,没有程序可以生成关于给定名词的100%合理句子(即使是同义词库) - 如果这就是你的意思.

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

以下是使用NLTK的基于n-gram的生成基础的介绍:http://www.nltk.org/book/ch02.html#generating-random-text-with-bigrams


Gus*_*son 10

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

一个起点是使用马尔可夫链来生成句子.如何做到这一点就是你有一个转换矩阵,说明在每个词性之间转换的可能性.您也最有可能开始和结束一个句子的词性.把这些放在一起,你就可以生成可能的词性序列.

现在,你还远未完成,这首先不会提供非常好的结果,因为你只考虑相邻单词之间的概率(也称为二元组),所以你想要做的就是扩展它来寻找在三个词性之间的转换矩阵中的实例(这使得3D矩阵并为您提供三元组).你可以将其扩展到4克,5克等,具体取决于处理能力,如果你的语料库可以填充这样的矩阵.

最后,你需要修补诸如对象协议(主语 - 动词 - 协议,形容词 - 动词 - 协议(不是英文)等)和紧张的内容,以便一切都是一致的.


fch*_*che 2

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

另一种方法是 word-tuple-random-walk,由旧的 BYTE 杂志 TRAVESTY 或 http://www.perlmonks.org/index.pl?node_id=94856之类的东西而流行