我需要使用python生成句子。我有一些我需要完整的话,但无法弄清楚如何制作它所以只有正确的句子在我运行之后出来。
这是我的代码
import random
def S():
print DP(), VP()
def DP():
detPhrase = D() + ' ' + N()
return detPhrase
def VP():
randInt = random.randint(0,1)
if randInt == 0:
return V()
else:
return V() + ' ' + DP()
def N():
nouns = ['cat', 'dog', 'Bella']
randInt = random.randint(0,len(nouns)-1)
return nouns[randInt]
def D():
articles = ['the', 'to']
randInt = random.randint(0,len(articles)-1)
return articles[randInt]
def V():
verbs = ['ran','kissed','gave']
randInt = random.randint(0,len(verbs)-1)
return verbs[randInt]
for num in range(30):
S()
答案 0 :(得分:2)
答案 1 :(得分:1)
大约6个月前,我记得旧的racter程序,并拼凑了一个Python变体。它可能比实际的句子生成更接近MadLib。我将它打包为Utility Mill的在线工具:http://utilitymill.com/utility/Graduation_speech
答案 2 :(得分:1)
您可以通过正确识别词性来做出重大改进:“to”是介词,而不是文章。
articles = ['the', 'a']
这不是莎士比亚,但至少我们在球场:
a dog kissed the dog
a dog kissed the dog
the cat kissed
a cat kissed
a cat gave the dog
a dog kissed the cat
the dog gave
a dog kissed the dog
答案 3 :(得分:0)
在圣诞假期我写了hornet,这是一个类似Prolog的嵌入式DSL在Python 3.3中。它不是很好 - 仅仅是一个概念证明 - 并且没有文档可以说,但文件 parsing.py 包含简单德语句子的DCG规则。您可以尝试一下并查看代码。也许这对你有所帮助。