Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 12, 2012 00:06:13

BG
Зарегистрирован: 2012-11-12
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Выбор и составление предложений

Друзья, такой вопрос. Есть куча функций

import random


def noun():
nouns = [u'squirrel', u'chipmunk', u'elephant', u'mushroom', u'banana', u'book']
return random.choice(nouns)

def adverb():
nouns = [u'aggressively', u'loudly', u'slowly', u'proudly', u'dangerously']
return random.choice(nouns)

def intensifier(adv):
intensifiers = [u'quite', u'rather', u'very', u'enough']
random_intensifier = random.choice(intensifiers)
if random_intensifier == 'enough':
result = adv + u' ' + random_intensifier
else:
result = random_intensifier + u' ' + adv
return result

def adjective(word):
adjectives = [u'big', u'little', u'brown', u'red', u'yellow', u'nasty', u'wonderful', u'fascinating', u'ordinary']
return random.choice(adjectives) + u' ' + word

def verb_of_thought(subj):
verbs = [u'thinks', u'knows', u'is convinced', u'believes']
return subj + u' ' + random.choice(verbs)

def verb_transitive(subj, obj):
verbs = [u'eat', u'throw', u'frighten', u'drink', u'kill', u'launch']
return subj + u' ' + random.choice(verbs) + u' ' + obj

def random_sentence():
sentence = verb_of_thought(adjective(noun())) +\
u' that ' + verb_transitive(adjective(noun() + u's'), noun() + u's') +\
u' ' + intensifier(adverb()) + u'.'

return sentence


print random_sentence()
они складывают какую-то чепуху, но вот генерируют предложение. Собственно, вопрос. Как написать туда еще одну функцию, чтобы программа умела бы строить разные типы предложений. То есть в самой первой функции, которая определяет структуру предложения, будет задано несколько структур, одна из которых выбирается случайным образом. Это могут быть сложносочинённое, сложноподчинённое и простое предложения, а могут быть просто несколько сложноподчинённых, но разных (скажем, одно из подлежащего с двумя определениями и союзом “что”, а другое – с двумя однородными подлежащими и союзом “потому что”, как-нибудь так).

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version