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

Generate Random Sentence From Grammar or Ngrams?

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

似乎有两种方法:

我的想法是否正确?一种方法优于另一种方法吗?任何提示表示赞赏。谢谢!

如果我做对了,并且目的是用你已经学过的词汇来测试你自己,那么可以采取另一种方法:

无需经历 NLG(自然语言生成)的艰苦劳动,您可以创建一个在线搜索程序,阅读新闻提要甚至简单的维基百科,并查找仅包含您定义的单词的句子。

无论如何,对于您想要的,您将不得不创建您所学单词的列表。然后,您可以为仅包含/几乎仅包含这些词的句子创建搜索算法。

真实的 句子测试自己的主要优势,而不是人为构造的句子(在许多情况下听起来可能不太正确) .

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

如果您的目的真的是制作语言学习辅助工具,则需要生成符合语法(即正确)的句子。如果是这样,不要 使用 ngram。他们随机地把单词粘在一起,你就会得到看起来很自然的有趣的废话。

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

您还没有考虑的另一个选择是使用模板方法。给自己找一堆句子,找出一些你感兴趣的词类,然后通过拟合生成变体,例如,不同的名词作为主语或宾语。这种方法更有可能在有限的时间内为您提供可用的结果。有许多 well-known bots 都遵循这个原则,而且语言教学书籍也几乎都是这样做的。