使用Python生成句子

时间:2013-02-10 23:25:01

标签: python

我需要使用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()

4 个答案:

答案 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规则。您可以尝试一下并查看代码。也许这对你有所帮助。