Уведомления

Группа в Telegram: @pythonsu

#1 Май 11, 2014 19:02:24

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Алгоритм размножения текста

# -*- coding: UTF-8 -*-
import re
import random
txt = '{Копирайтер|Автор} {сделал|выполнил|закончил} {трудную|сложную|нелёгкую} работу.'
for t in re.findall('{(.*?)}', txt):
    words = t.split('|')
    txt = txt.replace(t, random.choice(words))
    txt = txt.replace('{', '')
    txt = txt.replace('}', '')
print txt.decode('utf-8')

Вопрос по алгоритму генерации статей, если список не вложенный, то все легко получается.

Не могу придумать алгоритм для следующего (вложенного случая)

{Вы {получаете|можете получить}|Можно получить} {{большое|огромное} количество|множество|много} {бонусов|плюсов}: {экономия времени, денег, нервов|экономите время, деньги, нервы}'

т.е. задача каждый раз получать новый текст.



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#2 Май 11, 2014 22:17:49

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Алгоритм размножения текста

см itertools.product https://docs.python.org/2/library/itertools.html
Для древовидных входных данных по моему мнению лучше древовидное а не строковое представление данных.
Вы это имеете ввиду?

Seq(["Вы",Or(["получаете","можете получить"]),Seq(Or(["большое","огромное"]),Or(["количество","множество","много"]))])...
Для генерации будет естественно применить рекурсию.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version