从语法或Ngrams生成随机句子?

时间:2015-06-16 13:27:37

标签: python nltk n-gram sentence

我正在写一个程序,应该吐出一个我选择的复杂性的随机句子。作为一个具体的例子,我想通过吐出语法结构的有效句子并使用我已经学过的单词来帮助我的语言学习。我想用python和nltk来做这件事,虽然我对其他想法持开放态度。

似乎有几种方法:

  • 定义一个语法文件,该文件使用我所知道的语法和词典,然后从该列表中生成所有有效句子,然后选择一个随机答案。
  • 加载语料库以训练ngrams,然后可以用来构造句子。

我是否正确地考虑过这个问题?一种方法比另一种方法更受欢迎吗?任何提示都表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:2)

如果我说得对,如果目的是测试你已经学过的词汇,那么可以采取另一种方法:

您可以创建一个上网的搜索程序,阅读新闻源甚至只是维基百科,而不是经历NLG(自然语言生成)的困难劳动,并找到只有您定义的单词的句子。

在任何情况下,根据您的需要,您必须创建您学过的单词列表。然后,您可以为仅包含/几乎只包含这些单词的句子创建搜索算法。

这样做的主要优点是可以在真正的句子上进行测试,而不是人为构建的句子(在很多情况下可能听起来不太正确)。

这样的应用程序实际上对学习外语很有帮助。如果你做得很好,我相信很多人都会从中受益。

答案 1 :(得分:1)

如果您的目的是为了提供语言学习辅助,那么您需要生成语法(即正确)句子。如果是这样,使用ngrams。他们随意地将文字粘在一起,你就会得到有趣的自然胡言乱语。

你原则上可以使用语法 ,但它必须是一个非常好的,可能非常大的语法。

您尚未考虑的其他选项是使用模板方法。给自己找一堆句子,找出你感兴趣的一些词类,并通过拟合,例如,不同的名词作为主语或宾语来生成变体。这种方法更有可能在有限的时间内为您提供可用的结果。任何数量的well-known bots都可以用于这个原则,而且它也是语言教学书籍所做的。