Prg67.ru

Онлайн вебинары
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Составитель текстов онлайн

Простейший генератор креативного текста

Наста­ло вре­мя кру­тых про­ек­тов!

Пред­ставь­те, что вы запус­ка­е­те рас­сыл­ку в круп­ной ком­па­нии, полу­чи­ли уже за это мно­го денег и вам хочет­ся как-то её раз­но­об­ра­зить. И вы реша­е­те сде­лать так, что­бы чело­ве­ку в ответ при­хо­ди­ло письмо-благодарность. Но не одно пись­мо на всех, а несколь­ко раз­ных, чем боль­ше — тем луч­ше.

Мож­но их все напи­сать вруч­ную и потра­тить на это несколь­ко дней. А мож­но напи­сать код, кото­рый сам напи­шет все эти пись­ма. Мы все­гда выби­ра­ем вто­рой путь, даже если это не нуж­но, поэто­му сего­дня мы запро­грам­ми­ру­ем гене­ра­тор тек­ста на JavaScript.

Сра­зу ого­во­рим­ся: вам может пока­зать­ся, что этот гене­ра­тор пло­хо рабо­та­ет и выда­ёт дурац­кие тек­сты. Всё дело в том, что в этом алго­рит­ме важ­но преду­смот­реть все вари­ан­ты состав­ле­ния струк­ту­ры тек­ста и самих пред­ло­же­ний, а потом про­ве­рить, как это всё согла­со­вы­ва­ет­ся меж­ду собой. Чем длин­нее и «живее» нужен текст, тем боль­ше вари­ан­тов под­ста­нов­ки слов нуж­но преду­смот­реть.

Алго­ритм рабо­ты гене­ра­то­ра тек­ста будет такой:

  1. Гото­вим HTML-страницу, где это всё будет рабо­тать и запус­кать­ся.
  2. Зада­ём струк­ту­ру тек­ста на уровне абза­цев: при­вет­ствие, само пись­мо, заклю­че­ние.
  3. Пишем шаб­ло­ны для каж­до­го из этих эле­мен­тов.
  4. Слу­чай­ным обра­зом выби­ра­ем, каким тоном будем общать­ся — офи­ци­аль­ным или нет.
  5. Соби­ра­ем всё пись­мо в одно целое.
  6. Заме­ня­ем шаб­лон­ные сло­ва на нуж­ные фра­зы и сло­во­со­че­та­ния.
  7. Пока­зы­ва­ем резуль­тат.

Делаем HTML-страницу

Берём за осно­ву стан­дарт­ный шаб­лон и добав­ля­ем в него:

  • jQuery, что­бы обра­щать­ся к эле­мен­там стра­ни­цы по име­ни;
  • файл скрип­та mail.js, в кото­ром будет про­ис­хо­дить вся магия JS-кода;
  • сти­ли для эле­мен­тов стра­ни­цы, что­бы она выгля­де­ла опрят­но;
  • блок, куда будем выво­дить гото­вое пись­мо;
  • кноп­ку, кото­рая по нажа­тию будет гене­ри­ро­вать новый текст.

Всё это мы уже уме­ем делать, поэто­му про­сто соби­ра­ем код:

Читать еще:  Проверить фразу на ошибки онлайн

Готовим структуру письма и шаблоны для текста

Теперь нам пона­до­бит­ся отдель­ный файл для скрип­та, кото­рый и будет отве­чать за гене­ра­цию писем — mail.js. Созда­ём его в той же пап­ке, что и HTML-документ, и начи­на­ем про­грам­ми­ро­вать.

Смысл наше­го алго­рит­ма в том, что мы зара­нее опре­де­ля­ем бло­ки тек­ста и поря­док фраз, но слу­чай­ным обра­зом выби­ра­ем, что же будет под­став­лять­ся на место этих бло­ков.

Для это­го мы будем исполь­зо­вать шаб­лон­ные сло­ва, у кото­рых с обе­их сто­рон сто­ят зна­ки дол­ла­ра, напри­мер, $somebody$ . Эти шаб­лон­ные сло­ва будут озна­чать для наше­го алго­рит­ма, что на их месте появит­ся какое-то кон­крет­ное сло­во или целое пред­ло­же­ние. Это мы сами реши­ли, что шаб­ло­ны будут рабо­тать со зна­ка­ми дол­ла­ра — мож­но было выбрать и дру­гие зна­ки.

При­мер: зада­дим по шаб­ло­ну пред­ло­же­ние « Я $love$ $you$ ». Что­бы полу­чи­лась осмыс­лен­ная фра­за, мы долж­ны задать зна­че­ния для обо­их шаб­лон­ных слов. Сде­ла­ем это так:

  • пусть $love$ при­ни­ма­ет зна­че­ния «тебя», «вас», «нас», «их», «всех»;
  • пусть $you$ при­ни­ма­ет зна­че­ния «люб­лю», «нена­ви­жу», «не люб­лю», «рад видеть».

Если мы попро­сим алго­ритм слу­чай­но заме­нить шаб­лон­ные сло­ва на кон­крет­ные зна­че­ния из спис­ка, то можем полу­чить такие пред­ло­же­ния:

  • Я их люб­лю.
  • Я тебя нена­ви­жу.
  • Я вас не люб­лю.
  • Я всех люб­лю.
  • Я нас рад видеть.

Смот­ри­те, боль­шин­ство пред­ло­же­ний зву­чит нор­маль­но, а послед­нее — не очень. Это не зна­чит, что алго­ритм пло­хой, про­сто мы, когда под­би­ра­ли сло­ва, не слиш­ком поду­ма­ли над их соче­та­ни­ем. Поэто­му основ­ная про­бле­ма таких алго­рит­мов — руч­ная про­вер­ка и согла­со­ва­ние всех слов и кон­струк­ций, кото­рые исполь­зу­ют­ся для под­ста­нов­ки. Чем боль­ше вре­ме­ни это­му посвя­тить, тем более осмыс­лен­ные тек­сты полу­чат­ся у алго­рит­ма.

Что­бы тек­сты полу­ча­лись раз­но­об­раз­ны­ми, мож­но сде­лать так, что­бы шаб­лон выби­рал­ся в зави­си­мо­сти от какой-то пере­мен­ной. Имен­но так мы сде­ла­ем выбор инто­на­ции пись­ма, офи­ци­аль­ную или нефор­маль­ную.

Читать еще:  Голосование онлайн создать

Начало

Вот код, с кото­ро­го начи­на­ет­ся наш скрипт. В нём мы зада­ём шаб­ло­ны нача­ла, тела и кон­цов­ки пись­ма, при­чём каж­дый шаб­лон — в двух вари­ан­тах. Пер­вый отве­ча­ет за фор­маль­ный стиль отве­та, а вто­рой — за нефор­маль­ный. Всё это оформ­ля­ет­ся как мас­си­вы. Если вы не зна­е­те, как с ними рабо­тать — реши­те зада­чу про сейф.

Инте­рес­ный момент — внут­ри мас­си­вов a_text и b_text мы исполь­зо­ва­ли шаб­лон­ное сло­во $somebody$ . Алго­ритм сна­ча­ла под­ста­вит пред­ло­же­ние вме­сте с этим шаб­лон­ным сло­вом, а вто­рым про­хо­дом — заме­нит его на кон­крет­ное зна­че­ние.

Все наши мас­си­вы мы объ­еди­ни­ли в один объ­ект с помо­щью фигур­ных ско­бок, что­бы даль­ше с ним рабо­тать как с еди­ным целым. Это поз­во­лит алго­рит­му най­ти всё в одном месте и после­до­ва­тель­но заме­нить все шаб­лон­ные сло­ва на нуж­ные зна­че­ния.

Теперь мож­но собрать пись­мо в одно целое. Для это­го берём нача­ло, сере­ди­ну и кон­цов­ку, добав­ля­ем HTML-теги и соеди­ня­ем всё в одну стро­ку. Не сто­ит опа­сать­ся того, что всё будет выгля­деть некра­си­во — для это­го мы как раз и добав­ля­ем теги, что­бы они раз­ме­ти­ли наш текст пра­виль­но и кра­си­во.

Мы гово­ри­ли, что сде­ла­ем так, что­бы алго­ритм сам выби­рал, в каком сти­ле сде­лать пись­мо. За это отве­ча­ет пере­мен­ная mood: если она рав­на 0, то стиль будет офи­ци­аль­ным, а если она рав­на 1 — нефор­маль­ным. Что­бы каж­дый раз это чис­ло опре­де­ля­лось слу­чай­ным обра­зом, доба­вим функ­цию, кото­рая воз­вра­ща­ет слу­чай­ное чис­ло в задан­ном диа­па­зоне.

Что­бы было понят­но, что будет про­ис­хо­дить даль­ше в коде, загля­нем немно­го впе­рёд. Алго­ритм будет дей­ство­вать так: возь­мёт струк­ту­ру пись­ма и раз за разом будет нахо­дить все шаб­лон­ные сло­ва со зна­ком дол­ла­ра, нахо­дить нуж­ный мас­сив, отку­да они берут­ся, и под­став­лять их. Так алго­ритм будет рабо­тать до тех пор, пока не закон­чат­ся все шаб­лон­ные сло­ва. Вот как, напри­мер, может выгля­деть наше пись­мо с тега­ми на каж­дом про­хо­де алго­рит­ма.

Читать еще:  Проверка предложения на ошибки онлайн

$a_intro$

Здравствуйте.

Перед вами — пер­вое пись­мо в рас­сыл­ке. Наш $somebody$ рад тому, что вы не про­шли мимо под­пис­ки, и при­гла­ша­ет вас на нашу выстав­ку, адрес — во вложении.

Спасибо, что под­пи­са­лись на нашу рассылку!

Здравствуйте.

Перед вами — пер­вое пись­мо в рас­сыл­ке. Наш дирек­тор рад тому, что вы не про­шли мимо под­пис­ки, и при­гла­ша­ет вас на нашу выстав­ку, адрес — во вложении.

Спасибо, что под­пи­са­лись на нашу рассылку!

Как видим, алго­ритм сна­ча­ла заме­нил все шаб­лон­ные сло­ва пер­во­го уров­ня, а затем — вто­ро­го уров­ня. Мож­но делать сколь­ко угод­но вло­же­ний — алго­ритм заме­нит их все на нор­маль­ные сло­ва.

Меня­ем шаб­лон­ные сло­ва на текст

Здесь прин­цип рабо­ты такой:

  • нахо­дим все сло­ва, где есть знач­ки дол­ла­ра;
  • уби­ра­ем их и полу­ча­ем назва­ние мас­си­ва в объ­ек­те, где хра­нят­ся зна­че­ния для это­го шаб­лон­но­го сло­ва;
  • идём в этот мас­сив и слу­чай­но выби­ра­ем отту­да зна­че­ние;
  • под­став­ля­ем это зна­че­ние вме­сто шаб­лон­но­го сло­ва;
  • дела­ем так до тех пор, пока не закон­чат­ся все шаб­лон­ные сло­ва.

Привязываем скрипт к кнопке и выводим результат

Мы уже про­пи­са­ли в HTML-документе, что по кли­ку будет вызы­вать­ся функ­ция get_text() . Давай­те это запро­грам­ми­ру­ем так, что­бы текст пись­ма сра­зу после сбор­ки появ­лял­ся на экране. Что­бы это сде­лать, исполь­зу­ем jQuery, най­дём блок для выво­да тек­ста text_here и отпра­вим наш текст с HTML-тегами в этот блок.

Бра­у­зер сам рас­по­зна­ет все теги и отфор­ма­ти­ру­ет пись­мо так, как нуж­но нам. Если вы хоти­те дру­гое фор­ма­ти­ро­ва­ние — поме­няй­те теги или про­пи­ши­те в них нуж­ные сти­ли.

Ссылка на основную публикацию
Adblock
detector