python随机生成中文句子_关于python:从语法或Ngrams生成随机句子?

我正在编写一个程序,该程序应该吐出一个我自己选择的复杂性的随机句子。 举一个具体的例子,我想通过吐出语法结构的有效句子并使用我已经学习过的单词来帮助我的语言学习。 尽管我愿意接受其他想法,但我想使用python和nltk做到这一点。

似乎有两种方法:

定义一个使用我所知道的语法和词典的语法文件,然后从该列表中生成所有有效的句子,然后选择一个随机答案。

加载语料库以训练ngram,然后可以将其用于构建句子。

我在想这个吗? 一种方法优于另一种方法吗? 任何提示表示赞赏。 谢谢!

参见icml-2011.org/papers/524_icmlpaper.pdf和fit.vutbr.cz/~imikolov/rnnlm

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

您无需创建繁琐的NLG(自然语言生成)工作,而是可以创建一个在线搜索程序,阅读新闻摘要甚至是Wikipedia,并仅查找带有您定义的单词的句子。

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

与人工构造的句子相比,这将具有在真实句子上测试自己的主要优势(在某些情况下听起来可能不太正确)。

这样的应用程序实际上对于学习外语有很大的帮助。如果您做得不错,我相信很多人将从中受益。

我还想对语法结构进行自我测试。在这种情况下,语言(在这种情况下为普通话)提出了一个特殊的问题,因为通常会将单词浪漫化为拼音,以使其更易于理解。爬网很难,因为真正的中文文本是用汉字写的。我也怀疑我是否可以轻松找到具有我可以说的非常简单结构的句子,尽管这可能是可能的。感谢您的提示!

正如您所说,从拼音音译开始,是不可能的-因为如此多的汉字可以对应一个带有给定重音的拼音音节。但是,搜索带有给定汉字的句子实际上比使用其他语言更容易,因为中文没有复数,也没有动词变位。如果您正在学习普通话,您将面临许多挑战,但是语法不是其中之一:)

再次感谢您的回复。普通话语法简单,这就是为什么我要制作这个程序的原因。我不应该说我想练习语法-我真正想要的是对所有存在的语法结构进行反复的口语练习,因此我正确地使用了它们。在德语中,我注意到我不使用完整的语言,而是使用经过尝试的真实短语和语法结构。我认为可以通过强迫自己说更多的句子来改善我正在学习的其他语言,例如:[主题] [Time1] [Time1] [Time2] [Place] [Verb] [Bu] [Verb] [Object]。

(空间不足),而不是依靠我自己来提出结构,这种结构通常最终会变成英语,在该结构中我不会选择动词的" yao bu yao"形式,但会说[Subject] [verb ] [Object](如果有道理)。

如果您的目的确实是帮助学习语言,则需要生成语法(即正确的)句子。如果是这样,请不要使用ngram。他们随意地把单词粘在一起,而您却变得很有趣,看起来很自然。

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

您尚未考虑的另一种选择是使用模板方法。给自己弄一堆句子,确定您感兴趣的某些单词类别,并通过将例如不同的名词作为主语或宾语来生成变体。这种方法更有可能在有限的时间内为您提供可用的结果。有许多著名的bot都在遵循这一原理,并且这几乎也是语言教学书籍所要做的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值