Підхід фонетичних (просодичних) мов до відкриття більш бажаних варіантів текстового рядка (PhLADiPreLiO) з використанням Haskell

Олександр Сергійович Жабенко
ORCID: 0000-0002-4330-2506

2022-09-13

Автор та розробник ПЗ: Олександр Сергійович Жабенко

Ліцензія: MIT

Copyright (c) 2020-2022 Oleksandr Zhabenko

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Анотація

У роботі запропоновано оригінальний підхід до завдання побудови текстів з заданими фонетичними властивостями, який дозволяє ефективно та швидко працювати над задачею, пропонуючи цікаві рішення як у змістовній, так і в інженерній площинах. Побудовано елементи теорії, яка проілюстрована використанням програм мовою Haskell для значного прискорення необхідних обчислень.

Ключові слова

Фонетичні мови; просодичні мови; фонетика; просодія; склади; ритм; метр; віршування; текст; когерентні стани; склад-як-одне-ціле (SaaW); фонетичне-явище-як-одне-ціле (PhoPaaW); Haskell; підхід фонетичних мов до відкриття більш бажаних варіантів рядка (phonetic languages approach to discovering preferred line options – PhLADiPreLiO – phladiprelio – читається "фладіпреліо", з наголосом на передостанньому складі); періоди унікальності.

Вступ

Існують різні мови. У них є різна структура та правила. При цьому існує можливість створити та використовувати (на основі однієї з існуючих широко вживаних та добре розповсюджених мов, зокрема української у цій роботі) фонетичну мову, яка краще підходить для поезії та музики. Можливо навіть створити різні варіанти фонетичної мови. Ця робота пропонує створити кілька різних фонетичних мов на основі української.

Що мається на увазі?

Якщо хтось будує фразу в мові, порушуючи правила граматики чи семантики, то ця помилка видна майстерному мовцю відразу, вона ідентифікується як така майже миттєво. Натомість, якщо звучання фрази має якісь фонетичні особливості, не рахуючи акценти, наприклад, складність вимови чи навпаки легкість, плавність чи стрибкоподібність тощо, то ідентифкувати це як помилку чи щось суттєве можна не відразу або при спеціальній увазі. Можна уявити це, як надання переваги у мові семантиці (смислу, значенню) та граматиці, але меншої ваги фонетиці. Фонетичною називається мова, яка побудована спеціально для підсилення значення та вагомості саме фонетичної складової.

Фонетична чи просодична мова?

Цікавим є питання, чи називати підхід "фонетичних" чи "просодичних" мов (Gross, б. д.). Але потрібно сказати, що вивчаються власне фонетичні особливості, те, що пов’язане зі звучанням мовлення. Серед них те, що стосується окремих фонетичних явищ у загальному випадку, зокрема фонем чи навіть палаталізації. Ці питання в загальному не є предметом вивчення просодії як науки, як певної складової фонетики, але є предметом ширшого вивчення фонетики. Більше того, немає жодних обмежень і прив’язки запропонованого підходу до власне складів, що більш характерно саме для предмету вивчення просодії. Узагальнення у пакеті phonetic-languages-simplified-generalized-examples-array можуть бути зроблені і на більш загальні випадки.

Тим не менше, на даному етапі розвитку переважна більшість інформації тут стосується чи прямо пов’язана зі складами та просодією. Тому залишаю назву "фонетичних мов", враховуючи, що просодія є більш конкретизованою галуззю фонетики.

Етична складова

Запропонований підхід схожий на підхід теорії музики. Так, в музиці серед усіх звуків виділяються музичні, згодом досліджуються консонанси та дисонанси, ще згодом ноти, інтервали, акорди, мелодії, композиція тощо. Є свої рекомендації, але вони не сковують творців, а допомагають. Подібно і запропонований підхід покликаний до подібної допомоги. Його незвичність на перший погляд не може бути підставою для його заперечення.

Для християн, до яких автор відноситься і сам, важливими є слова Мойсея: "Мойсей вийшов і сказав народу слова Господні, і зібрав сімдесят мужів зі старійшин народу і поставив їх біля скинії. І зійшов Господь у хмарі, і говорив з ним, і взяв від Духа, Який на ньому, і дав сімдесятьом мужам старійшинам. І коли спочив на них Дух, вони стали пророкувати, але потім перестали. Двоє з мужів залишилися в стані, одному ім’я Елдад, а другому ім’я Модад; але і на них спочив Дух [вони були з числа записаних, тільки не входили до скинії], і вони пророкували в стані. І прибіг отрок, і доніс Мойсеєві, і сказав: Елдад і Модад пророкують у стані. У відповідь на це Ісус, син Навина, служитель Мойсея, один із обраних його, сказав: господарю мій Мойсею! заборони їм. Але Мойсей сказав йому: чи не ревнуєш ти за мене? о, якби усі в народі Господньому були пророками, коли б Господь послав Духа Свого на них!" (Числа 11:24-29).

Добре, щоб усі вміли добре писати і говорити.

Перша ідея

Уявіть, що ви можете розуміти інформацію в тексті незалежно від порядку слів і при збереженні лише найбільш необхідної граматики (наприклад, правило не відокремлювати прийменник та наступне слово збережене). Розуміти точно так само, як читати текст (після деякого навчання та тренування, можливо), в якому у словах збережені на своїх позиціях лише перші та останні літери, а всі решта – взаємно перемішані одна з одною. Отже, уявіть, що ви можете розуміти (і виражати ваші думки, почуття, мотиви тощо) повідомлення тексту без дотримання строгого порядку слів.

У такому випадку ви можете впорядкувати слова (зберігши найбільш необхідну граматику для зменшення чи повного усунення можливої двозначності, зумовленої граматикою, точніше зменшенням її обсягу), розмістивши їх таким чином, щоб вони
забезпечили собою більш цікаве фонетичне звучання. Ви можете спробувати створити поетичний (чи принаймні дещо більш ритмічний та виразний) текст чи музику. Це також може бути саме по собі розвивальною вправою, яка надихає. Але як би ви могли швидко знайти, які комбінації більш чи менш підходять? Крім того, чи може складність алгоритмів бути зменшена?

Це лише деякі з цікавих питань. Ця праця на даний момент не дає повної відповіді на них, але є експериментальною та дослідницькою, при цьому, звичайно, будь-який результат її є цінним.

Українська є мовою без строгих вимог до порядку слів у реченні (хоча є певні усталені переважні варіанти) і має приємне звучання. Отже, вона може бути гарним прикладом та зразком. Крім того, для автора програм це рідна мова.

Навіть якщо ви не бажаєте створити та використовувати фонетичні мови, де фонетика є більш важливою, ніж граматика, і тоді ви можете оцінити фонетичний потенціал слів, використаних у тексті, для продукування спеціальним чином озвучених текстів. Це також може бути цінним та помічним у написанні поезії та можливих інших пов’язаних областях.(Zhabenko, б. д.a)

Тривалості звуків як основа ритмічності

Основою підходу є той факт, що звуки мови мають різну тривалість, яка залежить від багатьох факторів, яка визначається зокрема як способом звукоутворення (різним для кожного з них), так і іншими факторами, які тією чи іншою мірою можна контролювати, але, зазвичай, повний контроль не вимагається і не досягається. Це призводить до того, що чередування звуків, зокрема їх поєднання у склади, утворює певний ритмічний малюнок. Людина має здатність (яка піддається розвитку та тренуванню) розпізнавати риси цього малюнку, порівнювати їх між собою, робити певні фонетично-ритмічні узагальнення.

Питання визначення тривалостей звуків мови є непростим, але точний результат як уже зазначалося не вимагається. У даній реалізації підходу фонетичних мов використано певні статистичні характеристики звуків, зокрема визначено можливі тривалості. Якщо порівняти спосіб визначення тривалостей, який запропоновано та застоовано у програмі пакету r-glpk-phonetic-languages-ukrainian-durations, то аналогією буде упаковка об’ємних об’єктів. Для спостерігача упаквока буде уявною моделлю процесу отримання тривалостей звуків. Програма pldUkr (її узагальнення pldPL з пакету phonetic-languages-phonetics-basics також слідує цим шляхом, але у ній немає нормування, оскільки для різних мов може не бути такого явища як палаталізація) методом лінійного програмування шукає мінімальну оболонку (не в строгому математичному значенні), всередині якої можуть <<вміститися>> звуки мови. Ця оболонка і має аналогією упаковку, у той час як звуки мови мають аналогією об’єкти змінного об’єму всередині упаковки. Один і той же звук може вживатися у різних ситуаціях, у різних словах з різною тривалістю, але програма старається підібрати такі тривалості, які б <<охоплювали>> (подібно як огинаюча крива <<охоплює>> те чи інше сімейство кривих) усі ці варіації для усіх звуків, при цьому застосовується додатково певне нормування на тривалість фонетичного явища палаталізації (пом’якшення) приголосного, яке менше всього контролюється людиною, а тому очікується, що ця тривалість є найбільш стійкою до можливих випадкових чи систематичних коливань. Для української мови можлива тривалість, яка не видозмінює сильно звучання визначена експериментально з використанням комп’ютерної програми mm1.

Зрештою, нормування не є обов’язковим, важливо, щоб усі тривалості були пропорційні одна одній, тобто важливими є не самі тривалості (що чисельно виражаються як дійсні додатні числа), а їх взаємні співвідношення (допускається множення цих тривалостей одночасно всіх на одне і те ж додатнє число, що не впливає на результати підходу).

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

Нехай маємо послідовність з наступною структурою. Нехай ми здійснили (взагалі кажучи умовний) поділ послідовності на компактні однозв’язні підгрупи з однаковою кількістю елементів кожна у підгрупі, що фактично означає, що ми розбили послідовність на послідовність підпослідовностей з однаковою кількістю елементів у кожній. Розглянемо внутрішню упорядкованість кожної підпослідовності у розумінні розміщення значень її елементів (їх можна порівнювати за відношенням порядку, тобто вони є типом даних, який має реалізований екземпляр класу Ord) та повторюваності елементів. Вважаючи, що елементи підпослідовностей можуть бути попарно різними (чи в окремих випадках і однаковими), будемо порівнювати позиції, на яких розміщуються в підпослідовностях підгрупи елементів, які між собою мають вищий ступінь спорідненості ("близькості", "схожості", "подібності") за величиною та порядком (якщо це тип даних числовий, який має природний порядок, наприклад, Double, тоді поняття "спорідненості" за величиною та "спорідненості" за порядком співпадають). Позначимо такі підгрупи індексами, які в коді модулів мають частіше всього буквенне позначення.

Тоді кожна підпослідовність складатиметься з однакової кількості елементів однієї природи (зокрема, чисел типу Double), у кожній підпослідовності будуть виділені кілька підгруп "подібних" елементів за величиною (і порядком, якщо підпослідовності відсортувати за величиною), кожна з яких матиме свій індекс у вигляді символу (найчастіше у коді – літери). Підгрупи мають мати (насправді приблизно) однакову кількість елементів (у коді це не витримано строго для спрощення останнього, але це так у переважній більшості випадків в силу надлишкової "точності" чисел типу Double, що використовуються). Розглянемо питання, на яких позиціях у підпослідовностях розміщуються елементи з тих же самих підгруп, але які належать до різних підпослідовностей.

Для оцінки цього введемо певні числові функції, які мають регулярну поведінку та дозволяють визначати за їх результатом, чи підпослідовності мають елементи, які належать до відповідних підгруп на тих же самих місцях, чи на різних. Можна показати, що ситуація "на різних" відповідає наявності кількох ритмів – для кожної підгрупи буде свій власний, які між собою не співпадають, водночас ідеальна ситуація "повністю на тих самих місцях" відповідає випадку, коли ці ритми між собою узгоджуються, подібно як це відбувається у випадку когерентності у квантовій фізиці, зокрема просторової та часової когерентності, що є важливим зокрема для розуміння роботи лазерів та мазерів. Поліритми, які між собою когерують, утворюють помітніший загальний ритм, подібно як і наявність когерентності у випромінюванні веде до появи більшої структурованості випромінювання.

Як ілюстрація до ідей розділу наступні дані.

Приклад ритмічної послідовності (ідеальний випадок).

Prelude Rhythmicity.PolyRhythm Numeric> let f x = putStrLn . showFFloat (Just 4) (sin (2*pi*x)) $ ""
   in mapM_ f [0,0.2..4]
0.0000
0.9511
0.5878
-0.5878
-0.9511
-0.0000
0.9511
0.5878
-0.5878
-0.9511
-0.0000
0.9511
0.5878
-0.5878
-0.9511
-0.0000
0.9511
0.5878
-0.5878
-0.9511
-0.0000

Prelude Rhythmicity.PolyRhythm Numeric> getPolyChRhData 'a' 5 (PolyCh [True,True,True,False] 5)
  (PolyRhythm [1,1,1,1,1]) . map (sin . (*pi) . (*2)) $ [0,0.2..4]
[[RP P c,RP P a,RP P b,RP P e,RP P d],[RP P c,RP P a,RP P b,RP P e,RP P d],[RP P c,RP P a,
  RP P b,RP P e,RP P d],[RP P c,RP P a,RP P b,RP P e,RP P d]]

А ось приклад послідовності з ритмом, який не є сталим (який менше відчутний).

Prelude Rhythmicity.PolyRhythm Numeric> let f x = putStrLn . showFFloat (Just 4)
  (sin (27182.81828459045*pi*x)) $ "" in mapM_ f [0,0.01..0.24]
0.0000
-0.5139
-0.8817
-0.9988
-0.8319
-0.4284
0.0969
0.5947
0.9233
0.9894
0.7742
0.3388
-0.1930
-0.6698
-0.9562
-0.9707
-0.7092
-0.2460
0.2872
0.7386
0.9801
0.9428
0.6375
0.1509
-0.3787
Prelude Rhythmicity.PolyRhythm Numeric> getPolyChRhData 'a' 5 (PolyCh [True,True,True,False] 5)
  (PolyRhythm [1,1,1,1,1]) . map (sin . (*27182.81828459045) . (*pi)) $  [0,0.01..0.24]
[[RP P a,RP P b,RP P e,RP P d,RP P c],[RP P d,RP P e,RP P c,RP P b,RP P a],[RP P a,RP P b,
  RP P c,RP P e,RP P d],[RP P d,RP P e,RP P c,RP P b,RP P a],[RP P a,RP P b,RP P c,RP P e,RP P d]]

Когерентні стани поліритмічності як одне з суттєвих джерел ритмічності

Описаний паттерн виникнення ритмічності є одним з суттєвих можливих варіантів утворення ритмічності зокрема у текстах чи музиці, але не єдиним. Варто зазначити, що описаний механізм утворення ритмічності, як показують статистичні експерименти з текстами з використанням цього коду (коду бібліотеки та залежних від неї пакетів на сайті Hackage), може бути не єдиним можливим варіантом, але у багатьох випадках має визначальне значення та вплив на перебіг процесу ритмізації (утворення, зміни чи зникнення ритму). Також відомо, що наявність статистичного взаємозв’язку не означає наявності більш глибоких видів зв’язку між явищами, зокрема причинно-наслідкових. "Кореляція не означає причинності". Більш глибокий зв’язок передбачає наявність інших, не статистичних даних, які дозволяють його підтвердити.

Наслідки для реп музики

Код бібліотеки дозволяє на практиці отримати ритмічні зразки, які близькі часто до текстів пісень у стилі реп. Тому це можна віднести до одного з прямих застосувань бібліотеки.(Zhabenko, б. д.b)

Дитина або хтось новий для мови вчиться читати

Коли дитина тільки починає читати слова мови (або це може бути хтось новий щодо мови). він чи вона починають з вимови фонем для кожного значимого написаного (і, отже, прочитаного) символу. Згодом після деякої практики, дитина починає читати рівно, більш плавно. Тим не менше, якщо текст власне є поетичним твором, зокрема віршованим, ЧАСТО (можливо, зазвичай, чи іноді, чи частіше тощо) є очевидним, що текст, який ось читається у такій манері, має деякі ритмічні властивості, незважаючи на те що фонеми читаються і вимовляються у режимі нерегулярних і до певної міри невідповідних для нормального мовлення тривалостей. Нам буває (часто) достатньо певної організації елементів тексту, щоб відрізнити поетичий текст від непоетичного.

Подібна ж ситуація виникає, коли особа з акцентом (можливо, сильним чи доволі незвичним) читає поетичний текст. Або також в інших ситуаціях. Бібліотека спроектована таким чином, наче Ви маєте справу саме з такими ситуаціями. У ній вважається, що тривалості є фіксованими і відомими (заданими) наперед, і тоді наявність кількох обґрунтованих (більш чи менш) дозволяє оцінити (звичайно, наближено) ритмічні властивості та деякі інші, відповідно до запропонованих тут алгоритмів.

Це все, на думку автора, є підґрунтям для використання бібліотеки та її функціональності в таких випадках.(Zhabenko, б. д.c)

Функції для збільшення та зменшення

Починаючи з версії пакету phonetic-languages-rhythmicity 0.5.3.0, функції для збільшення та зменшення для поліритмічності стали більш подібними до взаємно обернених функцій. Це, очікувано, веде до більш "гладкої" поведінки на початку рядка, в середині та в кінці.

Зауваження: Починаючи з версії 0.6.0.0 пакету phonetic-languages-rhythmicity значення властивостей серій c, s, t, u, v, а також багатьох інших (починаючи з версії 0.9.0.0) можуть бути від’ємними, це не впливає на загальну логіку роботи програм. Починаючи з версії 0.8.0.0 пакету phonetic-languages-simplified-examples-array, додано також нові властивості, які також можуть бути від’ємними за знаком.

Питання вибору найкращої функції та суміжні питання

Розглянемо наступне питання: припустимо, ми отримали найкращий варіант (на нашу суб’єктивну думку чи на основі якихось критеріїв, це тут несуттєво) рядка тим чи іншим способом (тут спосіб насправді ролі не грає). Чи існує така функція, яка саме цей варіант рядка робить оптимальним, тобто для якої саме такий варіант рядка з поміж усіх можливих перестановок дає максимум? Так, існує. Це нескладно довести. Доведення нагадує принцип роботи еквалайзерів.

Нехай \(n \in N\) – це кількість складів у такому рядку. Розташуємо тривалості складів у ряд за зростанням (стандартна процедура для описової статистики). Знайдемо найменшу ненульову різницю між сусідніми значеннями, поділимо її на 5. Позначимо цю отриману величину \(\delta\). Тепер розглянемо ряд тривалостей складів саме для нашого найкращого рядка. Пронумеруємо кожний склад від початку, рахуючи від 1. Позначимо \(Y = \{y_{i},\quad i \in N,\quad i=1,2,\ldots,n\}\) множину всіх значень тривалостей в порядку слідування складів у найкращому рядку. Позначимо \(X = \{ 0=x_1,x_2,\ldots,x_i,x_{i+1},\ldots,x_{n+1}, \quad i \in N,\quad i=1,2,\ldots,n \}\) множину координат точок кінців часових умовних інтервалів, на які поділяє наш найкращий рядок часову пряму (лівий край рівний 0, бо відлік часу починається з 0). Позначимо \(M = \{z_i=\dfrac{x_i + x_{i+1}}{2},\quad i \in N,\quad i = 1,2,\ldots,n - 1\}\) множину середин відрізків, на які поділяють часову пряму кінці умовних інтервалів. Позначимо \(L_1[a,b]\) клас функцій, інтегровних за Лебегом на відрізку \([a,b]\). Позначимо \(I(y_i,z_i,\delta)[z_i - \delta, z_i + \delta]\) клас усіх обмежених функцій з \(L_1[z_i - \delta, z_i + \delta]\), максимальне та мінімальне значення кожної з яких лежить на відрізку \([y_i - \delta, y_i + \delta]\). Кожну функцію класу \(I\) позначимо \(g\).

Розглянемо клас функцій \(F\) (своєрідних скінченних аналогів відомих дельта-функцій Дірака), визначених наступним чином:

\[f(x, i) = \begin{cases} g \in I(y_i,z_i,\delta)[z_i - \delta, z_i + \delta], \quad \text{ якщо } y_{i} \text{ є унікальним значенням у множині } Y, \, x \in [z_i - \delta,z_i + \delta] \\ y_{i}, \quad \text{ якщо } y_{i} \text{ має рівне значення з якимось іншим числом з множини } Y, \, x \in [z_i - \delta,z_i + \delta] \\ 0, \quad \text{ в усіх інших точках } \end{cases}\]

Легко переконатися, що \[\sum_{i=1}^n \int_{-\infty}^{\infty} f(x, i) \,\textrm{d}x,\] де інтегрування здійснюється за Лебегом, і є шуканою функцією (бо лише склади найкращого рядка на своєму місці, враховані зі своїми індексами, дають додатній внесок у її значення, а для всіх інших варіантів функції хоча б деякі зі складів дають 0 внесок), причому вона не єдина в силу того, що у першому рядку визначення \(f(x, i)\) функція може мати довільне значення з замкненого непорожнього інтервалу. Отже, існує принаймні один клас функцій, який описується такою формулою, для кожної з яких даний варіант рядка буде оптимальним.

Поставимо наступне питання: якщо розглянути не рядок, а їх сукупність, наприклад, вірш чи поему. Чи буде існувати для усього твору (для усієї цієї сукупності рядків) функція, яка буде робити оптимальним кожний рядок, тобто яка буде описувати увесь твір, кожний рядок у ньому?

У даному випадку, попередній спосіб побудови функції не дає бажаного результату, оскільки вже для двох рядків може бути, що те, що є кращим для одного з них, є не найкращим для іншого. У випадку збільшення кількості рядків ця загальна неоптимальність тільки посилюється. Тим не менше, існування такої функції для різних частинних випадків є принципово можливою ситуацією, щоправда, імовірність її зменшується як зі збільшенням кількості рядків, так і з появою різних особливостей рядків, які посилюють відмінності між ними. Загалом пошук саме такої однієї функції може бути практично недоцільним.

Тим не менше, якщо розглянути увесь твір як один рядок, вважаючи його оптимальним, то описаний щойно спосіб побудови відповідної функції (класу функцій) знову дає результат. Так, кількість складів у ньому (в узагальненому "рядку"-творі) зростає, але сама процедура дає подібні результати (якщо знехтувати можливими однаковими тривалостями та повторами складів у більшому тексті, які призводять до того, що деякі слова можуть бути переставлені місцями, що робить текст лише приблизно оптимальним). Можна запропонувати подальше вдосконалення цієї процедури (наприклад, введення множників, які залежать від значень сусідніх тривалостей складів), що дозволяє зменшити неоптимальність тексту.

Але все одно, якщо перейти від даного тексту до іншого, отримана функція уже, скоріше всього, не буде оптимальною.

Робимо висновок, що для усієї множини доцільно організованих текстів існування універсальної функції бачиться як певна гіпотеза (з майже напевно заперечною відповіддю).

Зв’язок з фракталами

На цей принциповий "злам", принципову неподібність текстів звернемо увагу.

Але спершу зауважимо наступне. Розглянута функція вище робить оптимальним один варіант рядка, водночас можна розглядати не один варіант, а декілька, серед яких обирати найкращий. Тоді задача зводиться до пошуку оптимальної групи варіантів з можливо мінімальною кількістю складових.

Якщо знову розглянути граничий випадок групи з кількістю елементів рівною факторіалу числа слів у рядку, то легко переконатися з комбінаторних міркувань, що така група містить (складається з, є) усі варіати рядка з даних слів, серед яких має бути той, який буде результатом. Але уже для 5 слів така група містить \(5! = 1\cdot 2\cdot 3 \cdot 4 \cdot 5 = 120\) варіантів по 5 слів, разом це 600 слів, щоб прочитати які потрібно зазвичай кілька хвилин.

Якщо зменшити кількість слів у оптимальній групі, то серед них може не бути потрібного варіанту, але час читання зменшується відповідно. Отже, якщо маємо якийсь спосіб хоча б приблизного упорядкування, то доцільним буде пошук уже оптимального співвідношення "розмір групи – ступінь влучності приблизного упорядкування".

Це призводить до ідеї застосування різних функцій, які легко обчислюються, мають певну характерну поведінку і дозволяють приблизно упорядкувати множини усіх перестановок відповідно до завдання пошуку, і пошук уже не єдиного варіанту, а оптимальної групи варіантів.

При цьому принциповими є етапи пошуку, коли програма не дає повністю бажаного результату. Тоді можна щось змінити в даних (не змінюючи самі слова), або змінити слова, щоб змінити ті варіанти, з якими працює програма, оскільки це змінює структуру множини усіх варіантів і дозволяє отримати інші все ще певною мірою "оптимальні" варіати з точки зору автора та з точки зору програми. Це дало поштовх так званому рекурсивному режиму роботи, коли зміною даних є злиття слів (і отже, виключення з розгляду варіантів, де вони стоять не підряд), а також режим кількох варіантів.

Цікавим спостереженням також є те, що при рекурсивному режимі можна отримати рядки, в яких більш помітними є "злами" ритмічності, які частіше всього можна включити в ритмічність через введення додаткових пауз. Відомими в теорії є також вірші з паузами (наприклад, так званими цезурами), для яких це може бути корисним.

Також можливість утворити рядки з рядків, а кожен рядок з певних складових, нагадує фрактали. Тим не менше, зв’язок з фракталами потребує більш детального та глибокого вивчення.

Зацікавлений читач може звернутися до літератури.(Barnsley, Hutchinson, і Stenflo 2008; Partap і Chugh 2016; Nabytovych, б. д.; Kigami 2001; Welch 2010; Goldsmith, б. д.; Bishop і Peres 2017; Ramanujam і Lin 2008; Wildgen 1998; Garba 2008; Coca, Tost, і Liang 2009; Andres et al. 2005; Merges 2005; Vitiello 2017; Saupe 1988; Alexander і Orbach 1982; Avnir et al. 1998; Mandelbrot і Mandelbrot 1982; Strichartz 1998; Hutchinson 1981; Andres і Rypka 2012; Кошовий і Кошовий 2011; Шарко, б. д.)

Аналогія з екстремальним принципом

У механіці та оптиці відомим є принцип екстремальності дії (вводиться фізична величина дії, яка для реальних процесів у цих галузях приймає серед усіх можливих значень за траєкторіями мінімальне (найчастіше), або максимальне значення, або таке, яке не залежить від траєкторії, тобто одним словом екстремальне значення). У термодинаміці є закон зростання ентропії замкнених систем. У випадку механіки та оптики пошук дійсних траєкторій зводиться до пошуку тих з можливих траєкторій, для яких значення функціоналу дії є екстремальним, що дозвляє скористатися апаратом вищої математики для пошуку саме цих екстремальних значень.(Wan-Li 1983)

Висувалося припущення, що саме аналогія з цим принципом, тобто порівняльний режим роботи у поєднанні з режимом кількох властивостей може дати найкращий результат. Тим не менше, широке коло гарних віршованих рядків (і не тільки їх) не обов’язково слідують за цим паттерном віршування. Тому загалом принцип слугує своєрідною інтуїцією пошуку, але не закономірністю.

Можливість використовувати власні тривалості репрезентацій звуків чи фонетичних явищ

Програми пропонують за замовчуванням чотири різні множини тривалостей фонетичних представлень. але починаючи з версії 0.13.0.0 є можливість задати власні тривалості. Для цього потрібно прописати їх як числа типу Double у файлі в порядку, який визначається наступним чином:

\textcolor{yellow">UZ 'A' D       дз (твердий)          8
UZ 'A' K       дз (м'який)           9
UZ 'B' D       ж  (твердий)          10
UZ 'B' K       ж  (пом'якшений)      11
UZ 'C' S       й                     27
UZ 'D' N       сь                    54
UZ 'E' L       ч  (твердий)          39
UZ 'E' M       ч  (пом'якшений)      40
UZ 'F' L       ш  (твердий)          41
UZ 'F' M       ш  (пом'якшений)      42
    G                                55
    H          ю                     56
    I          я                     57
    J          є                     58
    K          ї                     59
    L          ʼ                     60
    M          ’                     61
    N          нт                    62
    O          ст                    63
    P          ть                    64
    Q          дзь                   12
    R          зь                    13
    S          нь                    65
    T          дь                    14
UZ 'a' W       а                     1
UZ 'b' D       б  (твердий)          15
UZ 'b' K       б  (пом'якшений)      16
UZ 'c' D       ц  (твердий)          38
UZ 'd' D       д  (твердий)          17
UZ 'd' K       д  (м'який)           18
UZ 'e' W       е                     2
UZ 'f' L       ф  (твердий)          43
UZ 'f' M       ф  (пом'якшений)      44
UZ 'g' D       ґ  (твердий)          19
UZ 'g' K       ґ  (пом'якшений)      20
UZ 'h' D       г  (твердий)          21
UZ 'h' K       г  (пом'якшений)      22
UZ 'i' W       і                     6
UZ 'j' D       дж (твердий)          23
UZ 'j' K       дж (м'який)           24
UZ 'k' L       к  (твердий)          45
UZ 'k' M       к  (пом'якшений)      46
UZ 'l' S       л  (твердий)          28
UZ 'l' O       л  (м'який)           29
UZ 'm' S       м  (твердий)          30
UZ 'm' O       м  (пом'якшений)      31
UZ 'n' S       н  (твердий)          32
UZ 'n' O       н  (м'який)           33
UZ 'o' W       о                     3
UZ 'p' L       п  (твердий)          47
UZ 'p' M       п  (пом'якшений)      48
UZ 'q' E       ь                     7
UZ 'r' S       р  (твердий)          34
UZ 'r' O       р  (м'який)           35
UZ 's' L       с  (твердий)          49
UZ 't' L       т  (твердий)          50
UZ 't' M       т  (м'який)           51
UZ 'u' W       у                     4
UZ 'v' S       в  (твердий)          36
UZ 'v' O       в  (пом'якшений)      37
UZ 'w' N       ць                    66
UZ 'x' L       х  (твердий)          52
UZ 'x' M       х  (пом'якшений)      53
UZ 'y' W       и                     5
UZ 'z' D       з  (твердий)          25
UZ 'z' K       з  (м'який)           26

де вказані значення у списку відносяться до фонетичих представлень (з модуля
Languages.Phonetic.Ukrainian.Syllable.ArrInt8). Останній стовпець є восьмибітними цілими числами (GHC.Int.Int8), якими представляються ці ж звуки в нових модулях.

При бажанні задати кілька таких множин (до 9 включно), можна з нового рядка вказати ’*’ чи кілька таких символів, а тоді з наступного рядка буде нова множина значень.

Кожна множина має бути в такому порядку: [1,2,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,66,101]

де число відповідає останньому стовпчику в наведеній вище схемі. 101 (до версії 0.20.0.0 – це було -1, і відповідно стояло не в кінці списка, а на його початку) відповідає паузі між словами (не впливає на результати пошуку рядка). Кожне наступне значення має бути записане у файлі з нового рядка.

Тоді при виклику програми десь серед аргументів командного рядка (немає значення, де саме) вказати <<+d>> <шлях до файлу зі вказаними даними>. Програми прочитають ці значення і перетворять їх у відповідні значення. Як властивості потрібно тоді використовувати такі, які починаються з літери <<H>>, а далі злитно з нею відповідне позначення властивості. Наприклад, <<Hw04>>, при цьому остання цифра в записі у такому випадку означатиме порядковий номер множини значень, починаючи від 1 (максимально 9).

Поряд з власними значеннями можна використовувати і задані бібліотечно, як звичайно, в режимі кількох властивостей.

Мінімальна граматика для можливого збереження смислу та зрозумілості

Програми використовують перестановки слів, які нехтують будь-якими (чи принаймні частиною) граматичних зв’язків, порядком слів тощо. Це може призвести (крім необхідності вдумування) до ситуацій коли граматично пов’язані конструкції мови розриваються, їх частини переносяться в інші місця, утворюючи нові зв’язки і змінюючи смисл тексту.

Щоб цього було менше, щоб усунути деякі з таких ефектів, програми застосовують конкатенацію слів, які мають тісний граматичний зв’язок, щоб не розривати їх при аналізі. Це дозволяє зберегти більшу смислову легкість та впізнаваність тексту, а також як побічний ефект збільшити загальну довжину рядка, який може бути проаналізований. В українській мові граматично пов’язані службові чи залежні слова йдуть переважно перед незалежним чи головним, тому застосовано приєднання цих службових чи залежних слів до наступного за ними. Повнота визначення таких випадків не є вичерпною, але розглягнуті найбільш часті випадки.

Для загального випадку потрібно мати на увазі, що службові чи залежні слова можуть йти і після незалежного чи головного, тому це потрібно розглядати окремо (і приєднувати такі слова до попереднього, а не до наступного). Наразі в узагальненій версії phonetic-languages-simplified-generalized-examples-array реалізовано обидва варіанти.

Зменшена множина перестановок як варіант універсальної

За замовчуванням програми аналізують універсальну множину перестановок усіх слів та їх конкатенацій, при цьому кількість аналізованих варіантів зростає як факторіал числа таких слів чи сполучень. Текст, організований більш чи менш узгоджено щодо тієї чи іншої властивості, може кардинально відрізнятися від початкового, що ускладнює розуміння та має ефект затримки обчислень.

Для експрес-перевірки можливого покращення тексту з використанням підходу введено множини перестановок лише одного слова відносно тексту, а також двох слів чи їх сполучень як універсальні множини (додатково до повної). При роботі програм вони задаються параметром командного рядка <<+p>> десь серед аргументів (положення не має значення). У такому випадку використовуються зменшена множина перестановок. Кількість слів та їх сполучень, які можуть розглядатися програмою як один рядок для аналізу збільшується у такому випадку до 10. Щоб використати мінімально можливу множину перестановок, потрібно задати як наступний аргумент командного рядка "1" (лише одне слово), для попарних перестановок – "2" (парна перестановка). Тоді серед аргументів командного рядка буде вираз "+p 1" у першому випадку, "+p 2" – у другому, а для повної множини перестановок, як і раніше, можна не задавати цю групу (повна множина, таким чином, використовується за замовчуванням).

У цьому випадку аналіз відбувається значно швидше (бо значно зменшується кількість розглядуваних випадків), і текст змінюється менше, що дозволяє зберегти його більшу впізнаваність. Можливе послідовне застосування цього випадку, проте слід мати на увазі, що у випадку попарних перестановок так можна отримати не найкращий варіант з точки зору підходу, також це може зайняти у такому випадку навіть більше часу, ніж аналіз усієї множини перестановок (бо деякі варіанти будуть аналізуватися по кілька разів, чого не відбувається у першому випадку). У випадку перестановок лише 1 слова відносно тексту виглядає так, що якщо при послідовному застосуванні вибору максимального елемента двічі підряд за тими ж властивостями отримуємо один і той же варіант, то шанси , що він і буде максимальним для повної множини перестановок, збільшуються в порівнянні з випадком попарних перестановок, але оцінити збільшення (якщо ця гіпотеза дійсно вірна) складно у загальному випадку. Все ж на практиці пошук такого "мінімально покращеного" варіанту є перспективним, оскільки він може добре зберігати смисл, покращуючи ритмічну структуру. При цьому слід враховувати наступне: при пошуку максимального елемента за значенням властивості (тобто без зміни структури) якщо при аналізі зменшеної множини перестановок отриманий текст, який співпадає з початковим, то є хороші шанси, що саме цей варіант є оптимальним з точки зору розглядуваної властивості (хоча це не гарантується). І ще одне: у такому випадку досягається локальний максимум (який може бути глобальним, а може і ні). Якщо ж повторне застосування призводить до утворення іншого (уже третього) варіанту, значить, попередній локальний максимум точно не був глобальним і програма рухається в його напрямку.

Дивіться також: (Л. Л. Звонська 2017; А. 2013; Кудряшова 2016; Костенко, б. д.; Паладян 2010; Івончак 2012; Гуцуляк 2017; Любімова 2011; Анатолія Волкова 2001a, 2001b, 2001c, 2001d, 2001e, 2001f, 2001g, 2001h, 2001i, 2001j, 2001k, 2001l, 2001m)

Більше про ритм у музиці та мові

У роботі (Cooper et al. 1963) розглядається музичний ритм, метр, пульс та інші подібні теми.

Під пульсом розуміється один з серій регулярно повторюваих однакових стимулів (звуків). Під метром розуміється міра кількості пульсів між більш чи менш регулярними акцентами. Акцентами названі ті пульси, які для людини видаються виділеними серед інших. Під ритмом (музичним) у роботі розуміється те, як один чи кілька неакцентованих бітів (пульсів у метричному контексті) групуються навколо одного акцентованого. Акцентованість може виникати по-різному і не співпадає з підсиленнями звуку, а може бути викликана найрізноманітнішими факторами в музиці.

Зазначається, що немає строгих і простих правил визначення ритмічних груп, але є певні тенденції (принаймні у Західній музиці – Прим. автора), на які потрібно зважати. Іноді також групування може бути двозначним (багатозначним), поліваріантним, допускати водночас різні варіанти, які співіснують разом.

Групування є архітектонічним, тобто має різні рівні, які взаємопов’язані між собою. На різних рівнях групування є продуктом подібності та відмінності звуків, також близькості та роздільності, які відчуваються органами чуттів і організовуються розумово.

Тут зазначу, що програми розглядають структури з однаковою кількістю складів в одній групі, але виділеними можуть бути у групі не один елемент (склад), а кілька, ледве чи не всі. Більше того, розглядається ступінь виділеності, який розглядається як міра значимості тих чи інших складів при обчисленні значень властивостей. Ці групи складів можна співвіднести з метром, тоді як різна кількість значимих складів відповідає тому факту, що метр може існувати безвідносно ритму. У класичному розглянутому підході ритмічною є група з одним акцентованим звуком. У програмах немає чіткої залежності між акцентованим складом і мірою значимості. Це означає, що пропонується інший підхід до цього питання, результати якого можуть бути плідними. Тим не менше, можна часто вважати, що групі значимих складів відповідає ритмічна група на одному з архітектонічних рівнів, і тоді структурам з максимальним значенням відповідних властивостей такого типу відповідатимуть рядки з більш регулярним повторенням ритмічних груп у їх загальних рисах, тобто більша рівномірність на вищому архітектонічному рівні композиції твору, а меншим значенням відповідних властивостей такого типу відповідатимуть нерівномірно розподілені по рядку ритмічні групи, або їх видозміни, тобто більш складний (і тому, можливо, менш впізнаваний та відчутний, менш значимий) ритмічний малюнок на вищому архітектонічному рівні. Також можна орієнтовно вважати, що для максимальних за значеннями відповідних властивостей рядків ритмічне групування пов’язане з метричним, якщо ж розглядати не максимальні елементи, то міра зв’язку між ритмічним групуванням та метричним послаблюється, тобто такі рядки тяжіють (у музичному сенсі) до <<вільного>> ритму Східної та народної музики та <<measured rhythm>> григоріанських кантів (Cooper et al. 1963). Фактично це пропонує доволі широкі можливості для дослідження зв’язку між метричною та ритмічною структурою в мові.

Відмінності між ритмічністю в музиці та мові та їх культурна обумовленість

У роботі (Iversen, Patel, і Ohgushi 2008) показано натомість, що замість групування на основі принципів сприйняття (голосніший звук частіше починає групу, а також подовжений звук чи інтервал частіше завершує групу) для музики можливе групування різне для представників Великобританії та Японії, тобто є значно зумовлене культурою, а також патернами у мовах носіїв. У цій же роботі наведено багато посилань на роботи, у яких розглядалися раніше той чи інший підходи. Також вказані відміності між англійською (також українська ближча до англійської у такому контексті) та японською мовами, зокрема передування службових частин мови головним словам в англійській (і українській), тоді як слідують після головних у японській мові.

У роботі (Hannon 2009) згадуються відмінності між мовами у тривалостях складів: можна поділити мови на ті, в яких структура складів більш чи менш варіативна. Це зокрема впливає на неоднаковість тривалостей звуків у різних позиціях, на явища редукції голосних у мовах, де структура складів більш варіативна. У роботі (Astésano 2001) також зазначається, що, наприклад, у французькій мові є дуже помітним явище подовження тривалостей кінцевих складів, особливо у кінці фрази чи речення. Програми не враховують подібні відмінності в тривалостях складів, але їх врахування може бути задачею подальшого їх вдосконалення.

Про відмінності в ритмічності в музиці та мові йдеться в роботі (Magne et al. 2005). У ній застосовано міждисциплінарний підхід. Зокрема аналізом мозкової активності при реакціях на неконгруентності (відступи від структури ритму) в мові показано, що вони значно впливають також на процес розуміння значення мови (подовжують час реакції та розуміння). Також подібні результати щодо впливу ритму на здатність розуміння та мови наводяться в роботі (Overy 2003).

У роботі (Iyer et al. 1997) розглядаються особливості афро-американської ритмічної системи в музиці, зокрема виділяється така риса, як більш насичена ритмічна розробка менших частин творів та менша варіативність між меншими частинами одного більшого твору, а також ідея виразного ритму (експресивного), в якому на противагу до рівномірного біту Західної музики вводяться приблизний еквівалент біту та значно менший за тривалістю <<атомічний>> ритм, який, можна вважати (умовно), складається з нот приблизно 1/16 – 1/24 тривалостей та вносить <<виразні деталі>>. Відзначається також явище суперпозиції різних циклічних ритмів в один загальний (добре простежується, наприклад, в Афро-Кубинській румбі), що схоже на ідею когерентності поліритмів для утворення одного ритму. Явище виразного <<атомічного>> ритму, його використання та характеристики показують, що є сенс вводити тривалості фонетичних явищ з високою (на перший погляд надмірною) точністю.

У роботі (Zentner і Eerola 2010) показано, що діти віком 5-24 місяці сильніше реагують на музичні ритми, ніж мовні, також, що вони переважно викликають позитивні емоції у них, також рухову активність.

У роботі (Trost і Vuilleumier 2013) розглядається, як ритми в музиці можуть викликати емоційні стани людини чи впливати на них. Зазначається, що це не автоматичний процес, що на нього впливають індивідуальні смаки, обізнаність та тренування.

У роботі (Boltz 1998) робиться спроба дослідити вплив мелодійних та ритмічних змін на сприйняття мелодії. Виявлено, що мелодії розгортаються повільніше (у сприйнятті), якщо у них більше змін по висоті звуків, більше несумісних змін у ритмічній структурі.

У роботі (Degara et al. 2011) пропонується підхід до визначення початку в звуковому музичному сигналі на основі аналізу також ритму.

У роботі (Vuust et al. 2009) досліджується обробка мозком музичної інформації у досвідчених джаз-музикантів порівняно з некваліфікованими. Показано, що є помітні відмінності у здатності передбачити ритм. Це свідчить про можливість тренування відчуття ритму.

У роботі (Cason, Astésano, і Schön 2015) експериментально показано, що попереднє прослуховування музики з відповідним подібним ритмом покращує здатність виявлення фонем у мовленні, а також цей ефект підсилює попередня аудіо-рухова підготовка до прослуховування мовленнєвих речень. Це може бути застосовано, наприклад, у логопедії. Також робиться припущення про обробку мовних та музичних часових (ритмічних) структур мозком за участю спільних (одних і тих же) ресурсів.

У роботі (Degara et al. 2010) досліджується зв’язок між часовою та ритмічною структурою музики на рівні ноти, пропонується спосіб, який суттєво враховує ритм, для визначення початку ноти у звуковому сигналі.

У роботі (Shields, McHugh, і Martin 1974) експериментально показано, що якщо йдеться про осмислену фразу, то швидше сприймаються фонеми у наголошених складах, а якщо фраза складається з безглуздих слів (без лексичного значення), то суттєвої різниці у часі реакції для наголошених та ненаголошених складів немає. Робиться висновок, що наголошені склади можуть передбачатися (варіант аперцепції), тоді як ненаголошені – ні (так пояснюється різниця у часі реакції). Такий результат наштовхує на думку, що наявність динамічних наголосів покращує швидкість осмилення тексту (для тих, хто є носієм культури з мовою, в якій є динамічні словесні наголоси).

У роботі (Patel 2003) робиться певний підсумок щодо зв’язку ритмічної структури в мові та музиці, зокрема вказується очевидний факт наявності багато чого спільного у ритмічних групуваннях у мові та в музиці, водночас це не робить їх ідентичними. Для дослідження далі пропонується розглядати вплив мовної ритмічної структури на музичну. Згадується, що наявні дані частково підтверджують, що музична ритмічна структура зазнає впливу мовної. Під мовним (лінгвістичним) ритмом розуміється поєднання кількох факторів, які впливають на часову організацію мовлення. По-перше, це чергування слів та пауз, по друге, різні тривалості складів, по-третє, чергування наголошених та ненаголошених складів. Ці фактори можуть призвести до того, що мови можуть бути ритмічно подібними чи різними. Під музичним ритмічним групуванням розуміється також групування у фрази, чи є біт, чи він є періодичним, а також метрична структура. Спільним виступає сам факт групування у фрази, а відмінності переважно у періодичності. Зокрема, автори підкреслюють, що початкова та впливова гіпотеза про розподіл мов на ті, в яких наголоси приблизно рівномірно розподілені, та ті, в яких тривалості складів приблизно однакові, тобто початки складів приблизно рівномірно розподілені, не підтверджується наявними експериментальними даними. Це створює реальні перспективи використання програм для багатьох мов. Тим не менше, лінгвісти зберегли ці поняття та продовжують описувати ними відмінності в мовах. Ведуться дискусії щодо того, чи це справді значимі поняття, чи лише два кінці одного цілого, у якому всі мови займають своє місце. Важливим також є факт відсутності у звичайних умовах періодичності в мовному ритмі, на противагу до поширеного стану в музиці. Також автори висловлюють своє переконання, що вплив мовних ритмів на музичні не є універсальним, а більше характерний для періодів та подій, коли композитори намагаються підкреслити свою національну ідентичність та приналежність.

Поради щодо використання програм

Виходячи з вищесказаного, ритмічність утворених програмами варіантів може в багатьох випадках бути помітнішою, якщо читати слова в рядках без значних пауз між ними (як один фонетичний потік), не намагаючись виділяти наголоси. Це може і не бути так, але якщо отримані варіанти виглядають не дуже ритмічними, спробуйте саме такий варіант, і тоді порівняйте, зробіть висновки, чи підходить саме таке прочитання для Вашої ситуації.

Додаткова інформація

У роботі (Shao, Xu, і Kankanhalli 2004) пропонується метод класифікації музики, який використовує приховані марковські ланцюги, також інформацію щодо ритмічної структури, порівняний за точністю з ручною класифікацією.

У роботі (Holzapfel і Stylianou 2008) пропонується порівняно ефективний спосіб визначення ритмічної подібності фрагментів музики.

У роботі (Drake і Palmer 1993) вивчалося, чи виділяють піаністи-виконавці систематичними варіаціями виконання різні особливості ритмічної структури, метру та мелодії. Найбільш характерними виявилися виділення ритмічного групування.

У роботі (Todd 1993) автори намагаються застосувати вейвлет-аналіз для отримання характеристик ритмічних структур музичних творів та мовлення, виділено їх математичні особливості, потім застосовано отримані результати для аналізу творів. Показано, що вони мають розумну перцептивну основу. Пропонується обговорення можливості застосування отриманих результатів до каскадного генерування ритму.

У роботі (Ramus 2002) розглядається статистичний поширений підхід до визначення мовної ритмічної структури, що заснований на вокальних (голосних та їх послідовностей) та інтервокальних (приголосних та їх послідовностей) інтервалах (відстанях, тривалостях) та їх варіативності. Показано, що це дозволяє краще провести типологізацію мов щодо ритмічної структури. Додатково розглядається до вже означених мов з приблизно однаковою періодичністю розподілу наголосів, мов з приблизно однаковою тривалістю складів, також мови з приблизно однаковим розподілом мор (мора – це склад з коротким голосним чи один короткий голосний, який відчувається як найменше ціле в мові замість звуку чи складу). Для оцінок використовуються варіанти індексів попарної варіативності (rPVI, nPVI) та / або середні квадратичні відхилення. Значна частина роботи присвячена описанню точок зору на питання, чи можлива кластеризація та типологізація мов за ритмом таким чином, чи вони усі утворюють певний континуум значень, розподіляючись в межах однієї великої групи. Дослідження продовжуються у цій галузі.

У роботі (Galves et al. 2002) показано, що замість тривалостей для визначення ритму можна використовувати звучність (sonority), що також дозволяє легше автоматизувати процес сегментації на ритмічні групи. Пізніші дослідження продовжують вивчати це питання, використовуючи, зокрема, приховані марковські ланцюги.

У роботі (Patel і Daniele 2003a) продовжується вивчення впливу особливостей мовної ритмічної структури на музичну для видатних англійських та французьких композиторів минулого. Ведеться дискусія з цього питання.

У роботі (Patel і Daniele 2003b) проводиться аналіз цього питання для німецьких та австрійських композиторів за проміжок часу близько 250 років, вказується, що є коливання, які можуть бути пояснені історичним та культурним, а не мовним впливом.

У роботі (Daniele і Patel 2013) продовжується ця ж тема у порівнянні також з італійськими композиторами.

У роботі (Huron і Royal 1996) розглядаються теорії мелодійного музичного наголосу. Експериментальний розгляд підтверджує переважно теорію Джозефа Томассена (1982). У цій моделі (теорії) найбільш акцентованими є поворотні точки в мелодії, коли зміна висоти нот відбувається в протилежних напрямках, причому більше це помітно для повороту з переходом від зростання до спадання, ніж для повороту з переходом від спадання до зростання. Але в різних випадках може мати місце мелодійний наголос іншого роду. Показано, що мелодійний наголос може бути доволі слабким фактором у ритмічній структурі музики.

У роботі (Hannon 2009) робиться аналіз, чи можуть слухачі визначати за ритмами музики (мову якої вони добре знають), якою мовою ця пісня. Як виявилося, у багатьох випадках можуть. Слухачі можуть використовувати подібності та відмінності в ритмічних структурах мов для визначення, якою мовою була складена пісня.

Цікава додаткова інформація щодо ритму та суміжних музичних явищ є в роботі:

  1. Adam Neely. Solving James Brown’s Rhythmic Puzzle. Adam Neely. 2021.

Передумови користування пакетом програм

Поки програми працюють для робочих станцій (десктопів, desktop, working station тощо), і немає мобільних версій.

Потрібно, щоб були встановлені та налаштовані програми мовою Haskell:

  1. GHC (версії не раніше 7.10)

  2. Cabal

Виконувані файли цих програм мають бути доступні для пошуку через змінну робочого середовища PATH (це типова їх установка).

Якщо є змога, встановіть за допомогою системного менеджера пакетів (програм) також важливі пакети Haskell bytestring, vector, heaps, parallel. Якщо Ви плануєте користуватися також r-glpk-phonetic-languages-ukrainian-durations, то встановіть також мову програмування (а краще середовище розробки) R.

Якщо потрібні згадані пакети мовою Haskell не встановлено за допомогою системного менеджера, при встановленні пакетів вони будуть завантажені та встановлені автоматично, при цьому додатковий час піде також на їх компіляцію.

Ремарка щодо термінології

У раніших версіях пакетів використовувалися назви норми та метрики щодо властивостей текстів. Оскільки у значенні типовому для математики (зокрема функціонального аналізу) усі вказані властивості не є власне метриками і нормами (зокрема не виконується нерівність трикутника), то далі всюди буде використано замість слова метрика відповідно недвозначне властивість, маючи на увазі функціональне представлення останньої.

Встановлення пакету

Відкрийте командний рядок чи термінал і введіть як команди:

cabal update
cabal --reinstall --force-reinstalls install phonetic-languages-plus-0.6.0.0
cabal --reinstall --force-reinstalls install phonetic-languages-simplified-examples-array-0.21.0.0

Також додатково рекомендується встановити наступні пакети:

cabal --reinstall --force-reinstalls install r-glpk-phonetic-languages-ukrainian-durations-0.4.2.0
cabal --reinstall --force-reinstalls install mmsyn6ukr-array

(ця остання є опціональною, але корисною для озвучування і не займає багато місця).

Якщо є повідомлення про помилки, введіть замість update – v1-update, замість install –

--enable-split-sections --enable-split-objs --enable-library-stripping \
   --enable-executable-stripping v1-install

Якщо це не допомагає, очікуйте на новіші версії пакетів, у яких має бути виправлення багу зі встановленням, або зверніться до розробника на електронну пошту olexandr543@yahoo.com.

У новіших версіях cabal планується використовувати v2-* версії команд за замовчуванням, але поки є додаткові тонкощі при роботі з різними версіями пакетів, бібліотек та програм, тому рекомендовано використовувати v1-* варіанти. Зокрема, якщо після встановлення таким способом (v2*) при спробі завантажити модуль у інтерпретаторі GHCi будуть повідомлення, що відповідні модулі є у прихованому пакеті (hidden package), то запустіть інтерпретатор з прапором -package <назва пакету з відповідним модулем>.

Якщо пакети base, parallel та heaps часто можна встановити з репозиторіїв ОС, то решту пакетів рекомендується встановлювати з сервера Hackage (наведеними вище командами).

Зміни у версії 0.17.0.0

У новій версії зроблено спробу оптимізувати обчислення перетворення українського тексту на дані для аналізу. Також виправлено дублювання значень для ліній 4 та 3 для різних типів властивостей. Якщо Ви бажаєте відтворити попередні результати для лінії 4, то тепер потрібно для цього використовувати лінію 3, натомість 4 лінія потенційно має давати більш рекомендований автором результат. Також змінено правила нумерації версій, щоб з часом дозволити більш стабільні випуски та можливість відтворити результати роботи програм для тієї чи іншої версії у майбутньому.

Зміни у версії 0.18.0.0

У новій версії були виправлені неправильно визначена зміна структури виводу (перетворення інтервалів) так, щоб програми тепер працювали, як описано. Якщо ви використовували раніше зміну структури з аргументами, то всі результати повинні бути повторно розглянуті (заново отримані) з використанням виправленої версії 0.18.0.0. Автор просить вибачення за можливі незручності. Покращена документація. Додано приклади двох нових наборів значень тривалості, доступних як готовий до використання файл за постійним посиланням: відкрити тут. Виправлено помилку з інтерпретатором рядків (див. відповідну інформацію) і додано можливість краще налаштувати поділ сполучення на частини.

Зміни у версії 0.19.0.0

У новій версії додано підтримку додаткових властивостей, а також режиму кількох властивостей для distributionTextG. Покращено теоретичну частину даного документа. Виправлено деякі помилки в коді. Переключено в обчисленнях середнього значення та стандартного середнього квадратичного відхилення з популяційних до вибіркових версій (тепер стандартне квадратичне відхилення дещо більше). Виправлено помилку в режимі кількох варіацій, якщо Ви не працюєте в інтерактивному режимі.

Зміни у версії 0.20.0.0

У новій версії здійснено суттєву зміну функціональності, додано режим склад-як-одне-ціле (syllable-as-a-whole – SaaW), який дозволяє враховувати не лише тривалості фонем чи фонетичних явищ, але і задавати ваги складів, що дозволяє в першу чергу розрізняти наголошені та ненаголошені склади, а також враховувати широке коло просодичних факторів, включаючи логічні наголоси, інтонацію, загальний характер вимови тощо, і може бути використане для створення також і силаботонічної поезії, музичних творів та ін. Також це узагаьнення дозволяє аналізувати ширше коло мов як фонетичні мови. Виправлено помилки у сегментації на склади та слова. Тепер слова з дефісами та апостофом сегментуються кращим, більш відповідним чином (до потреб підходу і загалом). Виправлено помилку для неповної множини перестановок для кодування-декодування 10-го слова, яка могла приводити до неправильної роботи. Здійснено для цього перехід від дясяткової до шістнадцяткової системи числення. Загалом усі зміни призводять до того, що вивід програм може частково змінитися, і тому якщо потрібна точність в обчисленнях, то результати потрібно перерахувати заново.

Зміни у версії 0.20.1.0

Виправлено роботу зі зміною інтервалів. Деякі незначні покращення документації.

Зміни у версії 0.21.0.0

Додано можливість шукати суму періодів унікальності не для всіх одиниць, які мають позначення числом, меншим 100 (більшість з яких — фонеми, але серед яких є і позначення м’якого знаку для усіх приголосних, крім "сь" та "ць"), а лише для певних заданих одиниць, серед яких можуть бути наперед визначені типи фонем (наприклад, голосні чи дзвінкі приголосні), — як одну з властивостей, доступних для усіх програм.

У програмі lineVariantsG3 додано можливість змінювати аргументи виклику програми разом з текстом у рекурсивному режимі, а також змінено порядок сортування і виводу рядків у деталізованому режимі кількох властивостей з параметрами виклику "+v 2".

У програмі propertiesTextG3 додано можливість читати текст прямо з вводу, а не з файлу, можливість "розписувати" варіанти тексту (яка раніше була введена для lineVariantsG3), а також режим статистики за складами.

У програмі rewritePoemG3 збільшено кількість можливих джерел для створення комбінованого файлу з 7 до 14.

Виправлено помилку в документації щодо логічного наголосу. Зроблено обґрунтоване припущення, як Тарас Шевченко писав вірш "Садок вишневий коло хати".

Робота з програмою lineVariantsG3

Перевірте, щоб папка (каталог), куди cabal встановив виконувані файли програм, була доступна для пошуку в змінній середовища PATH.

У новій версії є два головних режими роботи:

  1. зі складом-як-одним-цілим (SaaW), коли кожний склад розглядається як одне ціле, як базова одиниця, з можливістю задавати числову характеристику у вигляді числа типу Double; він застосовується, якщо:

  2. звичайний (був єдиним можливим до цієї нової версії), режимом фонетичне-явище-як-одне-ціле (PhoPaaW), коли тривалості фонетичних явищ (зазвичай, фонем) задаються завчасно, вони сталі впродовж виклику пограми.

У свою чергу також кожен режим може використовуватися у двох інших режимах роботи (усього \(2 \cdot 2 = 4\) варіанти комбінацій режимів):

Останній використовується, якщо серед аргументів командного рядка є група, введена розділювачами +m <тип властивості1> <числові аргументи1> <тип властивості2> <числові аргументи2> <тип властивості3> <числові аргументи3> <тип властивості4> <числові аргументи4> <тип властивості5> <числові аргументи5> -m. Більше про нього у відповідному розділі (дивіться посилання вище). Робота програми у такому режимі описується далі в окремому розділі.

Для роботи у режимі однієї властивості введіть у командному рядку (чи терміналі) команду:

lineVariantsG3 <перший аргумент> [<WX аргумент> <чи друкувати значення властивості(ей)>
  <чи останнє слово має залишатися на своєму місці> <чи використовувати рекурсивний
    інтерактивний режим>] [<чи використовувати режим кількох джерел>]
    <числові аргументи> <тип властивості> <український текст>

все в один рядок, або з використанням переносу рядка в терміналі; або:

lineVariantsG3 <перший аргумент> [<WX аргумент> <чи друкувати значення властивості(ей)>
  <чи останнє слово має залишатися на своєму місці> <чи використовувати рекурсивний
    інтерактивний режим>] [<чи використовувати режим кількох джерел>]
    <числові аргументи> <тип властивості> <український текст>
    <десь серед аргументів як єдина група: обмеження>

та натисніть Enter. Додатково можна задавати інтерактивний режим, про що детальніше дивіться далі.

Якщо не задавати групи у квадратних дужках, Ви побачите щось на зразок наступного:

lineVariantsG3 10.0_1.2 yy2 садок вишневий коло хати хрущі над вишнями гудуть

(введений український текст в кінці команди – уривок з відомого вірша Тараса Григоровича Шевченка; загалом цей рядок – це введена команда)

 садок колохати хрущі гудуть надвишнями вишневий

(варіант (загалом може бути кілька таких варіантів, які утворюють одну групу, а також кілька таких груп; усі групи йдуть одна за одною зверху донизу у порядку зменшення кінцевого значення властивості), який максимізує обрану властивість для заданих інтервалів)

3.6562  (значення обраної властивості до застосування перетворення інтервалів)
3.6562  (значення обраної властивості після перетворення інтервалів,
          кінцеве значення властивості для цього рядка)

Зверніть увагу, що текст може (і переважно буде) писатися не так, як він пишеться згідно правил орфографії та пунктуації, але ви можете його прочитати та спробувати зрозуміти. Змінюючи введені перші аргументи, ви (скоріше всього) отримуватимете інші вихідні дані, те ж, вочевидь, стосується й українського тексту. Занадто довгий текст буде скорочений до об’єму, який ви змогли б зрозуміти (можливо, після згаданого раніше тренування) без надзусиль. Тут і далі вірш цитується за: (Шевченко 2018).

Спробуйте оцінити, прочитавши варіант, наскільки він підходить.

УВАГА: Також потрібно пам’ятати, що в режимі однієї властивості числові аргументи передують позначенню властивості, а в режимі кількох властивостей (див. далі) навпаки – позначення властивості починає набір числових аргументів, які стосуються її, якщо такі є (інакше використовуються типові значення, які аналогічні пошуку максимального елемента).

Українські інформаційні повідомлення

Щоб програма при роботі виводила інформаційні повідомлення українською мовою (за замовчуванням виводить англійською), потрібно вказати як один з аргументів командного рядка +u десь не всередині груп опцій, наприклад, напочатку. Можна також налаштувати аліас для такого варіанту роботи програми, які і для інших варіантів, якщо Вам подобається. За детальною інформацією зверніться до документації командних оболонок.

Більш комплексне використання

Числові аргументи, якщо задані, мають наступне значення.

Перший числовий аргумент – кількість груп з однаковими максимальними значенням властивості (в порядку зменшення), які будуть виведені на екран як результат. Якщо задано більшу кількість, ніж їх є взагалі, то виводяться всі можливі результати, які задовольняють усі інші умови. Якщо не задано числові аргументи, то вважається рівним 1.

Другий числовий аргумент – кількість інтервалів, на які поділяється проміжок між мінімальним та максимальним значенням властивості для даного рядка. Якщо не задано, вважається рівним 1. Значення 0 не дає змоги іншим числовим аргументам далі змінювати результат роботи програми.

Усі наступні числові аргументи (якщо задано, інакше ніяких перестановок не відбувається) – номери інтервалів, які будуть поміняні місцями з максимальним за номером. Це дозволяє змінити структуру даних, які відображаються як результат роботи програми і побачити внутрішні (не максимальні) елементи. Наприклад, числові аргументи 2 6 1 4 (у такому порядку) означатимуть, що в ході виконання програма поверне 2 групи елементів з максимальними значеннями властивості (найбільшим і найбільшим наступним за попереднім), отриманим після перестановки інтервалів; відрізок між максимальним та мінімальним значенням властивості буде поділено на 6 рівних інтервалів, при цьому елементи, які знаходяться у першому та 4, рахуючи від мінімального (інтервал з номером 1) виведе максимальні 2 групи елементів.

Значення, які були в максимальному інтервалі, будуть переміщені в інтервал з найменшим номером серед тих, які переміщені в максимальний. Таким чином, при виводі ці значення будуть виведені найпізніше.

Параметр +l (+bl) та його використання

УВАГА: Якщо не було серед аргументів командного рядка символів +l, +bl, +i, +f, то після кожного рядка буде відображено 2 числа у квадратних дужках – первинне значення властивості (без переміщення інтервалів) і значення після переміщення. Якщо був (хоча б) один з цих (груп) символів – значення властивостей друкуватися не буде.

Також слід пам’ятати, що:

 +bl == +b +l 

(це просто скорочення використання відразу обох параметрів, замість 5 символів потрібно ввести лише 3).

Якщо Ви вказуєте також +f або +i, тоді цей параметр можна не вказувати (його буде застосовано автоматично), натомість, якщо бажаєте, можете замість нього задати додатково +b.

Параметр +b (+bl) та його використання

Якщо де-небудь серед аргументів командного рядка вказати аргумент у вигляді +b (або +bl), то програма збереже при виведенні та аналізі останнє слово у рядку на своєму місці – це дуже зручно, коли потрібно, маючи риму, підібрати інші слова. Якщо не вказувати, то усі слова будуть переміщуватися (при необхідності). Робота параметра реалізована фактично як додаткове обмеження (constraint), дивіться нижче. Ви можете також додаткво задавати інші обмеження.

 +bl == +b +l 

(це просто скорочення використання відразу обох параметрів, замість 5 символів потрібно ввести лише 3).

Про використання інших параметрів трохи згодом.

Режим кількох властивостей (+m …-m)

Якщо серед аргументів командного рядка задати групу аргументів, виділену розділювачами +m та -m, так щоб група аргументів виділена розділювачами +a та -a не була всередині цієї, і навпаки (щоб вони не перетиналися), тоді програма працюватиме в режимі кількох властивостей. Значення властивостей виводитися на екран не будуть, натомість є можливість задати не більше чотирьох різних властивостей та до кожної з них вказати аргументи (дивіться: Більш комплексне використання). Програма тоді знайде варіанти, які задовольняють кожну з вказаних умов, а потім виведе на екран лише ті варіанти, які зустрічаються у всіх обраних і заданих властивостях з параметрами. Числові аргументи, які стоять після позначення властивості і передують наступному позначенню властивості, відносяться до цієї властивості. Якщо числові аргументи опущено, то використовуються значення за замовчуванням (фактично це еквівалентно простому пошуку максимальних значень властивості). Загалом, це комплексне використання даної програми.

Спробуйте, наприклад, задати:

 lineVariantsG3 +m 02y 3 03y 3 y0 10 -m +bl <український текст>. 

Інтерактивний режим (+i) та його використання

Інтерактивний режим (додаткова розширена взаємодія з користувачем, крім необхідної) вмикається і відповідно задається аргументом командного рядка +i, який можна ставити будь-де у рядку команди. У такому випадку програма виводить на екран не просто рядки, які задовольняють усі умови, але для кожного рядка виводить також його порядковий номер (починаючи з 1) в порядку посилення слабкості виконання усіх умов (чим більший номер, тим, у загальному випадку, більш імовірним є слабший прояв заданих умов, хоча це не завжди так – зокрема коли потрібно вивести лише одну групу). Після того запитує, яким є вибір користувача і очікує на номер варіанту, введений користувачем. Після чого повертає той варіант без номеру.

Виглядає приблизно так:

lineVariantsG3 +i +m 02y 10 03y 10 y0 35 -m +bl садок вишневий коло хати хрущі над вишнями гудуть
0
Please, check whether the line below corresponds and is consistent with the constraints you 
have specified between the +a and -a options. Check also whether you have specified the 
"+b" or "+bl" option(s). If it is inconsistent then enter further "n", press Enter and 
then run the program again with better arguments. 
If the line is consistent with your input between +a and -a then just press Enter to 
proceed further. 

садок вишневий колохати хрущі надвишнями гудуть

1     вишневий колохати садок хрушчьі надвишньами гудуть
2     вишневий хрушчьі колохати садок надвишньами гудуть
3     вишневий хрушчьі садок колохати надвишньами гудуть
4     вишневий хрушчьі садок надвишньами колохати гудуть
5     садок вишневий колохати хрушчьі надвишньами гудуть
6     хрушчьі вишневий колохати садок надвишньами гудуть
7     садок вишневий хрушчьі колохати надвишньами гудуть
8     хрушчьі вишневий садок колохати надвишньами гудуть
9     садок вишневий хрушчьі надвишньами колохати гудуть
10    хрушчьі вишневий садок надвишньами колохати гудуть
11    хрушчьі колохати вишневий садок надвишньами гудуть
12    садок хрушчьі вишневий колохати надвишньами гудуть
13    надвишньами садок вишневий хрушчьі колохати гудуть
14    садок надвишньами вишневий хрушчьі колохати гудуть
15    садок хрушчьі вишневий надвишньами колохати гудуть
16    колохати надвишньами садок вишневий хрушчьі гудуть
17    надвишньами колохати садок вишневий хрушчьі гудуть
18    надвишньами колохати хрушчьі вишневий садоґ гудуть
19    надвишньами хрушчьі колохати вишневий садоґ гудуть
20    садок надвишньами хрушчьі вишневий колохати гудуть
21    хрушчьі надвишньами садок вишневий колохати гудуть
22    садок хрушчьі надвишньами вишневий колохати гудуть
23    хрушчьі садок надвишньами вишневий колохати гудуть
24    колохати надвишньами садок хрушчьі вишневий гудуть
25    колохати хрушчьі надвишньами садок вишневий гудуть
26    надвишньами колохати садок хрушчьі вишневий гудуть
27    надвишньами колохати хрушчьі садок вишневий гудуть
28    хрушчьі колохати надвишньами садок вишневий гудуть
29    надвишньами садок колохати хрушчьі вишневий гудуть
30    надвишньами хрушчьі колохати садок вишневий гудуть
31    садок надвишньами колохати хрушчьі вишневий гудуть
32    хрушчьі надвишньами колохати садок вишневий гудуть
33    надвишньами садок хрушчьі колохати вишневий гудуть
34    надвишньами хрушчьі садок колохати вишневий гудуть
35    садок надвишньами хрушчьі колохати вишневий гудуть
36    хрушчьі надвишньами садок колохати вишневий гудуть
37    хрушчьі садок надвишньами колохати вишневий гудуть

Please, specify the variant which you would like to become the resulting string by its number. 
5
садок вишневий колохати хрушчьі надвишньами гудуть

Інтерактивний режим запису рядка у файл (+f ...)

Якщо задати серед аргументів групу з трьох у вигляді +f <шлях до файлу запису>, то у вказаний шлях, якщо є змога, буде дописано фінальний результат роботи програми, окрім того, що він як і в звичайному інтерактивному режимі буде виведений на екран. Ця група може стояти будь-де серед аргументів командного рядка виклику програми, але не повинна міститися всередині інших гру виду +a ... -a, +m ... -m тощо.

У результаті може вийти щось подібне:

lineVariantsG3 +f hello.txt +bl +m 02y 10 0y 10 y0 40 -m садок вишневий коло хати хрущі над вишнями гудуть
 0
Please, check whether the line below corresponds and is consistent with the constraints you 
have specified between the +a and -a options. Check also whether you have specified 
the "+b" or "+bl" option(s). If it is inconsistent then enter further "n", press Enter 
and then run the program again with better arguments. 
If the line is consistent with your input between +a and -a then just press Enter to 
proceed further. 

садок вишневий колохати хрущі надвишнями гудуть

1     вишневий хрушчьі колохати садок надвишньами гудуть
2     колохати вишневий надвишньами садок хрушчьі гудуть
3     садок вишневий колохати хрушчьі надвишньами гудуть
4     хрушчьі вишневий колохати садок надвишньами гудуть
5     надвишньами колохати вишневий хрушчьі садоґ гудуть
6     хрушчьі колохати вишневий садок надвишньами гудуть
7     надвишньами хрушчьі вишневий колохати садоґ гудуть
8     садок хрушчьі вишневий колохати надвишньами гудуть
9     садок надвишньами вишневий хрушчьі колохати гудуть
10    надвишньами колохати хрушчьі вишневий садоґ гудуть
11    хрушчьі колохати садок вишневий надвишньами гудуть
12    надвишньами хрушчьі колохати вишневий садоґ гудуть
13    садок надвишньами хрушчьі вишневий колохати гудуть
14    хрушчьі надвишньами садок вишневий колохати гудуть
15    колохати надвишньами садок хрушчьі вишневий гудуть
16    колохати хрушчьі надвишньами садок вишневий гудуть
17    надвишньами колохати садок хрушчьі вишневий гудуть
18    надвишньами колохати хрушчьі садок вишневий гудуть
19    надвишньами садок колохати хрушчьі вишневий гудуть
20    надвишньами хрушчьі колохати садок вишневий гудуть
21    садок надвишньами хрушчьі колохати вишневий гудуть
22    хрушчьі надвишньами садок колохати вишневий гудуть

Please, specify the variant which you would like to become the resulting string by its number. 
3
садок вишневий колохати хрушчьі надвишньами гудуть

Цей крайній рядок у виводі програми також буде дописаний (appended) до файлу зі вказаною назвою, якщо є змога для даного користувача.

Якщо бажаєте, можна запустити команду повторно з новим текстом та / або новими аргументами. Якщо буде таким же чином вказаний той же файл, тоді новий результат буде дописаний далі у той же файл. Це дає змогу, послідовно застосовуючи цю програму, писати чи переписувати тексти (наприклад, вірші).

Режим одночасних можливих варіацій тексту

Починаючи з версії 0.3.0.0 додана можливість опрацьовувати відразу кілька варіацій тексту, зокрема такі, що відрізняються синонімами, перефразуваннями тощо.

Для цього використовуйте замість простого тексту як крайні аргументи наступну спеціальну конструкцію:

{ <варіант1 українського тексту> / <варіант2 українського тексту> / ... /
  <варіантN українського тексту> }

усе в один рядок з хоча б двома варіантами всередині фігурних дужок. Ці варіанти будуть опрацьовуватися по черзі кожен зокрема в ході одного виклику програми, і Вами буде обраний один з варіантів (можливо, порожній). У кінці буде можливість обрати серед цих попередньо підготованих варіантів один-єдиний, який і буде результатом (і відповідно, наприклад, буде виведений на екран та записаний у файл, якщо це забезпечено аргументами командного рядка).

Будь ласка, пам’ятайте, що програма у такому режимі забезпечує обробку кожної з можливих комбінацій варіацій, і отже, якщо Ви вказали багато їх (наприклад, 3 варіації на одне слово та 4 на інше створять 3*4 = 12 варіацій, які будуть послідовно опрацьовані), поки Ви отримаєте кінцевий результат.

УВАГА: починаючи з версії 0.19.0.0:

Якщо Ви не використовуєте інтерактивний режим (або режим запису у файл, або рекурсивний), то варіанти будуть виведені групами, між якими буде порожній рядок.

В інтерактивному режимі (або рекурсивному, або режимі запису у файл) варіанти будуть аналізуватися для кожної комбінації по черзі, а кінцевим буде загальний з-поміж усіх.

Рекурсивний режим роботи (+r)

Починаючи з версії 0.9.0.0 можна запускати програму в рекурсивному інтерактивному режимі. Для цього потрібно викликати команду з параметром +r, наприклад, на початку після першого аргументу. У такому випадку програма буде виконуватися рекурсивно, пропонуючи завершити рекурсію на кожному окремому кроці. При цьому її результатом буде останній перед завершенням результат роботи. Цей режим несумісний з обмеженнями (тому що обмеження втрачають своє правильне значення і починають зміщуватися з потрібних частин тексту на інші), тому має використовуватися окремо від них, може бути їх альтернативою. При цьому при кожному виклику немає змоги змінити властивості та параметри виклику цих крайніх, тому обирайте їх доречно. Зміни в тексті в цьому режимі задають через так званий рядок інтерпретатора, тобто текстовий ввід, який у арифметичному виразі – числі або частці кодує наступні дії програми.

WX аргумент

Якщо Ви серед властивостей використовуєте w або x серію (або обидві), то для них можна задати окремий аргумент, який має починатися з +x з наступним записом двох додатніх чисел подвійної точності (типу Double), з’єднаних підкресленням. Наприклад, +x 2.345_0.45676237876. Якщо цей аргумент не задати, то буде використаний аргумент за замовчуванням +x 2.0_0.125.

Зверніть увагу, починаючи з версії 0.16.0.0, тепер між +x та числами є пробіл, раніше його не було.

Перше число подвійної точності буде використане як множник (чи дільник у випадку неспівпадіння) і найбільше впливає на значення властивості, стосується найважливіших складів у стопі (ритмічній групі); натомість другий буде використаний або лише для збільшення значення властивості при співпадінні менш значимих довжин складів у стопі (ритмічній групі) (що відповідає w серії), або також і для більш складної форми поведінки (x серія).

Більше деталей можна побачити у розділі [types]Типи властивостей.

Режим використання кількох джерел

Якщо серед аргументів командного рядка перед українським текстом (чи замість нього) або після нього задати групу аргументів у обрамленні

+t {двозначне число} ... ^t

то програма працюватиме з використанням режиму кількох джерел. Замість трьох крапок можна вказати аргументи.

Поведінка програми відрізняється для випадків попарних перестановок (Див. Режим попарних перестановок, задається аргументом командного рядка <<+p [1 чи 2]>>) та повної множини перестановок.

У першому випадку після +t програма очікує одне з чисел 10, 11, 20, 21, 30, 31, 40, 41, 50, 51, 60, 61, 70, 71, 80, 81, 90, 91, де 0 як друга цифра вказує, що програма рядки з кожного джерела не буде з’єднувати в один рядок перед поділом на частини для аналізу та перетворення, а 1 там же означає, що програма спочатку з’єднає усі рядки кожного джерела в один рядок, а потім застосує до нього поділ на частини. Перша цифра (якщо не рівна 1) означає кількість слів у кожному рядку (крім останнього) у кожному джерелі, які будуть складати нові рядки для аналізу. Якщо перша цифра рівна 1, то це еквівалентно 10 (максимальна кількість слів для цього режиму).

У другому випадку після +t програма очікує одне з чисел 20, 21, 30, 31, 40, 41, 50, 51, 60, 61, 70, 71. Значення їх аналогічне до першого випадку.

На місці трьох крапок можна вказати шляхи до файлів з українським текстом, який буде використаний для аналізу. Якщо залишити порожніми ці три крапки, то програма буде запитувати кожний новий рядок у нескінченному циклі у корисувача, а далі опрацьовуватиме його згідно усіх інших аргументів. Можна також у такому випадку лише вказати +t і двоцифрове число.

Спробуйте, наприклад, такі варіанти:

lineVariantsG3 +r 3 w02 +t 70 "sadok.txt" "other_poem.txt" "just_text.txt" ^t
lineVariantsG3 +r 3 w02 +t 70
lineVariantsG3 +r 3 w02 +f "file_for_saving.txt" +t 50

де очікується, що вказані в рамках

+t ... ^t

файли існують (програма ігнорує файли, які не вдалося прочитати).

Цей режим також несумісний з обмеженнями (+a ... -a), краще замість них застосовувати рекурсивний режим.

Зверніть увагу, що в новій версії програми (з 0.16.0.0) знак множення змінений на +, між першим аргументом та числом є пробіл.

Додаткові значення

Починаючи з версії 0.19.0.0 пакету phonetic-languages-simplified-examples-array, є можливість використати спеціальні додаткові значення для покращення виводу для багатьох властивостей. Усі вони задаються заданням у властивості серед літер також англійськї літери ’G’ (вона була раніше зарезервована) та спеціальним форматом числового аргумента до неї. Вони мають особливе значення, яке суттєво відрізняється від загальної схеми обчислень.

Поетичний рядок

Розглянемо приклад, який показує, що є доцільність застосування таких додаткових значень.

Якщо Ви збережете текстовий файл з текстовою інформацією зі сторінки 56.csv під назвою 56.csv у робочому каталозі (папці) (там, де Ви знаходитеся в терміналі чи консолі) і виконаєте команду:

lineVariantsG3 +d 56.csv 11 HI32 весна  уже прийшла і спів пташок лунає звідусіль
0
 пташок прийшла уже весна іспів лунає звідусіль 
Infinity
Infinity
 лунає пташок уже іспів прийшла весна звідусіль 
Infinity
Infinity
 лунає пташок весна іспів прийшла уже звідусіль 
Infinity
Infinity
 лунає прийшла уже весна пташок іспів звідусіль 
Infinity
Infinity
 звідусіль пташок уже іспів прийшла лунає весна 
Infinity
Infinity
 звідусіль уже прийшла лунає іспів пташок весна 
Infinity
Infinity
 прийшла лунає звідусіль уже іспів пташок весна 
Infinity
Infinity
 уже прийшла звідусіль іспів весна пташок лунає 
Infinity
Infinity
 уже весна звідусіль іспів прийшла пташок лунає 
Infinity
Infinity
 весна пташок звідусіль прийшла іспів уже лунає 
Infinity
Infinity
 пташок прийшла звідусіль іспів уже весна лунає 
Infinity
Infinity
 звідусіль весна пташок прийшла уже іспів лунає 
Infinity
Infinity
 весна пташок звідусіль прийшла уже іспів лунає 
Infinity
Infinity
 прийшла пташок звідусіль уже іспів весна лунає 
Infinity
Infinity
 уже пташок звідусіль іспів весна прийшла лунає 
Infinity
Infinity
 уже весна звідусіль іспів пташок прийшла лунає 
Infinity
Infinity
 пташок іспів весна звідусіль уже прийшла лунає 
Infinity
Infinity
 пташок іспів весна звідусіль лунає прийшла уже 
Infinity
Infinity
 звідусіль пташок весна іспів прийшла лунає уже 
Infinity
Infinity
 звідусіль весна пташок прийшла лунає іспів уже 
Infinity
Infinity
 пташок прийшла лунає звідусіль весна іспів уже 
Infinity
Infinity
 весна звідусіль уже лунає прийшла іспів пташок 
Infinity
Infinity
 уже лунає весна звідусіль прийшла іспів пташок 
Infinity
Infinity
 прийшла іспів уже звідусіль весна лунає пташок 
Infinity
Infinity
 іспів прийшла звідусіль весна уже лунає пташок 
Infinity
Infinity
 лунає пташок уже весна звідусіль іспів прийшла 
Infinity
Infinity
 пташок іспів весна звідусіль уже лунає прийшла 
Infinity
Infinity
 уже весна звідусіль іспів пташок лунає прийшла 
Infinity
Infinity
 весна іспів уже звідусіль лунає пташок прийшла 
Infinity
Infinity
 іспів пташок звідусіль весна уже лунає прийшла 
Infinity
Infinity
 весна звідусіль уже лунає пташок прийшла іспів 
Infinity
Infinity
 уже лунає весна звідусіль пташок прийшла іспів 
Infinity
Infinity
 пташок прийшла лунає звідусіль уже весна іспів 
Infinity
Infinity
 звідусіль прийшла весна уже пташок лунає іспів 
Infinity
Infinity
 іспів звідусіль весна уже пташок лунає прийшла 
1764427020228361200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000.000
0
1764427020228361200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000.0000
 іспів звідусіль уже весна пташок лунає прийшла 
1764427020228361200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000.0000
1764427020228361200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000.0000
 іспів лунає уже пташок прийшла звідусіль весна 
2852865825013534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000.0000
2852865825013534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000.0000
 іспів лунає весна пташок прийшла звідусіль уже 
2852865825013534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000.0000
2852865825013534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000.0000
 весна лунає уже пташок прийшла звідусіль іспів 
2852865825013534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000.0000
2852865825013534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000.0000
 іспів звідусіль весна уже прийшла лунає пташок 
2852865825013535800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000.0000
2852865825013535800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000.0000
 іспів звідусіль уже весна прийшла лунає пташок 
2852865825013535800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000.0000
2852865825013535800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000.0000
 весна іспів звідусіль уже пташок лунає прийшла 
1410551877965131300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000.0000
1410551877965131300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000.0000
 іспів лунає уже прийшла пташок звідусіль весна 
1568379573993462000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000.0000
1568379573993462000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000.0000
 іспів лунає весна прийшла пташок звідусіль уже 
1568379573993462000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000.0000
1568379573993462000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000.0000
 весна лунає уже прийшла пташок звідусіль іспів 
1568379573993462000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000.0000
1568379573993462000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000.0000
 уже весна звідусіль пташок іспів лунає прийшла 
6465731112099177000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000
6465731112099177000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000
 іспів пташок уже прийшла весна звідусіль лунає 
1565358473191844000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000
1565358473191844000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000
 іспів уже весна прийшла пташок звідусіль лунає 
3988595503117031400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000
3988595503117031400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000
 весна уже звідусіль прийшла іспів лунає пташок 
1530005796608731600000000000000000000000000000000000000000000000000000000000000000000000000000.0000
1530005796608731600000000000000000000000000000000000000000000000000000000000000000000000000000.0000
 весна уже звідусіль пташок іспів лунає прийшла 
50135229987524660000000000000000000000000000000000000000000000000000000000000000000.0000
50135229987524660000000000000000000000000000000000000000000000000000000000000000000.0000

Якщо Ви вкажете 12 (або більше) груп замість 11, то отримаєте ще величезну кількість варіантів зі значенням ± 0.0

Великі значення означають (на противагу до 0), що програма знайшла варіанти, які дають більш когерентний ритмічний малюнок[cohere] і вивела їх на екран.

Але якщо Ви захочете "вручну" підібрати параметр 4, який дав такий результат, то це потрібно буде робити вручну, або застосовувати додаткове програмування, що може бути незручним для кінцевого користувача, який чи яка не програмує. Натомість, якби Ви могли узяти усі ті значення, які, наприклад, більше 1 (чи 1000), то отримали саме такі дані, як наведено.

Забігаючи наперед, скажу, що з версії 0.19.0.0 це можна зробити наступним чином:

lineVariantsG3 +d 56.csv +m GHI32 01 HI32 20000 -m весна  уже прийшла і спів пташок лунає звідусіль
0
весна звьідусьіль уже лунайе прийшла іспьів пташок
весна звьідусьіль уже лунайе пташок прийшла іспьів
весна уже звьідусьіль прийшла іспьів лунайе пташок
весна уже звьідусьіль пташок іспьів лунайе прийшла
весна іспьів звьідусьіль уже пташок лунайе прийшла
весна пташоґ звьідусьіль прийшла уже іспьів лунайе
весна пташоґ звьідусьіль прийшла іспьів уже лунайе
весна іспьів уже звьідусьіль лунайе пташок прийшла
весна лунайе уже прийшла пташоґ звьідусьіль іспьів
весна лунайе уже пташок прийшла звьідусьіль іспьів
звьідусьіль весна пташок прийшла лунайе іспьів уже
звьідусьіль весна пташок прийшла уже іспьів лунайе
уже весна звьідусьіль пташок іспьів лунайе прийшла
уже весна звьідусьіль іспьів пташок лунайе прийшла
уже весна звьідусьіль іспьів прийшла пташок лунайе
уже весна звьідусьіль іспьів пташок прийшла лунайе
звьідусьіль прийшла весна уже пташок лунайе іспьів
звьідусьіль пташок весна іспьів прийшла лунайе уже
іспьів звьідусьіль весна уже прийшла лунайе пташок
іспьів звьідусьіль весна уже пташок лунайе прийшла
уже лунайе весна звьідусьіль прийшла іспьів пташок
уже лунайе весна звьідусьіль пташок прийшла іспьів
пташок іспьів весна звьідусьіль лунайе прийшла уже
пташок іспьів весна звьідусьіль уже лунайе прийшла
пташок іспьів весна звьідусьіль уже прийшла лунайе
іспьів лунайе весна прийшла пташоґ звьідусьіль уже
іспьів лунайе весна пташок прийшла звьідусьіль уже
іспьів уже весна прийшла пташоґ звьідусьіль лунайе
лунайе пташок весна іспьів прийшла уже звьідусьіль
іспьів звьідусьіль уже весна прийшла лунайе пташок
іспьів звьідусьіль уже весна пташок лунайе прийшла
іспьів прийшла звьідусьіль весна уже лунайе пташок
іспьів пташоґ звьідусьіль весна уже лунайе прийшла
лунайе пташок уже весна звьідусьіль іспьів прийшла
лунайе прийшла уже весна пташок іспьів звьідусьіль
пташок прийшла уже весна іспьів лунайе звьідусьіль
уже прийшла звьідусьіль іспьів весна пташок лунайе
уже пташоґ звьідусьіль іспьів весна прийшла лунайе
пташок прийшла лунайе звьідусьіль весна іспьів уже
прийшла іспьів уже звьідусьіль весна лунайе пташок
іспьів пташок уже прийшла весна звьідусьіль лунайе
прийшла пташоґ звьідусьіль уже іспьів весна лунайе
пташок прийшла звьідусьіль іспьів уже весна лунайе
пташок прийшла лунайе звьідусьіль уже весна іспьів
лунайе пташок уже іспьів прийшла весна звьідусьіль
звьідусьіль уже прийшла лунайе іспьів пташок весна
звьідусьіль пташок уже іспьів прийшла лунайе весна
прийшла лунайе звьідусьіль уже іспьів пташок весна
іспьів лунайе уже прийшла пташоґ звьідусьіль весна
іспьів лунайе уже пташок прийшла звьідусьіль весна

При цьому правило, що вище у виводі відображаються ті варіанти рядка, які мають вище значення властивості, не діє.

lineVariantsG3 +r +d 56.csv +u 01 GHI32 весна уже прийшла і спів пташок лунає звідусіль
0
1     пташок прийшла уже весна іспьів лунайе звьідусьіль
2     лунайе пташок уже іспьів прийшла весна звьідусьіль
3     лунайе пташок весна іспьів прийшла уже звьідусьіль
4     лунайе прийшла уже весна пташок іспьів звьідусьіль
5     звьідусьіль пташок уже іспьів прийшла лунайе весна
6     іспьів лунайе уже пташок прийшла звьідусьіль весна
7     звьідусьіль уже прийшла лунайе іспьів пташок весна
8     прийшла лунайе звьідусьіль уже іспьів пташок весна
9     іспьів лунайе уже прийшла пташоґ звьідусьіль весна
10    уже прийшла звьідусьіль іспьів весна пташок лунайе
11    іспьів уже весна прийшла пташоґ звьідусьіль лунайе
12    уже весна звьідусьіль іспьів прийшла пташок лунайе
13    весна пташоґ звьідусьіль прийшла іспьів уже лунайе
14    пташок прийшла звьідусьіль іспьів уже весна лунайе
15    звьідусьіль весна пташок прийшла уже іспьів лунайе
16    весна пташоґ звьідусьіль прийшла уже іспьів лунайе
17    прийшла пташоґ звьідусьіль уже іспьів весна лунайе
18    уже пташоґ звьідусьіль іспьів весна прийшла лунайе
19    уже весна звьідусьіль іспьів пташок прийшла лунайе
20    пташок іспьів весна звьідусьіль уже прийшла лунайе
21    іспьів пташок уже прийшла весна звьідусьіль лунайе
22    пташок іспьів весна звьідусьіль лунайе прийшла уже
23    звьідусьіль пташок весна іспьів прийшла лунайе уже
24    іспьів лунайе весна пташок прийшла звьідусьіль уже
25    іспьів лунайе весна прийшла пташоґ звьідусьіль уже
26    звьідусьіль весна пташок прийшла лунайе іспьів уже
27    пташок прийшла лунайе звьідусьіль весна іспьів уже
28    весна звьідусьіль уже лунайе прийшла іспьів пташок
29    уже лунайе весна звьідусьіль прийшла іспьів пташок
30    весна уже звьідусьіль прийшла іспьів лунайе пташок
31    прийшла іспьів уже звьідусьіль весна лунайе пташок
32    іспьів звьідусьіль весна уже прийшла лунайе пташок
33    іспьів звьідусьіль уже весна прийшла лунайе пташок
34    іспьів прийшла звьідусьіль весна уже лунайе пташок
35    весна уже звьідусьіль пташок іспьів лунайе прийшла
36    уже весна звьідусьіль пташок іспьів лунайе прийшла
37    лунайе пташок уже весна звьідусьіль іспьів прийшла
38    пташок іспьів весна звьідусьіль уже лунайе прийшла
39    уже весна звьідусьіль іспьів пташок лунайе прийшла
40    весна іспьів уже звьідусьіль лунайе пташок прийшла
41    весна іспьів звьідусьіль уже пташок лунайе прийшла
42    іспьів звьідусьіль весна уже пташок лунайе прийшла
43    іспьів звьідусьіль уже весна пташок лунайе прийшла
44    іспьів пташоґ звьідусьіль весна уже лунайе прийшла
45    весна лунайе уже пташок прийшла звьідусьіль іспьів
46    весна звьідусьіль уже лунайе пташок прийшла іспьів
47    уже лунайе весна звьідусьіль пташок прийшла іспьів
48    пташок прийшла лунайе звьідусьіль уже весна іспьів
49    весна лунайе уже прийшла пташоґ звьідусьіль іспьів
50    звьідусьіль прийшла весна уже пташок лунайе іспьів

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
1
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 
23
1    пташок прийшлаужевесна іспьів лунайе звьідусьіль
2    лунайе прийшлаужевесна пташок іспьів звьідусьіль

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
1
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 
021
1    лунайе прийшлаужевеснапташок іспьів звьідусьіль

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
1
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 

лунайе прийшлаужевеснапташок іспьів звьідусьіль

Так можна пропонувати такий рядок:

Лунає: "Прийшла уже весна пташок", – і спів звідусіль

(потрібно додати, що потрібен певний рівень образного мислення та асоціативності для розуміння такого рядка).

Якщо подивитися на початковий вивід, то це був 4 рядок. Але він міг бути і 50, програма не впорядковує у такому режимі дані, але замість 5040 варіантів на першому етапі пропонує лише 50 (читати усі не потрібно, взагалі кажучи), а далі значно менше.

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

Ще один приклад.

lineVariantsG3 +r +d 56.csv +u 01 GHK32 весна { уже / вже } прийшла і спів пташок { лунає / звучить } \ 
       звідусіль
0
1     пташоґ звучить іспьів вжеприйшла весна звьідусьіль
2     пташок іспьів звучить вжеприйшла весна звьідусьіль
3     пташоґ звучить вжеприйшла іспьів весна звьідусьіль
4     пташоґ звучить вжеприйшла весна іспьів звьідусьіль
5     пташок вжеприйшла весна звучить іспьів звьідусьіль
6     пташок вжеприйшла звучидь звьідусьіль іспьів весна
7     звьідусьіль весна вжеприйшла іспьів пташоґ звучить
8     звьідусьіль весна пташок вжеприйшла іспьів звучить
9     пташок вжеприйшла весна звьідусьіль іспьів звучить
10    звьідусьіль пташок весна звучить іспьів вжеприйшла
11    пташоґ звучидь звьідусьіль іспьів весна вжеприйшла
12    звьідусьіль весна звучить вжеприйшла іспьів пташок
13    звьідусьіль весна звучить іспьів вжеприйшла пташок
14    звучить пташоґ звьідусьіль вжеприйшла весна іспьів
15    пташоґ звьідусьіль звучить вжеприйшла весна іспьів
16    пташок вжеприйшла весна звучидь звьідусьіль іспьів
17    пташоґ звьідусьіль вжеприйшла звучить весна іспьів

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
1
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 
012
1    весна звьідусьіль пташоґзвучить вжеприйшла іспьів
2    пташоґзвучить іспьів вжеприйшла весна звьідусьіль

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
2
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 
021
(/ Ви вказали властивості(ість) та діапазон(и) для них такі, що для даних слів та їх сполучень варіантів 
немає. Спробуйте змінити параметри виклику програми (бібліотеки) /)
1     пташок весна іспьів вжеприйшла лунайе звьідусьіль
2     пташок іспьів весна вжеприйшла лунайе звьідусьіль
3     вжеприйшла лунайе пташок іспьів весна звьідусьіль
4     лунайе весна вжеприйшла іспьів пташоґ звьідусьіль
5     пташок вжеприйшла весна лунайе іспьів звьідусьіль
6     вжеприйшла лунайе пташок весна іспьів звьідусьіль
7     звьідусьіль лунайе пташок іспьів вжеприйшла весна
8     пташоґ звьідусьіль вжеприйшла лунайе іспьів весна
9     пташок вжеприйшла лунайе звьідусьіль іспьів весна
10    звьідусьіль весна пташок вжеприйшла іспьів лунайе
11    пташок вжеприйшла весна звьідусьіль іспьів лунайе
12    звьідусьіль лунайе пташок іспьів весна вжеприйшла
13    пташоґ звьідусьіль лунайе іспьів весна вжеприйшла
14    лунайе звьідусьіль вжеприйшла іспьів весна пташок
15    вжеприйшла звьідусьіль лунайе весна іспьів пташок
16    звьідусьіль лунайе пташок весна вжеприйшла іспьів
17    пташоґ звьідусьіль вжеприйшла весна лунайе іспьів
18    пташоґ звьідусьіль вжеприйшла лунайе весна іспьів

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
4
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 

лунайе весна вжеприйшла іспьів пташоґ звьідусьіль
1      пташоґ звучить прийшла весна іспьів уже звьідусьіль
2      уже пташок прийшла весна звучить іспьів звьідусьіль
3      пташоґ звучить прийшла весна уже іспьів звьідусьіль
4      звучить пташок прийшла уже весна іспьів звьідусьіль
5      весна іспьів уже пташоґ звучить прийшла звьідусьіль
6      прийшла звьідусьіль пташок іспьів звучить уже весна
7      пташоґ звьідусьіль прийшла іспьів звучить уже весна
8      пташок прийшла іспьів звьідусьіль звучить уже весна
9      пташок іспьів прийшла звьідусьіль звучить уже весна
10     пташок іспьів звьідусьіль прийшла уже звучить весна
11     прийшла пташоґ звьідусьіль іспьів уже звучить весна
12     пташоґ звучидь звьідусьіль іспьів уже прийшла весна
13     прийшла звучидь звьідусьіль іспьів уже пташок весна
14     звучить прийшла пташок уже іспьів звьідусьіль весна
15     пташоґ звьідусьіль звучить уже прийшла іспьів весна
16     уже звьідусьіль весна прийшла іспьів пташоґ звучить
17     прийшла весна звьідусьіль уже іспьів пташоґ звучить
18     прийшла уже звьідусьіль весна іспьів пташоґ звучить
19     прийшла уже звьідусьіль іспьів весна пташоґ звучить
20     весна іспьів звьідусьіль прийшла уже пташоґ звучить
21     пташок іспьів прийшла весна звьідусьіль уже звучить
22     пташоґ звьідусьіль прийшла іспьів весна уже звучить
23     прийшла звьідусьіль пташок іспьів весна уже звучить
24     прийшла пташоґ звьідусьіль іспьів уже весна звучить
25     весна прийшла пташок уже іспьів звьідусьіль звучить
26     прийшла пташоґ звьідусьіль уже іспьів весна звучить
27     прийшла весна уже пташоґ звьідусьіль іспьів звучить
28     прийшла уже весна пташоґ звьідусьіль іспьів звучить
29     прийшла уже пташоґ звьідусьіль весна іспьів звучить
30     звьідусьіль пташок уже весна іспьів прийшла звучить
31     весна іспьів звьідусьіль пташок уже прийшла звучить
32     весна звьідусьіль звучить пташок іспьів прийшла уже
33     звьідусьіль пташок весна звучить іспьів прийшла уже
34     пташоґ звучидь звьідусьіль іспьів весна прийшла уже
35     пташок іспьів прийшла звьідусьіль звучить весна уже
36     прийшла звучидь звьідусьіль іспьів весна пташок уже
37     прийшла весна звучить пташоґ звьідусьіль іспьів уже
38     прийшла звучить весна пташоґ звьідусьіль іспьів уже
39     прийшла звучить пташоґ звьідусьіль весна іспьів уже
40     прийшла пташоґ звучидь звьідусьіль іспьів весна уже
41     прийшла пташоґ звьідусьіль весна іспьів звучить уже
42     прийшла пташоґ звьідусьіль іспьів весна звучить уже
43     прийшла звьідусьіль пташок іспьів звучить весна уже
44     пташоґ звьідусьіль звучить весна прийшла іспьів уже
45     пташоґ звучить весна прийшла звьідусьіль іспьів уже
46     пташоґ звьідусьіль прийшла іспьів звучить весна уже
47     пташок прийшла іспьів звьідусьіль звучить весна уже
48     звучить весна уже прийшла звьідусьіль іспьів пташок
49     звьідусьіль звучить уже весна прийшла іспьів пташок
50     звучить уже весна прийшла звьідусьіль іспьів пташок
51     звьідусьіль уже звучить весна прийшла іспьів пташок
52     прийшла весна звучидь звьідусьіль уже іспьів пташок
53     прийшла звучить весна звьідусьіль уже іспьів пташок
54     прийшла звучидь звьідусьіль уже іспьів весна пташок
55     прийшла звучить уже звьідусьіль іспьів весна пташок
56     прийшла весна уже звучидь звьідусьіль іспьів пташок
57     звьідусьіль прийшла уже весна звучить іспьів пташок
58     прийшла уже весна звучидь звьідусьіль іспьів пташок
59     прийшла уже звучидь звьідусьіль весна іспьів пташок
60     прийшла весна звьідусьіль уже іспьів звучить пташок
61     прийшла уже звьідусьіль весна іспьів звучить пташок
62     прийшла весна звучидь звьідусьіль іспьів уже пташок
63     прийшла звучить весна звьідусьіль іспьів уже пташок
64     прийшла звучидь звьідусьіль іспьів уже весна пташок
65     звучить весна звьідусьіль уже іспьів прийшла пташок
66     звучить уже звьідусьіль весна іспьів прийшла пташок
67     звучить уже звьідусьіль іспьів весна прийшла пташок
68     весна уже звьідусьіль звучить іспьів прийшла пташок
69     звьідусьіль уже звучить іспьів весна прийшла пташок
70     весна іспьів уже звучидь звьідусьіль прийшла пташок
71     звучить весна уже пташоґ звьідусьіль іспьів прийшла
72     звучить уже весна пташоґ звьідусьіль іспьів прийшла
73     звучить уже пташок весна іспьів звьідусьіль прийшла
74     звьідусьіль уже звучить весна пташок іспьів прийшла
75     пташоґ звучить весна звьідусьіль уже іспьів прийшла
76     пташоґ звучидь звьідусьіль уже іспьів весна прийшла
77     пташоґ звучить уже звьідусьіль іспьів весна прийшла
78     звьідусьіль пташок уже весна іспьів звучить прийшла
79     пташоґ звучить весна звьідусьіль іспьів уже прийшла
80     пташоґ звучидь звьідусьіль іспьів уже весна прийшла
81     звучить весна звьідусьіль уже іспьів пташок прийшла
82     звучить уже звьідусьіль весна іспьів пташок прийшла
83     звучить уже звьідусьіль іспьів весна пташок прийшла
84     весна уже звьідусьіль звучить іспьів пташок прийшла
85     звьідусьіль уже звучить іспьів весна пташок прийшла
86     весна іспьів уже звучидь звьідусьіль пташок прийшла
87     пташоґ звучидь звьідусьіль весна уже прийшла іспьів
88     пташоґ звучить весна звьідусьіль уже прийшла іспьів
89     пташоґ звьідусьіль звучить уже прийшла весна іспьів
90     пташоґ звьідусьіль весна уже прийшла звучить іспьів
91     пташоґ звьідусьіль звучить весна прийшла уже іспьів
92     пташоґ звучить весна прийшла звьідусьіль уже іспьів
93     звьідусьіль звучить весна прийшла уже пташок іспьів
94     прийшла весна звьідусьіль звучить уже пташок іспьів
95     прийшла весна звучидь звьідусьіль уже пташок іспьів
96     прийшла звучидь звьідусьіль весна уже пташок іспьів
97     прийшла звучить весна звьідусьіль уже пташок іспьів
98     прийшла уже звьідусьіль звучить весна пташок іспьів
99     прийшла звьідусьіль весна уже пташоґ звучить іспьів
100    прийшла весна звучить пташоґ звьідусьіль уже іспьів
101    прийшла звучить весна пташоґ звьідусьіль уже іспьів
102    прийшла звучить пташоґ звьідусьіль весна уже іспьів
103    прийшла весна пташоґ звучить уже звьідусьіль іспьів
104    прийшла пташоґ звучидь звьідусьіль уже весна іспьів
105    прийшла весна звьідусьіль пташок уже звучить іспьів
106    прийшла пташок весна звьідусьіль уже звучить іспьів

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
16
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 
567
1    уже звьідусьіль весна прийшла іспьівпташоґзвучить
2    прийшла весна звьідусьіль уже іспьівпташоґзвучить
3    прийшла уже звьідусьіль весна іспьівпташоґзвучить

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
2
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 
012
1    прийшлавесна звьідусьіль уже іспьівпташоґзвучить

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
1
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 

прийшлавесна звьідусьіль уже іспьівпташоґзвучить
1      прийшла лунайе пташок іспьів уже весна звьідусьіль
2      лунайе прийшла уже пташок іспьів весна звьідусьіль
3      прийшла лунайе пташок уже іспьів весна звьідусьіль
4      прийшла пташок уже лунайе іспьів весна звьідусьіль
5      прийшла лунайе весна іспьів уже пташоґ звьідусьіль
6      пташок іспьів прийшла весна лунайе уже звьідусьіль
7      лунайе прийшла весна пташок іспьів уже звьідусьіль
8      прийшла лунайе пташок весна іспьів уже звьідусьіль
9      прийшла звьідусьіль пташок іспьів лунайе уже весна
10     пташоґ звьідусьіль прийшла іспьів лунайе уже весна
11     пташок прийшла іспьів лунайе уже звьідусьіль весна
12     звьідусьіль прийшла лунайе пташок іспьів уже весна
13     звьідусьіль лунайе прийшла пташок іспьів уже весна
14     звьідусьіль пташок лунайе прийшла іспьів уже весна
15     прийшла пташоґ звьідусьіль уже іспьів лунайе весна
16     прийшла пташоґ звьідусьіль іспьів уже лунайе весна
17     лунайе пташок уже звьідусьіль іспьів прийшла весна
18     звьідусьіль лунайе пташок іспьів уже прийшла весна
19     пташоґ звьідусьіль лунайе уже іспьів прийшла весна
20     пташоґ звьідусьіль лунайе іспьів уже прийшла весна
21     лунайе прийшла уже звьідусьіль іспьів пташок весна
22     звьідусьіль лунайе прийшла іспьів уже пташок весна
23     прийшла уже звьідусьіль лунайе іспьів пташок весна
24     прийшла звьідусьіль лунайе уже іспьів пташок весна
25     прийшла звьідусьіль лунайе іспьів уже пташок весна
26     прийшла уже звьідусьіль лунайе пташок іспьів весна
27     прийшла звьідусьіль лунайе уже пташок іспьів весна
28     прийшла звьідусьіль лунайе пташок уже іспьів весна
29     прийшла уже пташоґ звьідусьіль лунайе іспьів весна
30     пташоґ звьідусьіль лунайе прийшла уже іспьів весна
31     уже звьідусьіль весна прийшла іспьів пташок лунайе
32     прийшла весна звьідусьіль уже іспьів пташок лунайе
33     прийшла уже звьідусьіль весна іспьів пташок лунайе
34     прийшла уже звьідусьіль іспьів весна пташок лунайе
35     весна іспьів звьідусьіль прийшла уже пташок лунайе
36     пташок іспьів прийшла весна звьідусьіль уже лунайе
37     пташоґ звьідусьіль прийшла іспьів весна уже лунайе
38     прийшла звьідусьіль пташок іспьів весна уже лунайе
39     прийшла пташоґ звьідусьіль іспьів уже весна лунайе
40     весна прийшла пташок уже іспьів звьідусьіль лунайе
41     прийшла пташоґ звьідусьіль уже іспьів весна лунайе
42     прийшла весна уже пташоґ звьідусьіль іспьів лунайе
43     прийшла уже весна пташоґ звьідусьіль іспьів лунайе
44     прийшла уже пташоґ звьідусьіль весна іспьів лунайе
45     звьідусьіль пташок уже весна іспьів прийшла лунайе
46     весна іспьів звьідусьіль пташок уже прийшла лунайе
47     звьідусьіль лунайе пташок іспьів весна прийшла уже
48     пташоґ звьідусьіль лунайе іспьів весна прийшла уже
49     звьідусьіль лунайе прийшла іспьів весна пташок уже
50     прийшла весна звьідусьіль лунайе іспьів пташок уже
51     прийшла звьідусьіль лунайе іспьів весна пташок уже
52     лунайе прийшла весна пташоґ звьідусьіль іспьів уже
53     лунайе прийшла весна пташок іспьів звьідусьіль уже
54     звьідусьіль лунайе прийшла пташок іспьів весна уже
55     прийшла весна звьідусьіль лунайе пташок іспьів уже
56     прийшла лунайе пташок весна іспьів звьідусьіль уже
57     звьідусьіль прийшла лунайе пташок іспьів весна уже
58     прийшла лунайе пташок іспьів весна звьідусьіль уже
59     прийшла весна пташоґ звьідусьіль лунайе іспьів уже
60     прийшла пташоґ звьідусьіль весна іспьів лунайе уже
61     прийшла пташоґ звьідусьіль іспьів весна лунайе уже
62     прийшла звьідусьіль пташок іспьів лунайе весна уже
63     лунайе пташок весна прийшла звьідусьіль іспьів уже
64     звьідусьіль пташок лунайе прийшла іспьів весна уже
65     пташоґ звьідусьіль прийшла іспьів лунайе весна уже
66     пташок прийшла іспьів лунайе весна звьідусьіль уже
67     весна звьідусьіль уже прийшла іспьів лунайе пташок
68     звьідусьіль лунайе прийшла весна уже іспьів пташок
69     лунайе прийшла уже звьідусьіль іспьів весна пташок
70     прийшла звьідусьіль лунайе уже весна іспьів пташок
71     прийшла звьідусьіль лунайе уже іспьів весна пташок
72     прийшла весна уже звьідусьіль лунайе іспьів пташок
73     прийшла уже звьідусьіль лунайе іспьів весна пташок
74     прийшла весна звьідусьіль уже іспьів лунайе пташок
75     прийшла уже звьідусьіль весна іспьів лунайе пташок
76     прийшла уже весна звьідусьіль іспьів лунайе пташок
77     звьідусьіль лунайе прийшла іспьів весна уже пташок
78     звьідусьіль лунайе прийшла іспьів уже весна пташок
79     прийшла весна звьідусьіль лунайе іспьів уже пташок
80     прийшла лунайе весна іспьів уже звьідусьіль пташок
81     прийшла звьідусьіль лунайе іспьів весна уже пташок
82     прийшла звьідусьіль лунайе іспьів уже весна пташок
83     прийшла весна звьідусьіль іспьів уже лунайе пташок
84     звьідусьіль весна лунайе уже іспьів прийшла пташок
85     лунайе звьідусьіль весна уже іспьів прийшла пташок
86     лунайе весна звьідусьіль уже іспьів прийшла пташок
87     лунайе уже весна іспьів звьідусьіль прийшла пташок
88     звьідусьіль весна уже лунайе іспьів прийшла пташок
89     звьідусьіль уже лунайе весна іспьів прийшла пташок
90     уже лунайе звьідусьіль весна іспьів прийшла пташок
91     звьідусьіль уже лунайе іспьів весна прийшла пташок
92     звьідусьіль весна уже іспьів лунайе прийшла пташок
93     весна уже іспьів лунайе звьідусьіль прийшла пташок
94     уже іспьів лунайе звьідусьіль весна прийшла пташок
95     звьідусьіль весна лунайе іспьів уже прийшла пташок
96     іспьів лунайе звьідусьіль весна уже прийшла пташок
97     звьідусьіль іспьів уже лунайе весна прийшла пташок
98     звьідусьіль весна лунайе уже пташок іспьів прийшла
99     весна звьідусьіль уже пташок іспьів лунайе прийшла
100    лунайе пташок уже звьідусьіль іспьів весна прийшла
101    пташоґ звьідусьіль лунайе уже весна іспьів прийшла
102    пташоґ звьідусьіль лунайе уже іспьів весна прийшла
103    звьідусьіль лунайе пташок іспьів весна уже прийшла
104    звьідусьіль лунайе пташок іспьів уже весна прийшла
105    пташоґ звьідусьіль лунайе іспьів весна уже прийшла
106    пташоґ звьідусьіль лунайе іспьів уже весна прийшла
107    звьідусьіль весна лунайе уже іспьів пташок прийшла
108    лунайе звьідусьіль весна уже іспьів пташок прийшла
109    лунайе весна звьідусьіль уже іспьів пташок прийшла
110    лунайе уже весна іспьів звьідусьіль пташок прийшла
111    звьідусьіль весна уже лунайе іспьів пташок прийшла
112    звьідусьіль уже лунайе весна іспьів пташок прийшла
113    уже лунайе звьідусьіль весна іспьів пташок прийшла
114    звьідусьіль уже лунайе іспьів весна пташок прийшла
115    звьідусьіль весна уже іспьів лунайе пташок прийшла
116    весна уже іспьів лунайе звьідусьіль пташок прийшла
117    уже іспьів лунайе звьідусьіль весна пташок прийшла
118    звьідусьіль весна лунайе іспьів уже пташок прийшла
119    іспьів лунайе звьідусьіль весна уже пташок прийшла
120    звьідусьіль іспьів уже лунайе весна пташок прийшла
121    звьідусьіль весна лунайе уже пташок прийшла іспьів
122    уже весна пташок лунайе прийшла звьідусьіль іспьів
123    пташоґ звьідусьіль лунайе уже весна прийшла іспьів
124    лунайе пташок весна прийшла звьідусьіль уже іспьів
125    пташоґ звьідусьіль лунайе прийшла уже весна іспьів
126    весна пташок прийшла уже лунайе звьідусьіль іспьів
127    звьідусьіль лунайе прийшла весна уже пташок іспьів
128    прийшла звьідусьіль лунайе уже весна пташок іспьів
129    прийшла звьідусьіль лунайе уже пташок весна іспьів
130    прийшла весна уже звьідусьіль лунайе пташок іспьів
131    прийшла уже звьідусьіль лунайе пташок весна іспьів
132    прийшла весна уже пташоґ звьідусьіль лунайе іспьів
133    прийшла уже весна пташоґ звьідусьіль лунайе іспьів
134    прийшла уже пташоґ звьідусьіль лунайе весна іспьів
135    лунайе прийшла весна пташоґ звьідусьіль уже іспьів
136    прийшла весна звьідусьіль лунайе пташок уже іспьів
137    прийшла звьідусьіль лунайе пташок уже весна іспьів
138    прийшла весна пташоґ звьідусьіль лунайе уже іспьів
139    прийшла пташок весна звьідусьіль уже лунайе іспьів
140    прийшла пташок уже звьідусьіль весна лунайе іспьів

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
7
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 
5461723
1    іспьівпташокужелунайезвьідусьільприйшлавесна

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
1
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 
1 -10
1    іспьівпташокужелунайезвьідусьільприйшлавесна

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
1
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 
1/-10
?:       іспьівпташокужелунайезвьідусьільпр ийшлавесна
1 2
?:       іспьівпташокужелунайезвьідусьіль прийшлавесна

(/ Ви вказали властивості(ість) та діапазон(и) для них такі, що для даних слів та їх сполучень варіантів 
немає. Спробуйте змінити параметри виклику програми (бібліотеки) /)
1
2    лунайе весна вжеприйшла іспьів пташоґ звьідусьіль
3    прийшлавесна звьідусьіль уже іспьівпташоґзвучить
4

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
2
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 

лунайе весна вжеприйшла іспьів пташоґ звьідусьіль

Також тут можна було б узяти іспівпташокужелунаєзвідусільприйшлавесна.

Отже, на вибір маємо варіанти:

  1. іспівпташокужелунаєзвідусільприйшлавесна — І спів пташок уже лунає звідусіль: "Прийшла весна!"

  2. лунає весна вжеприйшла іспів пташок звідусіль — Лунає: "Весна вже прийшла!", — і спів пташок звідусіль

  3. прийшлавесна звідусіль уже іспівпташокзвучить — Прийшла весна, звідусіль уже і спів пташок звучить

Вірш "Щасливе дерево"

Інший приклад.

Розглянемо вірш Олександра Сергійовича Жабенка "Щасливе дерево".

— Яке воно — щасливе дерево?
— Ти можеш бачити — цвіте воно;
Закриєш очі — плодоносить.
Радітимеш, побачивши його
і квітним, і водночас плідним.

— А навесні, коли ще квіту там нема,
Чи є щасливим дерево?
— Напевне. У надії, в тій порі,
що сонце гріє. І вранці
сяють теплі й прохолодні роси.

Приходиш ти до нього навесні
і бачиш дерево щасливим.
Прийдеш улітку, восени
і знову зустрічаєш його милим,
усміхненим, красивим і
дзвінким від співу птахів.

Уранці, ввечері чи вдень
— постійно бачиш його квітним.
Підійдеш ближче — ось воно!
Відходиш далі  — хочеш бути знов.

— А взимку чи щасливе дерево?
— Так, бо земля його тримає,
А сніг тепло оберігає та радує людей,
свята Різдвяна радість огортає.
Для дерева затих той теплий рух,
Та сили додає йому той зріст,
і гнучкість, і міцне здоров'я.

Це пори року й дерево просте. А ми — люди:
Багатші, і рухливі, і повсюди.
У щасті ми активні,
а як ні, — йдемо до нього
поступово,
людяно.

(2021 р.)
propertiesTextG3 Haskell/old/Shchaslyve_derevo.txt s 1 0 +d 56.csv HK02 | distributionTextG s 1 +W 
    5
32080.0000  281681185542160.0000    40037543026991875000000000.0000 8780585584.2319 1248053086876305500000.000
0   142137796494.7515   0.00000000      4   1   Яке воно щасливе дерево
8080.0000   4012012044040.0000  390877014825967900000000000000000.0000  496536144.0644  48375868171530680000000
000000.0000 97426680312844750000.0000   0.00000000      5   1   Ти можеш бачити цвіте воно
32080.0000  40046154607286250000000000.0000 40046154607286250000000000.0000 1248321527658548800000.0000 124
8321527658548800000.0000    1.0000  2.00000000      3   5   Закриєш очі плодоносить
80080.0000  330267809723051700000000000000000.0000  330267809723051700000000000000000.0000  41242233981400066
00000000000.0000    4124223398140006600000000000.0000   1.0000  2.00000000      3   5   Радітимеш побачивши 
його
2986128.0000    64192192104040.0000 390882788722564100000000000000000.0000  21496798.5646   13089954239153983000
0000000.0000    6089257523548000000.0000    0.00000000      3   1   іквітним іводночас плідним
0.0000  0.0000  540358389343642500000000000000000000000.0000    NaN Infinity    Infinity    0.00000000      4   1   Анавесні 
колищеквіту там нема
8080.0000   10859489273691456000000.0000    330267809723051700000000000000000.0000  1343996197239041500.0000    408
74728926120260000000000000.0000 30412830787.8317    0.00000000      3   1   Чийе щасливим дерево
128080.0000 746640.0000 16819198377986623000.0000   5.8295  131317913632000.5000    22526516631826.0800 0.000000
00      4   1   Напевне Унадії втій порі
32080.0000  32080.0000  66193821698576040.0000  1.0000  2063398432000.5000  2063398432000.5000  0.00000000      3   1   
щосонце гріє Івранці
32080.0000  8274227712336040.0000   390877014825967900000000000000000.0000  257924804000.5000   1218444559931321
5000000000000.0000  47240301864451910.0000  0.00000000      4   1   сяють теплі йпрохолодні роси
8080.0000   80080.0000  390882788722564100000000000000000.0000  9.9109  48376582762693580000000000000.0000  4881
153705326724000000000000.0000   0.00000000      4   1   Приходиш ти донього навесні
8080.0000   64192192104040.0000 330267809723051700000000000000000.0000  7944578230.6980 408747289261202600000
00000000.0000   5144984131212836000.0000    0.00000000      3   1   ібачиш дерево щасливим
8080.0000   128080.0000 19549744764008910000000.0000    15.8515 2419522866832786000.0000    152636982854535550.000
0   0.00000000      3   1   Прийдеш улітку восени
186768.0000 16778002444290623000.0000   390882788722564100000000000000000.0000  89833389254533.0200 209287880
5376531700000000000.0000    23297337690851.1130 0.00000000      4   1   ізнову зустрічаєш його милим
5473632528.0000 800806523400.0000   40037543026991875000000000.0000 146.3026    7314620194575085.0000   499965245
75004.3200  0.00000000      3   1   усміхненим красивим і
80080.0000  1124865040.0000 390882788722564100000000000000000.0000  14046.7662  4881153705326724000000000000.
0000    347493054564629400000000.0000   0.00000000      3   1   дзвінким відспіву птахів
80080.0000  8195072384336040.0000   390882788722564100000000000000000.0000  102336068735.4650   4881153705326724
000000000000.0000   47697295446675080.0000  0.00000000      3   1   Уранці ввечері чивдень
186768.0000 746640.0000 390882788722564100000000000000000.0000  3.9977  2092878805376531700000000000.0000   52
3522432126010000000000000.0000  0.00000000      4   1   постійно бачиш його квітним
8080.0000   4162416044040.0000  390882788722564100000000000000000.0000  515150500.5000  48376582762693580000000
000000.0000 93907669148607530000.0000   0.00000000      4   1   Підійдеш ближче ось воно
8080.0000   65939268040.0000    936370660453775300000000000000000000000000000000000000000000000000.0000 8160800
.5000   115887457976952380000000000000000000000000000000000000000000000.0000    1420050128378366700000000000000
0000000000000000000000000.0000  0.00000000      5   1   Відходиш далі хочеш бути знов
2986128.0000    16778002444290623000.0000   40037543026991875000000000.0000 5618648110292.1990  1340784555350335
7000.0000   2386311.6697    0.00000084      3   1   Авзимку чищасливе дерево
8080.0000   70305040.0000   330267809723051700000000000000000.0000  8701.1188   40874728926120260000000000000.000
0   4697640591955452000000000.0000  0.00000000      4   1   Так боземля його тримає
0.0000  127563422704616470000000000000.0000 Infinity    Infinity    Infinity    Infinity    0.00000000      5   1   Асніг тепло
оберігає тарадує людей
186768.0000 85525776.0000   4615475325100448500000000000000000000000.0000   457.9252    2471234539696547600000000
0000000000.0000 53965898246868270000000000000000.0000   0.00000000      4   1   свята Різдвяна радість огортає
80080.0000  1124865040.0000 330267809723051700000000000000000.0000  14046.7662  4124223398140006600000000000.
0000    293606608774197230000000.0000   0.00000000      5   1   Длядерева затих той теплий рух
8080.0000   281217040.0000  390882788722564100000000000000000.0000  34804.0891  48376582762693580000000000000.0
000 1389968362950424500000000.0000  0.00000000      5   1   Тасили додає йому той зріст
2986128.0000    64192192104040.0000 40046154607286250000000000.0000 21496798.5646   13410729415244840000.0000   6
23847749931.6604    0.00000000      3   1   ігнучкість іміцне здоров'я
0.0000  0.0000  Infinity    NaN Infinity    Infinity    0.00000000      6   1   Цепори року йдерево просте Ами люд
и
281217040.0000  1124865040.0000 2779936725900849000000000.0000  4.0000  9885377948295200.0000   247135134175816
2.5000  0.00000000      3   1   Багатші ірухливі іповсюди
5473632528.0000 12812904023400.0000 43437957094765720000000.0000    2340.8411   7935855553430.3340  3390172674.0
039 0.00000000      3   1   Ущасті ми активні
16048048056040.0000 16048048056040.0000 266394626564040.0000    1.0000  16.5998 16.5998 0.11363756      2   1   айакні
йдемо донього
    поступово
    людяно
------------------------------------------------------------------------------------------------------
1   2   3   4   5   
29  0   0   0   2   
93.55%  0.00%   0.00%   0.00%   6.45%   
0.1327+-0.4989  0   31
2   3   4   5   6   7   
1   14  10  5   1   0   
******************************************************************************************************
1   .   .   .   .   
12  .   .   .   2   
10  .   .   .   .   
5   .   .   .   .   
1   .   .   .   .   
.   .   .   .   .   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1   0   0   0   0   
12  0   0   0   2   
10  0   0   0   0   
5   0   0   0   0   
1   0   0   0   0   
0   0   0   0   0   
======================================================================================================

Як бачимо, наявність Infinity часто дозволяє отримати лише обмежену інформацію.

Подивимося, наприклад, на наступний рядок: "Для дерева затих той теплий рух".


lineVariantsG3 +d 56.csv 3 HK02 Для дерева затих той теплий рух
0
 затих теплий той Длядерева рух 
330267809723051700000000000000000.0000
330267809723051700000000000000000.0000
 затих той теплий Длядерева рух 
40037543026991875000000000.0000
40037543026991875000000000.0000
 рух затих теплий той Длядерева 
40037543026991875000000000.0000
40037543026991875000000000.0000
 рух затих теплий Длядерева той 
40037543026991875000000000.0000
40037543026991875000000000.0000
 рух теплий затих той Длядерева 
2779936725900849000000000.0000
2779936725900849000000000.0000

Працювати з великими числами незручно, а з Infinity у підході інтералів ще більш незручно.

Тому скористаємося іншою додатковою властивістю.

lineVariantsG3 +d 56.csv +m GHK02 2118 HK02 15 -m Для дерева затих той теплий рух
0
затих рух теплий дльадерева той
затих теплий той дльадерева рух
затих той теплий дльадерева рух
руг затих теплий дльадерева той
руг затих той дльадерева теплий
рух теплий той дльадерева затих
затих рух теплий той дльадерева
руг затих теплий той дльадерева
руг затих той теплий дльадерева
рух теплий затих той дльадерева

або навіть таким варіантом:

lineVariantsG3 +d 56.csv +m GHK02 2118 HK02 15 GHK02 23 -m Для дерева затих той теплий рух
0
затих той теплий дльадерева рух
руг затих теплий дльадерева той
руг затих той дльадерева теплий
руг затих теплий той дльадерева
рух теплий затих той дльадерева

Можна бачити, що з-поміж цих кількох варіантів цікавим у звучанні є "рух затих той для дерева теплий", але заміна не вписується в загальний ритмічний малюнок вірша, тому її не можна рекомендувати тут.

Загальна структура додаткових властивостей

Опишемо загальну структуру додаткових властивостей.

Вона так само задається буквенно-числовими та числовими аргументами, але завжди складається лише з двох компонент.

Перша — позначення типу додаткової властивості — до типу властивості додається в написанні серед літер (зазвичай, зручно з неї починати) латинська літера Ǵ.́ Наприклад, щоб застосувати додаткову властивість до властивості Hw02, позначаємо її GHw02.

Друга — антиінтервальний рядок вибірки (новий термін) — послідовність десяткових цифр, яка розуміється програмою lineVariantsG3 зігдно таблиці:

Перша цифра Тип нерівності Друга цифра Вираз Параметр 1 Параметр 2
0 \(>\)
1 \(<\)
2 \(>\) 1 \(\lg y >\)
2 \(637.0 \cdot \arctan y > base\) \(base\)
3 \(100.0 \cdot \sin (k \cdot y) > 0.5 \cdot base1\) \(k\) \(base1\)
4 \(100.0 \cdot \cos (k \cdot y) > 0.5 \cdot base1\) \(k\) \(base1\)
5 \(1000.0 \cdot \sin (k \cdot y) > base2\) \(k\) \(base2\)
6 \(1000.0 \cdot \cos (k \cdot y) > base2\) \(k\) \(base2\)
7 \(100.0 \cdot \sin (k \cdot y) > -0.5 \cdot base1\) \(k\) \(base1\)
8 \(100.0 \cdot \cos (k \cdot y) > -0.5 \cdot base1\) \(k\) \(base1\)
_ \(y^k > base1\) \(k\) \(base1\)
_ \(<\) 1 \(\lg y <\)
2 \(637.0 \cdot \arctan y < base\) \(base\)
3 \(100.0 \cdot \sin (k \cdot y) < 0.5 \cdot base1\) \(k\) \(base1\)
4 \(100.0 \cdot \cos (k \cdot y) < 0.5 \cdot base1\) \(k\) \(base1\)
5 \(1000.0 \cdot \sin (k \cdot y) < base2\) \(k\) \(base2\)
6 \(1000.0 \cdot \cos (k \cdot y) < base2\) \(k\) \(base2\)
7 \(100.0 \cdot \sin (k \cdot y) < -0.5 \cdot base1\) \(k\) \(base1\)
8 \(100.0 \cdot \cos (k \cdot y) < -0.5 \cdot base1\) \(k\) \(base1\)
_ \(y^k < base1\) \(k\) \(base1\)

де \(base > 0, base \in N\),

\(base1 \in [1..100], base1 \in N\),

\(base2 \in [1..1000], base2 \in N\),

\(k \in [0..9]\) — цифра, \(base1 > 0, base1 \in N\).

Підкреслення в таблиці означає будь-яку іншу цифру, крім тих, які стоять вище у тому ж стовпчику.

Таким чином, наприклад, GHw02 2118 означає, що буде використана для обчислення властивість Hw02, але з неї будуть узяті лише ті значення, які без перестановки інтервалів задовольняють нерівність: \(\lg y > 18\), тобто числа, порядок яких більше 18 (вони більші за 1 000 000 000 000 000 000) (у тому числі Infinity). Gt32 01 означає, щодля властивості t32 будуть узяті лише ті, значення для яких задовольняють нерівість \(y > 1\). Gw02 0100000 та Gw02 215 фактично еквівалентні, але перша з них не обчислює десятковий логарифм (можна очікувати, що вона працює дещо швидше).

Режим склад-як-одне-ціле (SaaW)

Цей режим викликається через задання серед властивостей хоча б однієї з додатковою літерою ’a’ в позначенні та додатковим заданням як аргумента командного рядка послідовно поза групами +m …-m та +a …-a аргументів "+s" натуральне число більше 0 — кількість множин груп пар "склад-число". Дозволяє задавати як тривалості складів, так і просодичні властивості, наприклад, логічні наголоси, динамічні наголоси, мелодичні наголоси (хоча методика останнього поки у процесі дослідження), інтонаційні особливості, загальні характеристики вимови тощо. При цьому у багатьох випадках зручною є система чисел "2-3-4-6-8-11-15", кожне з яких більше за попереднє не менше, ніж у 1,3 рази. Якщо пропустити ввід числа, то воно приймається програмою рівним 4. Можна задавати і числа з плаваючою крапкою, формат – Double (але враховуючи спосіб обчислення більшості властивостей, це скоріше всього буде надлишкова точність, і тому можна обмежитися лише цими числами).

Наприклад, якщо задавати силу наголошення складів, де склад біля наголошеного у невиділеному логічним наголосом слові відповідає значенню 4.0 за замовчуванням (натиснено просто Enter на місці порожнього чиса, яке тоді приймається програмою рівним 4; 6 – наголошений склад у логічно ненаголошеному слові, 8 – наголошений склад у логічно наголошеному слові з невеликим підсиленням, 3 – склад вимовляється трохи "побіжно", він віддалений від наголошеного):

lineVariantsG3 3 +i a01y +s 1  десь тут була подоляночка
0
?  десь   6
?  туд   
?  бу   6
?  ла   
?  по   3
?  до   
?  льа   8
?  но   6
?  чка   
1     подольаночка дезь була тут
2     десь туд була подольаночка
3     туд була десь подольаночка
4     дезь була тут подольаночка
5     десь подольаночка туд була
6     тут подольаночка дезь була

Please, specify the variant which you would like to become the resulting string by its number. 
2
десь туд була подольаночка

Звернемо увагу, що слова пишуться "у фонетичній транскрипції", тобто не за правилами орфографії, а за особливостями вимови.

N.B.: Це хороший спосіб побачити, як приблизно власне насправді звучить текст українською (з певними зауваженнями, про які далі по тексту).

lineVariantsG3 0.001_100.0 3 +i a01y +s 1 +u десь тут була подоляночка
0
?  десь   6
?  туд   
?  бу   
?  ла   6
?  по   3
?  до   
?  льа   8
?  но   6
?  чка   
1     подольаночка дезь була тут
2     десь туд була подольаночка
3     туд була десь подольаночка
4     дезь була тут подольаночка
5     десь подольаночка туд була
6     тут подольаночка дезь була

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
2
десь туд була подольаночка

Цікаво, що з точки зору цієї властивості, наголоси більше ритмізуються за трискладовим паттерном, тобто більше відповідають трискладовій стопі (наразі дактилю).

Інший приклад подібного підходу:

lineVariantsG3 3 aw01 +s 1 садок вишневий колохати
0
?  са   
?  док   6
?  ви   
?  шне   6
?  вий   
?  ко   6
?  ло   
?  ха   6
?  ти   
 садок вишневий колохати 
4.0000
4.0000
 вишневий колохати садок 
0.8125
0.8125
 вишневий садок колохати 
0.4375
0.4375

Розглянемо детальніше значення параметрів, з якими викликається режим. Число після "+s" має бути натуральним, не менше 1 — позначає кількість множин пар "склад-число", які кодують обчислення. Якщо вказати 1, як у прикладах вище, то така множина лише одна — отже, при виконанні буде запопоновано ввести числові значення для складів лише один раз підряд. Якщо сказати 2 — то буде запропоновано двічі, 3 — тричі і т. д. При цьому остання цифра у позначенні властивостей з літерою ’a’ має бути не більшою за це число. Немає сенсу і вказувати більше число, ніж найбільша остання цифра у записі таких властивостей, бо це призведе до зайвого вводу даних, які ніде не будуть використані, що просто забере час.

Інший приклад, у даному разі з 2:

lineVariantsG3 100.0_-100.0 3 a02y +s 2 хрущі над вишнями гудуть
0
?  хру   
?  шчьі   6
?  на   
?  дви   6
?  шньа   
?  ми   6
?  гу   
?  дуть   6
?  хру   
?  шчьі   6
?  на   
?  дви   6
?  шньа   
?  ми   6
?  гу   6
?  дуть   8
 гудуть хрущі надвишнями 
924.0000
924.0000
 хрущі гудуть надвишнями 
924.0000
924.0000
 хрущі надвишнями гудуть 
624.0000
624.0000
 надвишнями гудуть хрущі 
624.0000
624.0000
 надвишнями хрущі гудуть 
-355.5556
-355.5556
 гудуть надвишнями хрущі 
-355.5556
-355.5556

Якщо зрозуміти, що перед нами очікується двоскладова стопа, то доцільно спробувати викликати її з першим аргументом 10.0_0.0, щоб нівелювати вплив трискладовості:

lineVariantsG3 100.0_0.0 3 a02y +s 2 хрущі над вишнями гудуть
0
?  хру   
?  шчьі   6
?  на   
?  дви   6
?  шньа   
?  ми   3
?  гу   
?  дуть   6
?  хру   
?  шчьі   6
?  на   
?  дви   6
?  шньа   
?  ми   6
?  гу   
?  дуть   6
 хрущі надвишнями гудуть 
1024.0000
1024.0000
 надвишнями гудуть хрущі 
1024.0000
1024.0000
 гудуть хрущі надвишнями 
1024.0000
1024.0000
 хрущі гудуть надвишнями 
1024.0000
1024.0000
 надвишнями хрущі гудуть 
44.4444
44.4444
 гудуть надвишнями хрущі 
44.4444
44.4444

Але бачимо також, що в максимумі знаходиться більша частина варіантів, що зменшує в загальному випадку можливості використання.

Зверніть увагу, пропонувалося двічі ввести дані для тих же складів, і використовувалися дані другого вводу.

Також схоже, що Тарас Шевченко повторює семантичну структуру першого рядка, щоб створити ідилічний гармонійний настрій. Відповідність між: хрущі – садок, вишневий – над вишнями, (є) колохати – гудуть підсилює перевагу саме обраного ним вартіанта рядка.

З іншого боку, комбінована властивість з врахуванням як двоскладових, так і трискладових стоп дає наступне:

lineVariantsG3 3 a02y +s 2 хрущі над вишнями гудуть
0
?  хру   
?  шчьі   6
?  на   
?  дви   6
?  шньа   
?  ми   3
?  гу   
?  дуть   6
?  хру   
?  шчьі   6
?  на   
?  дви   6
?  шньа   
?  ми   3
?  гу   6
?  дуть   8
 хрущі надвишнями гудуть 
14.2400
14.2400
 надвишнями гудуть хрущі 
14.2400
14.2400
 гудуть хрущі надвишнями 
11.2400
11.2400
 хрущі гудуть надвишнями 
11.2400
11.2400
 надвишнями хрущі гудуть 
4.4444
4.4444
 гудуть надвишнями хрущі 
4.4444
4.4444

SaaW у режимі кількох властивостей

Все вищесказане стосується і режиму кількох властивостей. При цьому літера ’H’ у позначенні властивості, якщо у ній же використовується ’a’, ігнорується, тобто SaaW має пріоритет над режимом власних тривалостей PhoPaaW (’H’).

Наприклад:

lineVariantsG3 100.0_0.001 +m ax01 5 02y 20 -m +s 1 +v 3 якісь цікаві ми отримуємо результати
3
?  йа   
?  кьісь   6
?  цьі   6
?  ка   8
?  вьі   6
?  ми   6
?  о   
?  три   6
?  му   
?  йе   3
?  мо   
?  ре   
?  зуль   6
?  та   8
?  ти   6
 цікаві результати ми отримуємо якісь ->5.640625->5.640625
 цікаві результати ми якісь отримуємо ->2.375->2.375
 цікаві результати якісь ми отримуємо ->1.1875->1.1875
 якісь цікаві результати ми отримуємо ->1.125->1.125
 ми якісь цікаві результати отримуємо ->1.125->1.125
 отримуємо ми якісь цікаві результати ->1.0->1.0
 якісь результати цікаві ми отримуємо ->1.0->1.0
 результати ми якісь отримуємо цікаві ->1.0->1.0


 отримуємо цікаві якісь ми результати ->10000.036->10000.036
 результати ми отримуємо цікаві якісь ->3600.144->3600.144
 отримуємо цікаві якісь результати ми ->3600.144->3600.144
 цікаві результати якісь отримуємо ми ->3600.144->3600.144
 ми отримуємо цікаві результати якісь ->3600.081->3600.081
 ми цікаві результати отримуємо якісь ->3600.081->3600.081
 результати цікаві отримуємо ми якісь ->3600.081->3600.081
 цікаві отримуємо результати ми якісь ->3600.081->3600.081
 отримуємо цікаві ми результати якісь ->3600.081->3600.081
 якісь ми результати цікаві отримуємо ->3600.081->3600.081
 ми результати цікаві якісь отримуємо ->3600.081->3600.081
 ми цікаві результати якісь отримуємо ->3600.081->3600.081
 ми якісь результати отримуємо цікаві ->3600.081->3600.081
 ми якісь отримуємо результати цікаві ->3600.081->3600.081
 результати якісь отримуємо цікаві ми ->3600.081->3600.081
 результати отримуємо якісь цікаві ми ->3600.081->3600.081
 отримуємо якісь результати цікаві ми ->3600.081->3600.081
 отримуємо якісь цікаві результати ми ->3600.081->3600.081
 результати цікаві якісь отримуємо ми ->3600.081->3600.081
 отримуємо цікаві ми якісь результати ->3600.036->3600.036
 ми якісь отримуємо цікаві результати ->3600.036->3600.036
 ми результати отримуємо цікаві якісь ->3600.036->3600.036
 ми отримуємо результати цікаві якісь ->3600.036->3600.036
 результати якісь ми цікаві отримуємо ->3600.036->3600.036
 результати ми цікаві якісь отримуємо ->3600.036->3600.036
 ми цікаві якісь результати отримуємо ->3600.036->3600.036
 результати ми якісь отримуємо цікаві ->3600.036->3600.036
 якісь результати отримуємо цікаві ми ->3600.036->3600.036
 якісь отримуємо результати цікаві ми ->3600.036->3600.036
 якісь отримуємо цікаві результати ми ->3600.036->3600.036
 отримуємо результати якісь цікаві ми ->3600.036->3600.036
 якісь цікаві результати отримуємо ми ->3600.036->3600.036
 цікаві якісь результати отримуємо ми ->3600.036->3600.036
 цікаві якісь отримуємо результати ми ->3600.036->3600.036
 якісь отримуємо цікаві ми результати ->625.081->625.081
 цікаві результати отримуємо ми якісь ->625.081->625.081
 ми цікаві якісь отримуємо результати ->625.036->625.036
 якісь ми цікаві отримуємо результати ->625.036->625.036
 отримуємо якісь цікаві ми результати ->625.036->625.036
 отримуємо ми цікаві результати якісь ->400.144->400.144
 цікаві результати ми отримуємо якісь ->400.144->400.144
 цікаві ми якісь отримуємо результати ->400.081->400.081
 отримуємо ми результати цікаві якісь ->400.081->400.081
 результати цікаві ми отримуємо якісь ->400.081->400.081
 цікаві ми отримуємо результати якісь ->400.081->400.081
 результати якісь цікаві ми отримуємо ->400.081->400.081
 якісь результати цікаві ми отримуємо ->400.081->400.081
 якісь цікаві результати ми отримуємо ->400.081->400.081
 якісь цікаві ми результати отримуємо ->400.081->400.081
 цікаві якісь результати ми отримуємо ->400.081->400.081
 цікаві ми результати якісь отримуємо ->400.081->400.081
 результати ми якісь цікаві отримуємо ->400.081->400.081
 ми якісь результати цікаві отримуємо ->400.081->400.081
 отримуємо якісь ми результати цікаві ->400.081->400.081
 результати отримуємо ми якісь цікаві ->400.081->400.081
 отримуємо результати ми якісь цікаві ->400.081->400.081
 результати якісь ми отримуємо цікаві ->400.081->400.081
 результати цікаві отримуємо якісь ми ->400.081->400.081
 цікаві якісь ми отримуємо результати ->400.036->400.036
 отримуємо якісь ми цікаві результати ->400.036->400.036
 якісь ми отримуємо цікаві результати ->400.036->400.036
 отримуємо ми якісь цікаві результати ->400.036->400.036
 результати отримуємо ми цікаві якісь ->400.036->400.036
 отримуємо результати ми цікаві якісь ->400.036->400.036
 цікаві ми результати отримуємо якісь ->400.036->400.036
 результати отримуємо якісь ми цікаві ->400.036->400.036
 отримуємо результати якісь ми цікаві ->400.036->400.036
 отримуємо ми якісь результати цікаві ->400.036->400.036
 якісь ми результати отримуємо цікаві ->400.036->400.036
 якісь ми отримуємо результати цікаві ->400.036->400.036
 цікаві отримуємо результати якісь ми ->400.036->400.036
 ми результати якісь цікаві отримуємо ->225.144->225.144
 ми якісь цікаві отримуємо результати ->225.081->225.081
 результати ми цікаві отримуємо якісь ->225.081->225.081
 ми результати цікаві отримуємо якісь ->225.081->225.081
 цікаві результати якісь ми отримуємо ->225.081->225.081
 якісь результати ми цікаві отримуємо ->225.081->225.081
 ми цікаві отримуємо результати якісь ->225.036->225.036
 результати цікаві якісь ми отримуємо ->225.036->225.036
 цікаві якісь ми результати отримуємо ->225.036->225.036
 якісь ми цікаві результати отримуємо ->225.036->225.036
 результати отримуємо цікаві якісь ми ->225.036->225.036
 отримуємо результати цікаві якісь ми ->225.036->225.036
 отримуємо цікаві результати якісь ми ->225.036->225.036
 цікаві результати отримуємо якісь ми ->225.036->225.036
 ми цікаві отримуємо якісь результати ->156.331->156.331
 цікаві отримуємо ми результати якісь ->25.144->25.144
 результати якісь отримуємо ми цікаві ->25.144->25.144
 отримуємо ми результати якісь цікаві ->25.144->25.144
 результати ми отримуємо якісь цікаві ->25.144->25.144
 результати якісь цікаві отримуємо ми ->25.144->25.144
 ми отримуємо цікаві якісь результати ->25.081->25.081
 цікаві ми отримуємо якісь результати ->25.081->25.081
 цікаві отримуємо якісь ми результати ->25.081->25.081
 цікаві якісь отримуємо ми результати ->25.081->25.081
 якісь отримуємо ми цікаві результати ->25.081->25.081
 ми отримуємо якісь цікаві результати ->25.081->25.081
 результати отримуємо цікаві ми якісь ->25.081->25.081
 отримуємо результати цікаві ми якісь ->25.081->25.081
 результати цікаві ми якісь отримуємо ->25.081->25.081
 цікаві ми якісь результати отримуємо ->25.081->25.081
 ми якісь цікаві результати отримуємо ->25.081->25.081
 якісь отримуємо ми результати цікаві ->25.081->25.081
 отримуємо якісь результати ми цікаві ->25.081->25.081
 якісь результати ми отримуємо цікаві ->25.081->25.081
 ми результати якісь отримуємо цікаві ->25.081->25.081
 ми отримуємо результати якісь цікаві ->25.081->25.081
 ми отримуємо якісь результати цікаві ->25.081->25.081
 цікаві отримуємо якісь результати ми ->25.081->25.081
 якісь цікаві ми отримуємо результати ->25.036->25.036
 отримуємо ми цікаві якісь результати ->25.036->25.036
 цікаві отримуємо ми якісь результати ->25.036->25.036
 отримуємо цікаві результати ми якісь ->25.036->25.036
 цікаві результати ми якісь отримуємо ->25.036->25.036
 якісь результати отримуємо ми цікаві ->25.036->25.036
 якісь отримуємо результати ми цікаві ->25.036->25.036
 ми результати отримуємо якісь цікаві ->25.036->25.036
 якісь результати цікаві отримуємо ми ->25.036->25.036
 якісь цікаві отримуємо результати ми ->25.036->25.036
 якісь цікаві отримуємо ми результати ->6.394->6.394


ми йакьісь цьікавьі результати отримуйемо
отримуйемо ми йакьісь цьікавьі результати
результати ми йакьісь отримуйемо цьікавьі
цьікавьі результати ми отримуйемо йакьісь
цьікавьі результати ми йакьісь отримуйемо
цьікавьі результати йакьісь ми отримуйемо
йакьісь результати цьікавьі ми отримуйемо
йакьісь цьікавьі результати ми отримуйемо

Варто зазначити, що в силу особливостей обчислення властивостей, якщо надавати складам однакові значення підряд, то менше буде значень з максимальними значеннями. Питання, чи варто занадто старатися надавати різні значення послідовним складам, залишається відкритим.

Також зазначу, що такий деталізований вивід надається за умови вказання як аргументів "+v 3". Він включає "деталізований" вивід, про який згодом. Він працює сае у режимі кількох властивостей.

Цікавим є інший приклад, який показує, як можна спробувати знайти, де кращим буде логічний наголос:

lineVariantsG3 10.0_0.0 +m ax01 5 ax02 5 ax03 5 -m +s 3 +v 3 хрущі над вишнями гудуть
3
?  хру   6
?  шчьі   8
?  на   
?  дви   6
?  шньа   
?  ми   3
?  гу   
?  дуть   6
?  хру   
?  шчьі   6
?  на   6
?  дви   8
?  шньа   6
?  ми   
?  гу   
?  дуть   6
?  хру   
?  шчьі   6
?  на   
?  дви   6
?  шньа   
?  ми   3
?  гу   6
?  дуть   8
 надвишнями хрущі гудуть ->2.25->2.25
 хрущі гудуть надвишнями ->2.25->2.25
 гудуть надвишнями хрущі ->1.0->1.0
 надвишнями гудуть хрущі ->0.3125->0.3125
 гудуть хрущі надвишнями ->0.3125->0.3125
 хрущі надвишнями гудуть ->0.28125->0.28125


 хрущі надвишнями гудуть ->1.0->1.0
 надвишнями хрущі гудуть ->1.0->1.0
 гудуть надвишнями хрущі ->1.0->1.0
 надвишнями гудуть хрущі ->1.0->1.0
 гудуть хрущі надвишнями ->1.0->1.0
 хрущі гудуть надвишнями ->1.0->1.0


 надвишнями хрущі гудуть ->2.25->2.25
 хрущі гудуть надвишнями ->2.25->2.25
 гудуть надвишнями хрущі ->1.0->1.0
 надвишнями гудуть хрущі ->0.3125->0.3125
 гудуть хрущі надвишнями ->0.3125->0.3125
 хрущі надвишнями гудуть ->0.28125->0.28125


гудуть надвишньами хрушчьі
гудуть хрушчьі надвишньами
надвишньами гудуть хрушчьі
хрушчьі гудуть надвишньами
надвишньами хрушчьі гудуть
хрушчьі надвишньами гудуть

Як бачимо, результати обчислень для усіх трьох випадків відрізняються. З точки зору програми для такої властивості другий варіант, де наголос падає на середину фрази ("над вишнями"), виглядає більш логічним. Це видно з того, що в деталізованому виводі режииму бігітьох властивостей лише у цьому випадку фраза не поступається значенням іншим варіантам. Але немає смислу логічно виділяти саме середину фрази (хібащо Шевченко хотів створити щось на зразок картини "об’ємного звуку" з локалізацією "над вишнями" угорі). Можна думати, що у цьому випадку властивість обрана невідповідно.

Потрібно зазначити, що логічний наголос тут заданий зсувом вправо на одну позицію значень для шкали "2-3-4-6-8-11-15").

Рекурсивний режим при SaaW

Рекурсивний режим характеризується двома суттєвими особливостями:

  1. оскільки рядок записується у "фонетичній транскрипції", то наступний виклик обчислень буде здійснений на основі нового рядка, в якому можуть відбутися незворотні фонетичні зміни (найскладнішим є випадок ставання глухих приголосних дзвінкими, характериний для української мови, для інших мов можуть бути також інші характерні зміни);

  2. кожен наступний етап обчислень у режимі SaaW буде викликати введення даних для складів вручну – це подовжує загальну тривалість обчислень, збільшує роботу людини, але водночас дозволяє змінивши дані отримати видозмінені результати.

Перше ускладнення може не дуже сильно впливати на результати роботи (оскільки для 2-4 змін у довгому рядку та враховуючи, що на відмінності між глухими та відповідними дзвінкими приголосними не більше 11%, то це переважно не надто сильно відображається на кінцевих результатах, хоча і впливом не можна цілком знехтувати).

Наприклад:

lineVariantsG3 +r 3 as01 +s 1 +u малювати щось гарне це цікаве заняття
0
?  ма   3
?  льу   
?  ва   6
?  ти   
?  шчозь   6
?  гар   6
?  не   
?  це   
?  цьі   
?  ка   6
?  ве   
?  за   
?  ньа   6
?  тьтьа   
1     гарне шчось цецьікаве мальувати заньатьтьа
2     цецьікаве шчозь гарне мальувати заньатьтьа
3     шчозь гарне цецьікаве мальувати заньатьтьа
4     заньатьтьа шчозь гарне цецьікаве мальувати
5     шчозь гарне заньатьтьа цецьікаве мальувати
6     шчозь гарне цецьікаве заньатьтьа мальувати
7     заньатьтьа гарне шчось цецьікаве мальувати
8     гарне заньатьтьа шчось цецьікаве мальувати
9     шчось цецьікаве гарне заньатьтьа мальувати
10    заньатьтьа шчозь гарне мальувати цецьікаве
11    шчозь гарне заньатьтьа мальувати цецьікаве
12    заньатьтьа гарне шчось мальувати цецьікаве
13    гарне заньатьтьа шчось мальувати цецьікаве
14    мальувати шчозь гарне цецьікаве заньатьтьа
15    гарне шчось мальувати цецьікаве заньатьтьа
16    шчозь гарне мальувати цецьікаве заньатьтьа
17    шчось мальувати гарне заньатьтьа цецьікаве
18    шчозь гарне мальувати заньатьтьа цецьікаве
19    мальувати цецьікаве заньатьтьа гарне шчось
20    цецьікаве мальувати заньатьтьа гарне шчось
21    мальувати цецьікаве заньатьтьа шчозь гарне
22    цецьікаве мальувати заньатьтьа шчозь гарне

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
2
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 
22
?  це   
?  цьі   
?  ка   6
?  ве   
?  шчо   6
?  зьгар   6
?  не   
?  ма   3
?  льу   
?  ва   6
?  ти   
?  за   
?  ньа   6
?  тьтьа   
1     цецьікаве шчозьгарне мальувати заньатьтьа
2     шчозьгарне цецьікаве мальувати заньатьтьа
3     заньатьтьа шчозьгарне мальувати цецьікаве
4     шчозьгарне заньатьтьа мальувати цецьікаве
5     заньатьтьа шчозьгарне цецьікаве мальувати
6     шчозьгарне заньатьтьа цецьікаве мальувати
7     шчозьгарне цецьікаве заньатьтьа мальувати
8     мальувати шчозьгарне цецьікаве заньатьтьа
9     шчозьгарне мальувати цецьікаве заньатьтьа
10    шчозьгарне мальувати заньатьтьа цецьікаве
11    цецьікаве мальувати заньатьтьа шчозьгарне
12    мальувати цецьікаве заньатьтьа шчозьгарне

Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. 
8
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів та букв, введіть тут 
закодований рядок інтерпретатора. Якщо бажаєте не використовувати програму (функцію) рекурсивно, 
просто натисніть Enter. 

мальувати шчозьгарне цецьікаве заньатьтьа

Зверніть увагу, подовження приголосних кодується і відображається як їх повторення, у тому числі для м’яких чи пом’якшених приголосних повторюються групи з м’яким знаком ("заньатьтьа"). Також зверніть увагу, що при перестановці слів відбулися фонетичні зміни — "щоСь гарне" стало "шчоЗь гарне". Якщо б ми взяли і з’єднали у цьому варіанті перше з двох слів з іншим, де не мало би бути фонетичної зміни, то програма пропустила б це і це внесло б фонетичну похибку в результат, але завдяки співвідношенням тривалостей, похибка між дзвінкими та глухими відповідними (або приблизно відповідними, як у випадку з г-х) приголосними складає не більше 11%. Кілька потенційних таких на 1 рядок не надто змінює ритмічний малюнок, а на властивості з ’a’ в позначенні взагалі не впливає.

Ідеї, які можуть допомогти

Якщо Ви бажаєте провести певне дослідження рядка, то можна застосовувати різні схеми для аналізу. Програми надають багато можливостей, тому потрібно проявити доцільність. Ось кілька порад:

  1. Почати аналіз можна задавши, наприклад, послідовно різнохарактерні властивості, наприклад, для двох складів (використовуючи перший аргумент у вигляді N_0.0), трьох складів (перший аргумент у вигляді 0_N), w / x, згодом 5- чи 6-складові варіанти властивостей, можна також свої користувацькі.

  2. Застосування властивостей ’a’ типу потребує більше часу, зате дозволяє задати більше характеристик, а також дає переваги у силаботонічному віршуванні.

  3. Цікаву інформацію можна також отримати, використовуючи деталізацію (див. нижче).

  4. І також багато інших, більш творчих варіантів, зрештою з використанням має розвиватися власне відчуття мови у людини і вона поступово навчатиметься створенню гарних текстів.

Деталізація у режимі кількох властивостей

Якщо Ви використовуєте режим кількох властивостей (+m …-m), то для отримання додаткової інформації можна застосувати деталізацію. Для цього потрібно вказати як аргументи командного рядка поза групами +m …-m та +a …-a аргументи +v число 1, 2 або 3. При програма перед виводом на екран спільних варіантів для усіх вказаних властивостей та параметрів виведе додатково ще відсортовані за String (у випадку 1), за проміжним значенням, а потім у випадку рівності цього значення — за рядками (у випадку 2), за кінцевим значенням Double (за останнім і відбувається сама робота алгоритма відбору, це у випадку варіанта 3).

Наприклад:

lineVariantsG3 +m as01 3 w02 10 -m +s 1 +v 1 +u малювати щось гарне це цікаве заняття
1
?  ма   3
?  льу   
?  ва   6
?  ти   
?  шчозь   6
?  гар   6
?  не   
?  це   
?  цьі   
?  ка   6
?  ве   
?  за   
?  ньа   6
?  тьтьа   
 гарне заняття щось малювати цецікаве ->578.0->578.0
 гарне заняття щось цецікаве малювати ->578.0->578.0
 гарне щось малювати цецікаве заняття ->560.0->560.0
 гарне щось цецікаве малювати заняття ->578.0->578.0
 заняття гарне щось малювати цецікаве ->578.0->578.0
 заняття гарне щось цецікаве малювати ->578.0->578.0
 заняття щось гарне малювати цецікаве ->578.0->578.0
 заняття щось гарне цецікаве малювати ->578.0->578.0
 малювати цецікаве заняття гарне щось ->544.0->544.0
 малювати цецікаве заняття щось гарне ->544.0->544.0
 малювати щось гарне цецікаве заняття ->560.0->560.0
 цецікаве малювати заняття гарне щось ->544.0->544.0
 цецікаве малювати заняття щось гарне ->544.0->544.0
 цецікаве щось гарне малювати заняття ->578.0->578.0
 щось гарне заняття малювати цецікаве ->578.0->578.0
 щось гарне заняття цецікаве малювати ->578.0->578.0
 щось гарне малювати заняття цецікаве ->560.0->560.0
 щось гарне малювати цецікаве заняття ->560.0->560.0
 щось гарне цецікаве заняття малювати ->578.0->578.0
 щось гарне цецікаве малювати заняття ->578.0->578.0
 щось малювати гарне заняття цецікаве ->560.0->560.0
 щось цецікаве гарне заняття малювати ->578.0->578.0


 гарне малювати щось заняття цецікаве ->0.6328125->0.6328125
 гарне малювати щось цецікаве заняття ->3.65625->3.65625
 заняття малювати щось цецікаве гарне ->0.4921875->0.4921875
 заняття щось цецікаве гарне малювати ->0.421875->0.421875
 малювати гарне заняття цецікаве щось ->3.0625->3.0625
 малювати гарне цецікаве щось заняття ->0.6640625->0.6640625
 малювати щось гарне заняття цецікаве ->0.53125->0.53125
 малювати щось заняття гарне цецікаве ->3.0625->3.0625
 малювати щось заняття цецікаве гарне ->0.4375->0.4375
 малювати щось цецікаве гарне заняття ->0.53125->0.53125
 цецікаве гарне заняття малювати щось ->0.4375->0.4375
 цецікаве гарне малювати щось заняття ->0.6328125->0.6328125
 цецікаве щось гарне малювати заняття ->0.4375->0.4375
 цецікаве щось заняття малювати гарне ->0.4375->0.4375
 щось гарне малювати заняття цецікаве ->0.4375->0.4375
 щось заняття малювати гарне цецікаве ->3.71875->3.71875
 щось цецікаве гарне заняття малювати ->0.40625->0.40625

шчозь гарне мальувати заньатьтьа цецьікаве
шчось цецьікаве гарне заньатьтьа мальувати
цецьікаве шчозь гарне мальувати заньатьтьа

При цьому стрілки показують у будь-якому разі хід обчислень значень властивостей, а порядок групування відповідає порядку, в якому задані в командному рядку властивості. Тут сортування за самим рядком (+v 1), рядки відсортовані за зростанням, а числа (у випадках +v 2 / +v 3) — за спаданням.

Робота з програмою unconcatUkr

При виконанні програм lineVariantsG3, rewritePoemG3 утворюються конкатенації слів для збереження мінімальної граматики та кращого розуміння тексту. Деякі з них є типовими і їх можна легко відрізнити від звичайних (неконкатенованих) слів. Тому для прискорення редагування текстів після використання програм можна застосувати ще одну програму — unconcatUkr.

unconcatUkr 1 <шлях до файлу з конкатенованими сполученнями слів> [<шлях до нового файлу>]
unconcatUkr 2 <шлях до файлу з конкатенованими сполученнями слів> [<шлях до нового файлу>]
unconcatUkr -i

це три принципові способи використання цієї утиліти.

Перший найбільш безпечний, застосовує лише ті розділення сполучень, які майже напевно не призведуть до неправильних слів. Другий більш ризикований, але має більший ефект, тим не менше, застосовуйте з обереженістю (деякі не настільки широко вживані слова будуть неправильно розділені при цьому).

За замовчуванням, якщо цифра не вказана, то вона вважається 1.

Робота з програмою propertiesTextG3 (та distributionTextG)

Режим статистики за складами (+s)

Починаючи з версії 0.21.0.0 пакету phonetic-languages-simplified-examples-array, можна вивести на екран статистику за складами замість статистики за властивостями чи інтервалами. Якщо серед аргументів виклику програми propertiesTextG3 задати "+s", то програма виведе для кожного рядка кількість складів у рядку, птім список розподілу складів за словами в порядку їх появи у рядку (після застосування стандартних перетворень збереження мінімальної граматики), а потім, якщо задати аргумент виводу на екран тексту, — сам рядок у перетвореному вигляді. При цьому, якщо Ви задаєте зчитування тексту з файлу, то виведеться статистика за всіма рядками послідовно, а якщо у режимі зчитування тексту з стандартного вводу — то по-рядково, тобто програма виведе для рядка і потім чекатиме на наступний. Останнє особливо зручно для паралельного виконання цієї програми з lineVariantsG3 (в іншому робочому вікні).

Наприклад:


propertiesTextG3 +s Shchaslyve_derevo.txt s 1
5
10    [2,2,3,3]     Яке воно щасливе дерево
10    [1,2,3,2,2]   Ти можеш бачити цвіте воно
9     [3,2,4]       Закриєш очі плодоносить
10    [4,4,2]       Радітимеш побачивши його
9     [3,4,2]       іквітним іводночас плідним
12    [4,5,1,2]     Анавесні колищеквіту там нема
8     [2,3,3]       Чийе щасливим дерево
10    [3,4,1,2]     Напевне Унадії втій порі
8     [3,2,3]       щосонце гріє Івранці
10    [2,2,4,2]     сяють теплі йпрохолодні роси
10    [3,1,3,3]     Приходиш ти донього навесні
9     [3,3,3]       ібачиш дерево щасливим
8     [2,3,3]       Прийдеш улітку восени
11    [3,4,2,2]     ізнову зустрічаєш його милим
8     [4,3,1]       усміхненим красивим і
7     [2,3,2]       дзвінким відспіву птахів
8     [3,3,2]       Уранці ввечері чивдень
9     [3,2,2,2]     постійно бачиш його квітним
8     [3,2,1,2]     Підійдеш ближче ось воно
10    [3,2,2,2,1]   Відходиш далі хочеш бути знов
10    [3,4,3]       Авзимку чищасливе дерево
9     [1,3,2,3]     Так боземля його тримає
15    [2,2,5,4,2]   Асніг тепло оберігає тарадує людей
11    [2,3,2,4]     свята Різдвяна радість огортає
10    [4,2,1,2,1]   Длядерева затих той теплий рух
10    [3,3,2,1,1]   Тасили додає йому той зріст
9     [3,3,3]       ігнучкість іміцне здоров'я
14    [3,2,3,2,2,2] Цепори року йдерево просте Ами люди
11    [3,4,4]       Багатші ірухливі іповсюди
7     [3,1,3]       Ущасті ми активні
8     [5,3]         айакнійдемо донього
4     [4]           поступово
3     [3]           людяно

Приклад інтерактивного використання (дивіться далі):

propertiesTextG3 +s +i 
цікаво просто порахувати кількість складів у цьому рядку
    9
19  [3,2,5,2,2,3,2]
атакож у цьому коротшому 
10  [3,3,4]
Хочеться також зрозуміти, які слова краще підійдуть
18  [3,2,4,2,2,2,3]

Інтерактивний режим роботи (+i)

Починаючи з версії 0.21.0.0 пакету phonetic-languages-simplified-examples-array, замість файлу (тобто шляху до нього, дивіться далі) можна вказати як аргумент "+i", тоді програма не буде зчитувати текстові дані з файлу, а буде очікувати наїх ввід зі стандартного вводу (часто це просто ручний ввід з клавіатури). Тоді, якщо не вказувати +s серед аргументів, то програма буде очікувати на (можливо, багаторядковий) ввід зі стандартного вводу (наприклад, клавіатури) і з ним працюватиме так, наче він був прочитаний з файлу (дивіться нижче). Якщо ж вказати +s серед аргументів, то у випадку задання лише цих двох аргументів програма буде очікувати порядковий ввід (дивіться вище), а у випадку додавання ще інших аргументів, серед яких є і друк рядків, програма буде очікувати на увесь ввід (можливо, багаторядковий), а далі працюватиме наступним чином:

prppertiesTextG3 +i +s s 1
рядки бувають довші та коротші
а іноді навіть дуже довгі
але з такими довгими буде незручно працювати
     2
11   [2,3,2,4]     рядки бувають довші такоротші
10   [4,4,2]       аіноді навітьдуже довгі
17   [5,3,2,3,4]   алезтакими довгими буде незручно працювати

Режим аналізу кількох варіантів рядка

Починаючи з версії 0.21.0.0 пакету phonetic-languages-simplified-examples-array, можна аналізувати також варіанти рядка, подібно як і у програмі lineVariantsG3, більше того, синтаксис для цього аналогічний.

Наприклад:

propertiesTextG3 +i +s s 1
цікаво {навіть дуже цікаво} що вийде
цікаво { навіть дуже цікаво / надзвичайно } що з того вийде
порахувати склади у рядку може бути дійсно потрібним
     2
13   [3,4,3,3]         цікаво навітьдуже цікаво щовийде
12   [3,4,3,2]         цікаво надзвичайно щозтого вийде
15   [3,4,3,3,2]       цікаво навітьдуже цікаво щозтого вийде
19   [5,2,3,2,2,2,3]   порахувати склади урядку може бути дійсно потрібним

Зверніть увагу, що для цієї функціональності потрібно, щоб варіанти вказувалися у фігурних дужках, які відділені пробілами від тексту, такожі скісна риска (слеш) має бути відділена пробілами. У прикладі другий рядок, оскільки ці правила дотримані, перетворився на два послідовних з вказаними варіантами. Водночас у першому, оскільки дужки не відділені пробілами і немає скісної риски, то дужки просто ігноруються.

Далі описується інші варіанти використання програми, які були введені раніше.

І варіант (лише рядки)

Перевірте, щоб папка (каталог), куди cabal встановив виконувані файли програм, була доступна для пошуку в змінній середовища PATH.

Далі введіть у командному рядку (чи терміналі) команду:

propertiesTextG3 <перший аргумент> [<WX аргумент> <чи “вирощувати рядки”>] <файл з
  українським текстом> <контроль кількості інтервалів> <контроль друку також рядка
    тексту> <контроль розбивки тексту на рядки> <тип властивості>

та натисніть Enter.

Ви побачите щось схоже на:

propertiesTextG3 2.1_3.0 sadok.txt s 1 0 03z
    4
8   8   8   1.0029  1.0029  1.0000  1.00143062  2   4   
Тарас ШЕВЧЕНКО
    Вказематі
108 113 244 1.0425  2.2559  2.1640  0.64036546  3   1   
Садок вишневий колохати
13  29  29  2.3234  2.3234  1.0000  1.39819820  3   4   
Хрущі надвишнями гудуть
5   12  32  2.2321  6.0223  2.6980  0.63572791  3   1   
Плугатарі зплугами йдуть
108 108 110 1.0000  1.0182  1.0182  0.99097861  3   1   
Співають ідучи дівчата
12  13  49  1.0984  4.0438  3.6814  0.43556382  3   1   
Аматері вечерять ждуть
27  29  110 1.0685  4.0428  3.7835  0.42378641  3   1   
Сем’я вечеря колохати
12  12  27  1.0000  2.2500  2.2500  0.61538462  3   1   
Вечірня зіронька встає
3   14  14  4.3608  4.3608  1.0000  1.62692308  3   4   
Дочка вечерять подає
248 508 508 2.0437  2.0437  1.0000  1.34289977  3   4   
Амати хоче научати
1   13  13  24.6349 24.6349 1.0000  1.92198142  3   4   
Так соловейко недає
108 112 113 1.0346  1.0438  1.0089  1.01242119  3   4   
Поклала мати колохати
1   13  13  25.1071 25.1071 1.0000  1.92339261  3   4   
Маленьких діточок своїх
3   4   4   1.1995  1.3353  1.1132  1.02728205  3   3   
Сама заснула колойіх
108 108 248 1.0000  2.2937  2.2937  0.60721063  4   1   
Затихло все тілько дівчата
3   13  13  4.0000  4.0000  1.0000  1.60000000  2   4   
Тасоловейко незатих
    Міжітравня
    С-Петербург

Числові стовпчики мають однакове значення для обох варіантів для рядків. Відмінність полягає у тому, що у другому випадку статистика по всьому тексту має більше значення з погляду дослідника (дослідниці), ніж по кожному рядку зокрема.

І стовпчик – це мінімально можливе значення обраної властивості для заданих даних серед усіх можливих варіантів перестановок слів у рядку;

ІІ стовпчик – це актуальне значення обраної властивості для заданих даних у рядку, те, яке реалізується у конкретно цьому варіанті рядка;

ІІІ стовпчик – це максимально можливе значення обраної властивості для заданих даних серед усіх можливих варіантів перестановок слів у рядку;

ІV стовпчик – це відношення значення властивості для даного рядка та її мінімального значення для слів, з яких складається рядок; число, яке не менше 1.0;

V стовпчик – це відношення максимального значення властивості для слів даного рядка та її мінімального значення, з яких складається рядок; число, яке не менше 1.0 і не менше числа у IV стовпчику;

VI стовпчик – це відношення максимального значення властивості для даного рядка та її актуального значення; число, яке не менше 1.0 і не більше значення у V стовпчику;

VII стовпчик – це відношення актуального значення властивості до середнього арифметичного (півсуми) максимального та мінімального значення для всіх можливих перестановок слів при заданих даних; число, яке відображається з повною обчисленою кількістю знаків після крапки; має важливе значення для подальшої статистики для всього тексту;

VIII стовпчик – кількість слів у рядку, деякі з яких можуть складатися з кількох з’єднаних українських слів;

IX стовпчик – номер інтервалу (починаючи з 1), до якого входить актуальне значення властивості для заданих даних;

Далі направо – якщо вказано <контроль друку також рядка тексту> як 1, тоді тут виводиться рядок тексту, який аналізується; інакше, ці дані не виводяться.

ІІ варіант – статистика по всьому тексту (+ можливо, рядкова)

Перевірте, щоб папка (каталог), куди cabal встановив виконувані файли програм, була доступна для пошуку у змінній середовища PATH.

Далі введіть у терміналі команду:

propertiesTextG3 <перший аргумент> [<WX аргумент> <чи “вирощувати рядки”>] <файл з
  українським текстом> <контроль кількості інтервалів> <контроль друку також рядка
    тексту> <контроль розбивки тексту на рядки> <тип властивості> | distributionTextG
      <той же аргумент щодо кількості рядків> <чи виводити на екран також порядкові
        дані>

та натисніть Enter. У Unix-подібних ОС вертикальна лінія, виділена червоним, слугує для створення пайплайнів (pipelines) у терміналі в shell; для ОС Windows :

PowerShell -Command "propertiesTextG3 <перший аргумент> [<WX аргумент> <чи
  “вирощувати рядки">] <файл з українським текстом> <контроль кількості інтервалів>
    <контроль друку також рядка тексту> <контроль розбивки тексту на рядки> <тип
      властивості> | distributionTextG <той же аргумент щодо кількості рядків>
        <чи виводити на екран також порядкові дані>"

Ви побачите щось схоже на:

propertiesTextG3 2.1_3.0 sadok.txt s 1 0 02y | distributionTextG s 1 +W

    4
3   3   5   1.0000  1.7000  1.7000  0.74074074  2   1   
Тарас ШЕВЧЕНКО
    Вказематі
108 108 142 1.0000  1.3111  1.3111  0.86538462  3   1   
Садок вишневий колохати
4   34  34  8.5180  8.5180  1.0000  1.78987107  3   4   
Хрущі надвишнями гудуть
3   25  25  8.1680  8.1680  1.0000  1.78184991  3   4   
Плугатарі зплугами йдуть
108 108 142 1.0000  1.3111  1.3111  0.86538462  3   1   
Співають ідучи дівчата
3   4   25  1.3111  8.1680  6.2298  0.28601900  3   1   
Аматері вечерять ждуть
108 245 245 2.2694  2.2694  1.0000  1.38827528  3   4   
Сем’я вечеря колохати
3   34  34  11.1680 11.1680 1.0000  1.83563445  3   4   
Вечірня зіронька встає
3   34  34  11.1680 11.1680 1.0000  1.83563445  3   4   
Дочка вечерять подає
108 277 277 2.5611  2.5611  1.0000  1.43837754  3   4   
Амати хоче научати
3   3   13  1.0000  4.3111  4.3111  0.37656904  3   1   
Так соловейко недає
108 142 245 1.3111  2.2694  1.7309  0.80203908  3   1   
Поклала мати колохати
3   3   25  1.0000  8.1680  8.1680  0.21815009  3   1   
Маленьких діточок своїх
3   12  25  4.0000  8.1680  2.0420  0.87260035  3   2   
Сама заснула колойіх
27  29  242 1.0778  8.9778  8.3299  0.21603563  4   1   
Затихло все тілько дівчата
4   4   12  1.0000  3.0508  3.0508  0.49372385  2   1   
Тасоловейко незатих
    Міжітравня
    С-Петербург
------------------------------------------------------------------------------------------------------
1    2   3   4  
9   1   0   6   
56.25%    6.25%   0.00%   37.50% 
0.9879+-0.6062 0    16
2 3   4   5   6   7  
2   13  1   0   0   0   
******************************************************************************************************
2  .   .   .  
6  1   .   6  
1  .   .   .  
.  .   .   .  
.  .   .   .  
.  .   .   .  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2  0   0   0  
6  1   0   6  
1  0   0   0  
0   0   0   0
0   0   0   0   
0   0   0   0   
======================================================================================================

Виділення кольором не буде, тут просто згруповані різні типи даних статистики.

  1. Червоний колір – Десятковий дріб з похибкою – це середнє арифметичне значення (математичне сподівання) всіх чисел у VІI стовпчику статистики для рядків, плюс-мінус середнє квадратичне відхилення; у випадку обраної властивості y0 – часто число близьке до 1.0; може містити похибку округлення викликану особливостями знаходження суми чисел з плаваючою крапкою.

    У випадку, якщо всі рядки тексту виключаються з аналізу (дивіться: пояснення для оранжевого кольору), то виводиться замість матриць та подальшої інформації лише один рядок тексту – сигнальний напис:

    1.000+-0.000!,

    де ‘’͡ означає символ табуляції.

    Цей напис означає, що вказаний текст не підходить для аналізу програмою, а також, що будь-які дані, які в ході роботи програми можна було б отримати з цього тексту та супутніх текстів, повинні аналізуватися так, щоб не спростувати зроблені висновки на основі усієї сукупності текстів. Простіше кажучи, у такому випадку можна не враховувати текст, бо при правильному підході до аналізу та інтерпретації даних він не повинен скасувати результати.

  2. Синій колір – Натуральні числа – Матриця розподілу рядків за кількістю слів та інтервалами; елемент матриці у k-му рядку та j-му стовпчику – кількість рядків, для яких значення обраної властивості з вказаними даними потрапляє в інтервал з номером j (нумерація починається з 1), який рівний номеру стовпчика матриці, і містить у рядку k слів (слів або їх сполучень, які відображаються злитно для дотримання мінімальних правил граматики при аналізі та виведенні даних), число k лежить у діапазоні між 2 і 7 включно (рядки, які аналізуються для матриці, містять від 2 до 7 слів (або написаних злитно сполучень)). Таким чином, матриця завжди має 6 рядків, а число стовпчиків буде залежати від введених та наявних даних. Фактично ця матриця заміняє графік двовимірного розподілу даних.

    На екран виводиться двічі, одна від іншої відмежована тильдами. У першому випадку нульові значення не відображаються, замість них стоять крапки. Це елемент візуалізації даних, який дозволяє краще побачити, як виглядає розподіл, де числові значення відповідають висоті на графіку розподілу (значенню функції дискретного двовимірного розподілу). У другому випадку на місці крапок стоять відповідні значення, які всі рівні 0.

    Дані для матриці отримуються з VIII та IX стовпчиків статистики за рядками.

  3. Оранжевий колір – Цілі невід’ємні числа – Загальні кількості рядків. Перше число зліва – кількість рядків, які виключаються з аналізу для матриці, оскільки в них мало даних (1 або менше слів). Рівність 0 означає, що усі рядки виведені на екран беруть участь в аналізі для утворення матриці розподілу. Число справа – загальна кількість рядків у тексті, який виводиться та аналізується (включно з тими рядками, які пораховані зліва).

  4. Зелений колір – Відсотки – Розподіл загальної кількості рядків за інтервалами. Сума відсоткових значень природно рівна 100%. Номери інтервалів надписані зверху над відповідними відсотковими значеннями. Наприклад, напис у цих трьох рядках типу:

    1 2

    10 15

    40% 60%

    означає, що з усієї загальної кількості рядків, які піддаються аналізу за допомогою програми (містять достатньо даних), 40% припадає на перший інтервал (з меншим значенням властивості), а 60% – на другий (відповідно з більшим значенням властивості). Тобто таких рядків відповідно 10 і 15.

    Усі інтервали рівні за величиною, але можуть мати різні кількості рядків (яка знаходиться в ході роботи програми).

    Одновимірний розподіл, за ним можна побудувати гістограму.

  5. Жовтий колір – Натуральні числа – Номери інтервалів. Починається відлік з 1. Під ними відповідні кількості рядків, значення властивості для яких згідно даних потрапляє у відповідний за номером інтервал.

  6. Коричневий колір – Натуральні числа – Кількість слів у рядках. Лежить в межах від 2 до 7 включно (якщо слів менше, тоді рядок отримує значення рівні 1.0 і вилучається з аналізу програмою для матриці). Під ними – відповідні значення кількості таких рядків. 0 відповідає випадку відсутності рядків з даною кількістю слів (чи сполучень, які відображаються як одне слово).

Уважне вивчення цих даних дає змогу зробити певні висновки щодо тексту, їх сукупності, самої моделі та мови.

Режим статистики за кількома властивостями (+m ... -m)

Тепер, як і для програми lineVariantsG3, можна використовувати режим кількох властивостей. Для цього замість однієї властивості можна вказати кілька в блоці виділеному розділювачами +m ... -m.

У такому разі програма виведе на екран щось на зразок:

propertiesTextG3 sadok.txt s 1 0 +m y0 0y 02y 03y y2 y3 yy3 -m
                                4
2    4   2   1   2   4   4   1   Тарас ШЕВЧЕНКО
                                Вказематі
3    4   4   1   2   4   2   1   Садок вишневий колохати
3    4   1   4   4   4   4   4   Хрущі надвишнями гудуть
3    4   4   4   1   4   1   1   Плугатарі зплугами йдуть
3    2   4   1   1   1   1   1   Співають ідучи дівчата
3    2   2   1   1   1   1   1   Аматері вечерять ждуть
3    1   3   4   1   3   1   2   Сем’я вечеря колохати
3    3   4   4   4   4   4   4   Вечірня зіронька встає
3    4   2   4   4   4   4   4   Дочка вечерять подає
3    4   4   4   1   4   2   1   Амати хоче научати
3    4   1   1   4   1   4   3   Так соловейко недає
3    4   4   2   1   2   4   1   Поклала мати колохати
3    1   4   1   4   1   2   4   Маленьких діточок своїх
3    1   4   2   4   1   2   4   Сама заснула колойіх
4    3   1   1   2   1   2   2   Затихло все тілько дівчата
2    4   4   1   1   1   1   1   Тасоловейко незатих
                                Міжітравня
                                С-Петербург

Перший стовпчик (виділений кольором тут) – кількості слів у відповідних рядках; далі йдуть стовпчики згідно того порядку, як вони позначені у блоці кількох влстивостей відповідно – номери інтервалів, у які потрапляють значення відповідних властивостей. Найперше число справа (виділене червоним кольором і єдине у своєму рядку) – це кількість інтервалів для кожної властивості (вони всі однакові). Вісім стовпчиків у даному випадку до текстових записів – значить, що було 7 (= 8 – 1) заданих властивостей у блоці.

Режим статистики за кількома властивостями для distributionTextG

У такому випадку також можна використати програму distributionTextG, додавши до рядка параметр +m:

propertiesTextG3 sadok.txt s 1 0 +m y0 0y 02y 03y y2 y3 yy3 -m | distributionTextG s 1 +W +m

                                4
2   4   2   1   2   4   4   1   Тарас ШЕВЧЕНКО
                                Вказематі
3   4   4   1   2   4   2   1   Садок вишневий колохати
3   4   1   4   4   4   4   4   Хрущі надвишнями гудуть
3   4   4   4   1   4   1   1   Плугатарі зплугами йдуть
3   2   4   1   1   1   1   1   Співають ідучи дівчата
3   2   2   1   1   1   1   1   Аматері вечерять ждуть
3   1   3   4   1   3   1   2   Сем’я вечеря колохати
3   3   4   4   4   4   4   4   Вечірня зіронька встає
3   4   2   4   4   4   4   4   Дочка вечерять подає
3   4   4   4   1   4   2   1   Амати хоче научати
3   4   1   1   4   1   4   3   Так соловейко недає
3   4   4   2   1   2   4   1   Поклала мати колохати
3   1   4   1   4   1   2   4   Маленьких діточок своїх
3   1   4   2   4   1   2   4   Сама заснула колойіх
4   3   1   1   2   1   2   2   Затихло все тілько дівчата
2   4   4   1   1   1   1   1   Тасоловейко незатих
                                Міжітравня
                                С-Петербург
------------------------------------------------------------------------------------------------------
1   2   3   4   
3   2   2   9   
18.75%  12.50%  12.50%  56.25%  
0   16
2   3   4   5   6   7   
2   13  1   0   0   0   
******************************************************************************************************
.   .   .   2   
3   2   1   7   
.   .   1   .   
.   .   .   .   
.   .   .   .   
.   .   .   .   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0   0   0   2   
3   2   1   7   
0   0   1   0   
0   0   0   0   
0   0   0   0   
0   0   0   0   
======================================================================================================
------------------------------------------------------------------------------------------------------
1   2   3   4   
3   3   1   9   
18.75%  18.75%  6.25%   56.25%  
0   16
2   3   4   5   6   7   
2   13  1   0   0   0   
******************************************************************************************************
.   1   .   1   
2   2   1   8   
1   .   .   .   
.   .   .   .   
.   .   .   .   
.   .   .   .   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0   1   0   1   
2   2   1   8   
1   0   0   0   
0   0   0   0   
0   0   0   0   
0   0   0   0   
======================================================================================================
------------------------------------------------------------------------------------------------------
1   2   3   4   
8   2   0   6   
50.00%  12.50%  0.00%   37.50%  
0   16
2   3   4   5   6   7   
2   13  1   0   0   0   
******************************************************************************************************
2   .   .   .   
5   2   .   6   
1   .   .   .   
.   .   .   .   
.   .   .   .   
.   .   .   .   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2   0   0   0   
5   2   0   6   
1   0   0   0   
0   0   0   0   
0   0   0   0   
0   0   0   0   
======================================================================================================
------------------------------------------------------------------------------------------------------
1   2   3   4   
7   3   0   6   
43.75%  18.75%  0.00%   37.50%  
0   16
2   3   4   5   6   7   
2   13  1   0   0   0   
******************************************************************************************************
1   1   .   .   
6   1   .   6   
.   1   .   .   
.   .   .   .   
.   .   .   .   
.   .   .   .   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1   1   0   0   
6   1   0   6   
0   1   0   0   
0   0   0   0   
0   0   0   0   
0   0   0   0   
======================================================================================================
------------------------------------------------------------------------------------------------------
1   2   3   4   
7   1   1   7   
43.75%  6.25%   6.25%   43.75%  
0   16
2   3   4   5   6   7   
2   13  1   0   0   0   
******************************************************************************************************
1   .   .   1   
5   1   1   6   
1   .   .   .   
.   .   .   .   
.   .   .   .   
.   .   .   .   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1   0   0   1   
5   1   1   6   
1   0   0   0   
0   0   0   0   
0   0   0   0   
0   0   0   0   
======================================================================================================
------------------------------------------------------------------------------------------------------
1   2   3   4   
5   5   0   6   
31.25%  31.25%  0.00%   37.50%  
0   16
2   3   4   5   6   7   
2   13  1   0   0   0   
******************************************************************************************************
1   .   .   1   
4   4   .   5   
.   1   .   .   
.   .   .   .   
.   .   .   .   
.   .   .   .   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1   0   0   1   
4   4   0   5   
0   1   0   0   
0   0   0   0   
0   0   0   0   
0   0   0   0   
======================================================================================================
------------------------------------------------------------------------------------------------------
1   2   3   4   
8   2   1   5   
50.00%  12.50%  6.25%   31.25%  
0   16
2   3   4   5   6   7   
2   13  1   0   0   0   
******************************************************************************************************
2   .   .   .   
6   1   1   5   
.   1   .   .   
.   .   .   .   
.   .   .   .   
.   .   .   .   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2   0   0   0   
6   1   1   5   
0   1   0   0   
0   0   0   0   
0   0   0   0   
0   0   0   0   
======================================================================================================

У такому випадку програма видасть можливу статистику за кожною властивістю, починаючи від першої зліва направо. Тут було 7 властивостей, тому і сім виведених розподілів.

Режим білих рядків

Програма також переключена тепер на режим білих рядків, що означає, що рядки, які містять менше слів, ніж потрібно, щоб забезпечити існування хоча б двох варіантів рядка, не відображають статистику і вона не включається у загальний результат. Для цього у випадку однієї метрики та використання програми distributionTextG потрібно викликати останню з додатковим аргументом +W (означає whitelines).

Наприклад, у такому випадку Ви побачите:

propertiesTextG3 sadok.txt s 1 0 03y +b | distributionTextG s 1 \textcolor{yellow">+W
    4
    Тарас ШЕВЧЕНКО
    Вказематі
52  52  81  1.0000  1.5577  1.5577  0.78195489  3   1   
Садок вишневий колохати
4   14  14  3.2040  3.2040  1.0000  1.52426261  3   4   
Хрущі надвишнями гудуть
1   1   4   1.0000  2.7692  2.7692  0.53061224  3   1   
Плугатарі зплугами йдуть
36  36  40  1.0000  1.1111  1.1111  0.94736842  3   1   
Співають ідучи дівчата
1   1   1   1.4444  1.4444  1.0000  1.18181818  3   4   
Аматері вечерять ждуть
36  36  52  1.0000  1.4444  1.4444  0.81818182  3   1   
Сем’я вечеря колохати
14  14  14  1.0000  1.0000  1.0000  1.00000000  3   2   
Вечірня зіронька встає
1   14  14  14.2400 14.2400 1.0000  1.86876640  3   4   
Дочка вечерять подає
37  37  37  1.0000  1.0000  1.0000  1.00000000  3   2   
Амати хоче научати
1   4   4   4.0000  4.0000  1.0000  1.60000000  3   4   
Так соловейко недає
36  40  40  1.1111  1.1111  1.0000  1.05263158  3   4   
Поклала мати колохати
1   11  11  11.2400 11.2400 1.0000  1.83660131  3   4   
Маленьких діточок своїх
1   4   4   4.4444  4.4444  1.0000  1.63265306  3   4   
Сама заснула колойіх
9   52  100 5.7778  11.1111 1.9231  0.95412844  4   2   
Затихло все тілько дівчата
        Тасоловейко незатих
        Міжітравня
        С-Петербург
------------------------------------------------------------------------------------------------------
1   2   3   4   
4   3   0   7   
28.57\% 21.43\% 0.00\%  50.00\% 
1.1949+-0.4206  0   14
2   3   4   5   6   7   
0   13  1   0   0   0   
******************************************************************************************************
.   .   .   .   
4   2   .   7   
.   1   .   .   
.   .   .   .   
.   .   .   .   
.   .   .   .   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0   0   0   0   
4   2   0   7   
0   1   0   0   
0   0   0   0   
0   0   0   0   
0   0   0   0   
======================================================================================================

Білі рядки тут показані як відступи без статистики там, де інакше вона була б.

Режим зменшеної множини перестановок

У режимі зменшеної множини перестановок можуть працювати обидві програми propertiesTextG3 та distributionTextG. Тоді потрібно задавати в першій з них як аргумент командного рядка <<+p 1 чи 2>>, а в другій достатньо лише <<+p>>. У такому випадку статистика виводиться так, наче кількість слів може бути від 2 до 10 включно.

Режим статистики з фіксованим закінченням рядка (+b)

Якщо задати як один з аргументів командного рядка для propertiesTextG3 символи +b, то програма буде обчислювати усю статистику, наче останнє слово фіксоване обмеженням і не рухається. Фактично у такому випадку смисл цього символу (аргументу) є аналогічним як і для програми lineVariantsG3.

Потрібно пам’ятати, що це звужує інтервал допустимих значень властивостей і при незмінній кількості рядків змінює розподіл всередині інтервалів.

Контроль кількості інтервалів

Можливі три випадки:

Контроль друку також рядка тексту

Якщо цей аргумент рівний 1, то праворуч від числових даних порядкової статистики буде виведено на екран також рядок, який аналізується (в уже перетвореному вигляді для аналізу). Інакше рядок не буде виведений.

Контроль розбивки тексту на рядки

Якщо задати тут 1, то текст буде спочатку згрупований в один рядок, а потім розбитий на рядки методом ділення навпіл (за кількістю слів чи їх сполучень) доти, поки довжина усіх рядків не буде менша за 8 слів чи їх сполучень. Сторонні символи при цьому будуть відфільтровані. Якщо задати 0, то текст буде аналізуватися після фільтрації сторонніх символів (приблизно) у тих рядках, які були спочатку.

Чи використовувати вирощування рядків

Якщо серед аргументів командного рядка задати +g ab, де a, b – деякі цифри, крім 0, то буде використаний режим вирощування рядків. Це означає, що текст буде перетворений таким чином, щоб спочатку максимальна кількість слів у рядках була не більша за другу цифру, а потім рядки згруповані так, щоб кількість слів у рядку була близькою до першої цифри, якщо цього можна досягнути, об’єднуючи рядки в один послідовно. Іншими словами відбудеться перегрупування тексту за рядками так, щоб зробити кількість слів у кожному з них ближчою до першої цифри і не більшою за 7 (для останнього використовується остача від ділення на 7). У такому випадку контроль розбивки тексту на рядки не грає великої ролі, але може перегрупувати рядки, якщо він рівний 1. Наприклад, +g 73 як аргумент командного рядка означатиме, що після застоування розбивки тексту на рядки усі рядки буде поділено так, щоб у кожному було не більше 3 слів чи їх поєднань, а потім об’єднано рядки так, щоб у кожному було число слів близьке до 7 (не більше).

Зверніть увагу, що, починаючи з версії 0.16.0.0 між +g та двоцифровим числом стоїть пробіл. Раніше його не було.

Той же аргумент щодо кількості рядків

Мається на увазі тут має стояти те ж значення, що і на місці контролю кількості інтервалів.

Чи виводити на екран також і порядкові дані

Тут потрібно поставити 1, щоб програма надрукувала всю статистику (спочатку порядкову, а потім загальну по тексту), інакше буде надруковано лише загальну по тексту.

Вибірковий аналіз тексту за рядками

Якщо Ви виконаєте команду

propertiesTextG3 <шлях до файлу з українським текстом для аналізу> @n

то на екран буде виведений текст з файлу, який буде аналізований з номерами усіх рядків зліва від самих рядків, що відділені від тексту символом табуляції (відображається у вигляді пробілу з непостійною шириною, яка залежить від налаштувань системи).

Тоді Ви можете виконувати цю ж програму (можна і без того, але можете вказати інші номери, ніж вважатиме програма) для аналізу вибраних рядків. Для цього до команд propertiesTextG3, крім останньої згаданої, будь-де у рядку команди до вертикальної риски (до пайплайну) додайте номери першого та останнього рядка, відділені символом двокрапки (без будь-яких інших символів, зокрема без пробілів). Можна задавати декілька таких пар, інформація буде виведена у такому ж порядку. Якщо деякі номери рядків будуть зустрічатися кілька разів, вони будуть виведені (якщо вказана така опція) та проаналізовані так само кілька разів. Якщо задано контроль розбивки тексту на рядки, що рівний 1, тоді програма об’єднає і проаналізує ті рядки, номери яких були вказані і відповідають номерам при виводі команди з @n.

Це все дозволяє сфокусовано аналізувати текст чи лише його частини.

Робота з програмою rewritePoemG3

Перевірте, щоб папка (каталог), куди cabal встановив виконувані файли програм, була доступна для пошуку в змінній середовища PATH.

Програма rewritePoemG3, починаючи з версії пакету 0.12.0.0, може працювати у режимі кількох властивостей, або в режимі однієї властивості, або в порівняльному режимі.

Режим кількох властивостей (+m …-m)

Якщо серед аргументів командного рядка задати групу аргументів, виділену розділювачами +m та -m, всередині якої вказати різні властивості в їх кодуванні (див. Типи властивостей), відділяючи кожну пробілом від попередньої та наступної, а також не вказувати серед аргументів командного рядка "+c", то програма працюватиме в режимі кількох (можливий випадок також і однієї, якщо вказати лише її одну) властивостей.

Синтаксис роботи програми у такому режимі:

rewritePoemG3 <перший аргумент> <файл з українським текстом> [<чи використовувати “вирощування
  рядків”>] +m <типи властивостей> -m <числові аргументи>

Після успішного завершення виконання програми (не має бути жодних повідомлень) у тій же папці (каталозі), де і файл з текстом, що переписується, мають бути файли з додатковим закінченням .new.txt та префіксами, відділеними крапкою, кожний з яких відповідає введеній властивості серед вказаних. Саме у кожному з цих файлів записаний (доданий, якщо бути точними) перетворений текст (наприклад, вірш) згідно введених даних.

Введені дані стосуються усього тексту, тобто кожного рядка тексту зокрема (після його попередньої обробки програмою).

Режим однієї властивості

Якщо серед аргументів командного рядка не задавати групу аргументів, виділену розділювачами +m та -m, а також не вказувати серед аргументів командного рядка "+c", то програма працюватиме в режимі однієї властивості (він можливий також, якщо в режимі кількох властивостей вказати всередині групи лише одну властивість).

Синтаксис роботи програми у такому режимі:

rewritePoemG3 <перший аргумент> <файл з українським текстом> [<чи використовувати “вирощування
  рядків”>] <тип властивості> <числові аргументи>

та натисніть Enter.

Ви побачите щось на зразок наступного:

rewritePoemG3 10.0_1.2 sadok.txt yy 5 1 2

Після успішного завершення виконання програми (не має бути жодних повідомлень) у тій же папці (каталозі), де і файл з текстом, що переписується, має бути файл з додатковим закінченням .new.txt та префіксом, відділеним крапкою, який відповідає введеній властивості. Саме там записаний перетворений текст (наприклад, вірш) згідно введених даних.

Введені дані стосуються усього тексту, тобто кожного рядка тексту зокрема (після його попередньої обробки програмою).

Більш комплексне використання

У режимі кількох властивостей та режимі однієї властивості числові аргументи мають багато в чому схоже значення, як і для програми lineVariantsG3.

Якщо вони задані, то мають наступне значення.

Перший числовий аргумент – кількість інтервалів, на які поділяється проміжок між мінімальним та максимальним значенням властивості для даного рядка. Якщо не задано, вважається рівним 1. Значення 0 не дає змоги іншим числовим аргументам далі змінювати результат роботи програми.

Усі наступні числові аргументи (якщо задано, інакше ніяких перестановок не відбувається) – номери інтервалів, які будуть поміняні місцями з максимальним за номером. Це дозволяє змінити структуру даних, які відображаються як результат роботи програми і побачити внутрішні (не максимальні) елементи. Наприклад, числові аргументи 6 1 4 (у такому порядку) означатимуть, що в ході виконання програми відрізок між максимальним та мінімальним значенням властивості буде поділено на 6 рівних інтервалів, при цьому елементи, які знаходяться у першому та 4, рахуючи від мінімального (інтервал з номером 1) буде переміщено до максимального за номером (і значеннями властивості) інтервалу, а потім записано у файл виводу результатів рядок з максимальним значенням властивості.

Значення, які були в максимальному інтервалі, будуть переміщені в інтервал з найменшим номером серед тих, які переміщені в максимальний.

Порівняльний режим роботи (+c)

Програму rewritePoemG3 можна запустити також у так званому порівняльному режимі, коли вона пропонує рядки (один за одним) з кількох (не більше 14) заданих файлів і записує вибраний (або порожній рядок, якщо жодний не обрано) у кінцевий файл. Так з кількох файлів шляхом їх порядкового порівняння можна створити новий. Це також дозволяє, запустивши програму двічі чи кілька разів з різними параметрами у режимі кількох властивостей, потім запускати її в порівняльному на отриманих файлах і створювати у досить невимушений спосіб їх комбінації – нові варіанти.

Ремарка: Якщо Ви плануєте отримати більше підказок та рекомендацій від програми, то імовірно простіше (і краще) застосувати інтерактивний режим програми lineVariantsG3 з кількома метриками, чи навіть рекурсивний режим кількох джерел тієї ж програми.

Для роботи у порівняльному режимі (comparative mode):

rewritePoemG3 +c <файли, відділені пробілами, з яких будуть зчитуватися рядки> <кінцевий файл>

Типи властивостей

Одним з принципів роботи програми є пошук серед варіантів тексту тих, для яких максимальним є значення певної функції, яка називається властивістю тексту (property) і становить собою певну властивість для рядків. Користувач може самостійно обрати властивість, яка буде використана при роботі програми (це робиться в командному рядку один раз протягом роботи програми заданням (або відсутністю відповідного) командного аргумента). Аргумент командного рядка виклику програми може бути:

Сума періодів унікальності за обраними фонетичними явищами (вибіркова сума періодів унікальності) як властивість або її елемент

Починаючи з версії 0.21.0.0, можна використовувати як властивості, де є обчислення суми періодів унікальності, такі, де ця сума обчислюється не для всіх наявних фонетичних явищ (одиниць), а лише для заданих вручну, вибірково, при цьому певні типові множини (зокрема голосні, сонорні приголосні, глухі приголосні) можна задати закодовано і спрощено. Розглянемо це на прикладі властивості y0, для інших спосіб роботи та кодування аналогічний.

Спосіб запису: властивість, у якій обчислюється сума періодів унікальності.вибраний звук чи кодована їх група1[.вибраний звук чи кодована їх група 2[і т. д.]] Наприклад, y0.і.в.г.дж.дз.сь.к.ь — сума періодів унікальності буде шукатися лише для наступних фонетичних явищ: звуків "і", "в", "г", "дж", "дз", "сь", "к" та усіх випадків, де "ь" буде позначати м’якість попереднього приголосного (крім "ц", оскільки м’який "ц" кодується окремо як "ць", а не послідовність "ц" "ь").

03y.р.б.ґ.о — у властивості 03y замість суми усіх періодів унікальності буде шукатися сума лише для наступних фонетичних явищ: "р", "б", "ґ" та "о".

y4.sr.vw — у властивості y4 буде шукатися сума періодів унікальності для всіх сонорних приголосних та усіх голосних (вони мають спеціальні позначення).

Спецільні позначення

Для української мови у пакеті phonetic-languages-simplified-examples-array передбачено наступні спеціальні позначення для груп фонетичних явищ:

Якщо записати .sr.vd.vs.vw.ь — то це повна сума, і писати таке позначення не потрібно (тобто y0.sr.vd.vs.vw.ь == y0).

Ці позначення актуальні для властивостей, які у випадку повної суми мають позначення: "02y", "02z", "03y", "03z", "04y", "04z", "0y", "0z", "y", "y0", "y2", "y3", "y4", "yy", "yy2", "yy3", "yy4", "z", "z2", "z3", "z4", "zz", "zz2", "zz3", "zz4". Тут і далі про них та про інші властивості детальніше.

Також потрібно зазначити, що для реалізації аналогічної функціональності у суміжному пакеті phonetic-languages-simplified-generalized-examples-array потрібно задавати додаткову функцію типу String -> String. У ній рядкам типу "sr" чи "к" відповідає як результат список Char, у кожний з яких після відповідних перетворень трансформується ті чи інші символи. Додам, що якщо немає бажання писати якусь окрему функцію, тоді можна просто задати тут id (identity function,
x -> x), але тоді потрібно кожне фонетичне явище позначати у властивості явно, тоді немає груп для позначення цілих класів фонетичних явищ (як у підрозділі "Спеціальні позначення" вище).

Обґрунтоване припущення, як Тарас Шевченко написав рядки віршу "Садок вишневий коло хати"

Спробуємо скористатися властивістю y0 з вибірковою сумою для аналізу оригінального варіанту віршу "Садок вишневий коло хати" Тараса Шевченка.

Звернемо увагу на другий рядок — "Хрущі над вишнями гудуть". У ньому слова "хрущі" та "гудуть" з "у" розміщені максимально далеко одне від одного. Це наштовхує на думку, що цей рядок задовольняє властивість y0.у. Перевіряємо:

propertiesTextG3 +i 4 1 0 y0.у
Хрущі над вишнями гудуть
     4
6    19    19    3.1667    3.1667    1.0000     1.52000000    3     4     Хрущі надвишнями гудуть

Дійсно, 19 з максимально можливих 19! Але можна помітити, що голосні у словах підібрані так, що вони близько не повторюються, тому максимум можна очікувати не лише для y0.у, але і для більш загальної властивості y0.vw:

propertiesTextG3 +i 4 1 0 y0.vw
Хрущі над вишнями гудуть
     4
6    19    19    3.1667    3.1667    1.0000     1.52000000    3     4     Хрущі надвишнями гудуть

Знову максимальні 19 з 19 можливих! Гаразд, для цього рядка це так. А для усього вірша? Перевіряємо.

propertiesTextG3 sadok.txt s 1 0 y0.vw
    4
0   0   0   NaN NaN NaN 0.00000000      2   2   Тарас ШЕВЧЕНКО
    Вказематі
17  42  42  2.4706  2.4706  1.0000  1.42372881      3   4   Садок вишневий колохати
6   19  19  3.1667  3.1667  1.0000  1.52000000      3   4   Хрущі надвишнями гудуть
23  30  34  1.3043  1.4783  1.1333  1.05263158      3   3   Плугатарі зплугами йдуть
31  39  45  1.2581  1.4516  1.1538  1.02631579      3   3   Співають ідучи дівчата
15  19  31  1.2667  2.0667  1.6316  0.82608696      3   1   Аматері вечерять ждуть
19  21  32  1.1053  1.6842  1.5238  0.82352941      3   1   Сем’я вечеря колохати
33  47  47  1.4242  1.4242  1.0000  1.17500000      3   4   Вечірня зіронька встає
24  43  43  1.7917  1.7917  1.0000  1.28358209      3   4   Дочка вечерять подає
10  23  23  2.3000  2.3000  1.0000  1.39393939      3   4   Амати хоче научати
11  22  22  2.0000  2.0000  1.0000  1.33333333      3   4   Так соловейко недає
25  34  40  1.3600  1.6000  1.1765  1.04615385      3   3   Поклала мати колохати
14  16  36  1.1429  2.5714  2.2500  0.64000000      3   1   Маленьких діточок своїх
3   3   11  1.0000  3.6667  3.6667  0.42857143      3   1   Сама заснула колойіх
28  44  46  1.5714  1.6429  1.0455  1.18918919      4   4   Затихло все тілько дівчата
20  20  20  1.0000  1.0000  1.0000  1.00000000      2   2   Тасоловейко незатих
    Міжітравня
    С-Петербург

Перевіряємо: дійсно, багато максимумів! Але не всі…Спробуємо додати щось чи забрати, щоб збільшити кількість максимумів, тоді ця нова властивість буде найбільш відповідною. Дивимося, де немає максимумів і чому. Наприклад, два рядки підряд — "А матері вечерять ждуть. // Сем’я вечеря коло хати // " — у них помічаємо, що в словах близько стоять звуки "е". Тоді якщо забрати "е", то, можливо, буде ближче до максимуму? Перевіряємо:

propertiesTextG3 sadok.txt s 1 0 y0.а.о.у.и.і
    4
0   0   0   NaN NaN NaN 0.00000000      2   2   Тарас ШЕВЧЕНКО
    Вказематі
17  42  42  2.4706  2.4706  1.0000  1.42372881      3   4   Садок вишневий колохати
6   19  19  3.1667  3.1667  1.0000  1.52000000      3   4   Хрущі надвишнями гудуть
23  30  34  1.3043  1.4783  1.1333  1.05263158      3   3   Плугатарі зплугами йдуть
31  39  45  1.2581  1.4516  1.1538  1.02631579      3   3   Співають ідучи дівчата
4   13  19  3.2500  4.7500  1.4615  1.13043478      3   3   Аматері вечерять ждуть
13  15  17  1.1538  1.3077  1.1333  1.00000000      3   2   Сем’я вечеря колохати
23  23  36  1.0000  1.5652  1.5652  0.77966102      3   1   Вечірня зіронька встає
19  31  35  1.6316  1.8421  1.1290  1.14814815      3   3   Дочка вечерять подає
10  23  23  2.3000  2.3000  1.0000  1.39393939      3   4   Амати хоче научати
5   16  16  3.2000  3.2000  1.0000  1.52380952      3   4   Так соловейко недає
25  34  40  1.3600  1.6000  1.1765  1.04615385      3   3   Поклала мати колохати
14  16  36  1.1429  2.5714  2.2500  0.64000000      3   1   Маленьких діточок своїх
3   3   11  1.0000  3.6667  3.6667  0.42857143      3   1   Сама заснула колойіх
28  44  46  1.5714  1.6429  1.0455  1.18918919      4   4   Затихло все тілько дівчата
6   14  14  2.3333  2.3333  1.0000  1.40000000      2   4   Тасоловейко незатих
    Міжітравня
    С-Петербург

Звертаємо увагу, дійсно, для цих рядків відбулося зміщення в сторону максимумів, також останній рядок "Та соловейко не затих" також "піднявся" до максимуму (щоправда, з двох можливих варіантів). Натомість рядок "Дочка вечерять подає" "опустився" з максимуму в 3 інтервал. Можна припустити, що "статус" "е" у вірші "неясний": чи з ним, чи без нього.

Можливо, інші звуки? Опускаючи варіації, візьмемо перевіримо:

propertiesTextG3 sadok.txt s 1 0 +m y0.vs.а.о.у.и.і y0.е y0.vw  -m 
                4
2   4   2   2   Тарас ШЕВЧЕНКО
                Вказематі
3   4   2   4   Садок вишневий колохати
3   4   2   4   Хрущі надвишнями гудуть
3   4   2   3   Плугатарі зплугами йдуть
3   3   2   3   Співають ідучи дівчата
3   3   1   1   Аматері вечерять ждуть
3   2   1   1   Сем’я вечеря колохати
3   1   4   4   Вечірня зіронька встає
3   2   3   4   Дочка вечерять подає
3   4   2   4   Амати хоче научати
3   4   1   4   Так соловейко недає
3   3   2   3   Поклала мати колохати
3   1   2   1   Маленьких діточок своїх
3   1   2   1   Сама заснула колойіх
4   4   2   4   Затихло все тілько дівчата
2   4   1   2   Тасоловейко незатих
                Міжітравня
                С-Петербург

Як бачимо, за різних варіантів не вдається досягти всюди максимумів. Особливо це стосується трьох рядків підряд у кінці: "Поклала мати коло хати // Маленьких діточок своїх // Сама заснула коло їх." А також "Співають ідучи дівчата, // А матері вечерять ждуть". У другому випадку можна бачити, що "у" чергується з "і", тобто маємо "ю(у) — і — у", а також у наступному "е — і — е — е". Можна припустити, що тут звукопис — голосні чергуються, щоб відтворити мотиви мелодії та ритму народних пісень. Подібним чином можна припустити, що перед закінченням вірша, голосні починають "групуватися" ближче, тобто створюється "когерентний, динамічний" ефект, тобто підсилення, і можна думати, що він описує певну зміну ситуації. Подивимося, дійсно це можна назвати кульмінацією вірша, і тому його підсилення групуванням голосних створює ефект вершини картини. Відповідно і читати (декламувати) ці рядки потрібно (це є обґрунтованим, дивіться заголовок) з певним прискоренням, не розірено, а більш злитно. Водночас рядки, де маємо максимум для голосних (або голосних з глухими приголосними) мють читатися більш розмірено, щоб можна було побачити багатство картини, її спокійність та сталість. Передостанній рядок має паузу посередині — як пауза після кульмінації. І далі розв’язка.

Потрібно сказати, що, маючи по 3-4, іноді 2 слова в рядку, щоб не створювати враження "коротких рядків", має застосовуватися певне "розгрупування" звуків, щоб це можна було сприймати як неквапливу розповідь (як у даному випадку).

Можна зробити висновок, що Тарас Шевченко писав рядки вірша так, щоб переважно більш розлого розмістити голосні, а також глухі приголосні (де голосних недостатньо, для милозвучності), але там, детреба було більше динамізму — там, навпаки, обрав варіанти з їх ближчим групуванням. Тому ці рядки потрібно читати більш динамічно.

Далі продовження опису властивостей.

Режим власних налаштувань

Якщо тип починається з c, A, B, C, D, E, F, M, N, то програма намагається пропарсити цю властивість як закодовану конфігурацію поліритмічності. Режим для розробників та дослідників, можуть використовуватися ще складніші поліритмічні структури. Наприклад, властивість "c114+112=2" повертає як структуру поліритмічності P1 (Ch 1 1 4) (Rhythm 1 1 2) 2, що у свою чергу означає, що будуть шукатися 1 найбільш значимий максимум, також ще один менш значимий максимум у групах з 4 складів, як функція для визначення тривалостей складів буде використано syllableDurationsD2; "ctttff7+112111=7*3" повертає як структуру поліритмічності P2 (PolyCh [True,True,True,False,False] 7) (PolyRhythm [1,1,2,1,1,1]) 7 3, що у свою чергу означає, що будуть шукатися 1 найбільш значимий максимум, також ще один менш значимий максимум, також 2 ще менш значимі максимуми, також один ще менш значимий мінімум, а також ще один найменш значимий мінімум у групах з 7 складів, як функція для визначення тривалостей складів буде використано syllableDurationsD3 тощо.

При використанні нових властивостей типів A, B, C, D, E, F, M та N будуть використані зважені функції, які намагаються врахувати також значимість розміщення частини рядка, зокрема внутрішньо будуть використані такі функції з модуля
Rhythmicity.PolyRhythm як rhythmicityPolyWeightedLEF2, rhythmicityPolyWeightedEF2, rhythmicityPolyWeightedF2,
rhythmicityPolyWeightedLF2, rhythmicityPolyWeightedLEF3, rhythmicityPolyWeightedLF3,
rhythmicityPolyWeightedEF3 та rhythmicityPolyWeightedF3 відповідно.

Порада: якщо у виводі програми з використанням кількох метрик немає результатів (порожній вивід), збільшіть кількість груп у властивостях (хоча б для однієї) та / або додайте перетворення інтервалів, щоб змінити внутрішню структуру тих чи інших властивостей.

Для більшої наочності та зручності далі наводиться певна схематична часткова класифікація властивостей.

Властивості Групи по N, N | Увага до | Лінійність | Чи є Infinity | Особливості | Використовується | Нова колонка 2
y0 0 0 0 Періоди унікальності 1-3
0{M}y, 0{M}z 2 | 3 0 0 0 Перший аргумент 1-3
y{M}, z{M} 2 | 3 0 0 0 Перший аргумент 1-3
yy{M}, zz{M} 2 | 3 0 0 0 Перший аргумент 1-3
w, x 4 0 0 1 wx-аргумент 1-3
u, v, 5 0 0 1 1-3
s, t, 6 0 0 1 1-3
S, T, 6 1 0 1 1-3
U, V, 5 1 0 1 1-3
W, X, 5 1 0 1 1-3
Y, Z, 6 1 0 1 1-3
I, J, 5 -1 0 1 1-3
K, L, 6 -1 0 1 1-3
O, P, 5 -1 0 1 1-3
Q, R, 6 -1 0 1 1-3
o, p, 5 1 1 0 1-3
q, r, 6 1 1 0 1-3
k, l, 5 1 1 0 1-3
m, n, 6 1 1 0 1-3
g, h, 5 -1 1 0 1-3
i, j, 6 -1 1 0 1-3
b, d, 5 -1 1 0 1-3
e, f, 6 -1 1 0 1-3
c Користувацька Власна структура 1-3
A Користувацька -1 1 0 Власна структура 1-3
B Користувацька 1 0 1 Власна структура 1-3
C Користувацька 1 0 1 Власна структура 1-3
D Користувацька 1 1 0 Власна структура 1-3
E Користувацька -1 1 0 Власна структура 1-3
F Користувацька 1 1 0 Власна структура 1-3
M Користувацька -1 0 1 Власна структура 1-3
N Користувацька 1 0 1 Власна структура 1-3
H... Тривалості 1-3
G... Схема обчислень[addit] 1
a... Склад-як-одне-ціле (SaaW)[SaaW] 1

У таблиці у стовпчику «Увага до» значення 0 означає, що властивість однаково впливає на опрацювання даних, які стоять в усіх повних групах (якщо такі є) або в усьому рядку, якщо таких немає; значення 1 означає, що програма більш чутлива до початку рядка, значення -1 означає, що програма більш чутлива до останніх груп (якщо такі є), або просто до закінчння рядка (якщо груп немає). Аргументи 1 і 0 відповідають ”так” і ”ні” у наступних двох стовпчиках. Таким чином, наприклад, рядок o, p, 5 1 1 0 1-3 означає, що для властивостей з першими літерами в позначенні o або p має місце наступне: вони групують склади в групи по 5 складів, починаючи від початку рядка, усі склади, які не можуть бути згруповані (в кінці, певний ”надлишок”), не рахуються, властивості більш чутливі до початку рядка, є ”лінійними” (такою є функція, яка утворює ядро зростання чи спадання, відносно руху вздовж рядка вперед чи назад), і відповідно не може набувати значення Infinity для більш-менш ”реальних” рядків; властивості можуть бути використані в усіх трьох програмах:

  1. lineVariantsG3

  2. propertiesTextG3

  3. rewritePoemG3

.

Якщо в колонці "Використовується" є якесь число, тоді відповідна програма може використовувати цю властивість.

Перший аргумент

При ознайомленні програми можна використовувати без цього аргументу, або ввівши на його місці 1_. Надалі Ви, можливо, захочете поглибити аналіз. Тоді можна задати також перший аргумент (він йде першим у списку аргументів командного рядка, не рахуючи групу – якщо така наявна – між аргументами +a та -a) у вигляді число1_число2, де число1 та число2 – десяткові додатні дроби або цілі додатні числа, причому одне з них може бути відсутнім (тоді воно вважається рівним 1). Наприклад,

3.4_2 2.987_0.7865 0.0001_

тощо.

Тоді перше число буде коефіцієнтом, який множиться на складову властивості, яка відповідає за ритмічність двоскладових стоп, а другий – за ритмічність трискладових стоп. Відповідно вдалою комбінацією можна підкреслити, скомбінувати чи знівелювати вплив ритмічності для двоскладових чи трискладових стоп.

За відсутності цього аргументу програми поводять себе так, наче він рівний 1_1.

Потрібно сказати, що цей агумент може суттєво вплинути на результати і може змінити їх на майже протилежні. Розглянемо такий приклад.

propertiesTextG3 \textcolor{green">20000_1 Shchaslyve_derevo.txt  s  1 0 +d 56.csv H02z | distributionTextG s 1 +W 

    5
2226    2226    51204   1.0000  23.0004 23.0004 0.08333195  4   
1   Яке воно щасливе дерево
0   1   204801  Infinity    Infinity    204801.0000 0.00000977      5   
1   Ти можеш бачити цвіте воно
225 2447    20144   10.8765 89.5289 8.2314  0.24028889  3   
1   Закриєш очі плодоносить
11251   20009   20009   1.7784  1.7784  1.0000  1.28016635  3   
5   Радітимеш побачивши його
881 1025    20081   1.1635  22.7934 19.5912 0.09779601  3   
1   іквітним іводночас плідним
144 20225   51344   140.4514    356.5556    2.5386  0.78561995  4   
2   Анавесні колищеквіту там нема
1   51204   204801  51204.0000  204801.0000 3.9997  0.50003418  3   
2   Чийе щасливим дерево
4   80016   720004  20004.0000  180001.0000 8.9983  0.22226420  4   
1   Напевне Унадії втій порі
4   5016    204804  1254.0000   51201.0000  40.8301 0.04898246  3   
1   щосонце гріє Івранці
7200    20001   460804  2.7779  64.0006 23.0390 0.08547363  4   
1   сяють теплі йпрохолодні роси
800 3200    13889   4.0000  17.3611 4.3403  0.43570348  4   
1   Приходиш ти донього навесні
36  36  51236   1.0000  1423.2222   1423.2222   0.00140428  3   
1   ібачиш дерево щасливим
2226    20004   51201   8.9856  22.9991 2.5595  0.74883174  3   
2   Прийдеш улітку восени
16  1266    1280016 79.1250 80001.0000  1011.0711   0.00197808  4   
1   ізнову зустрічаєш його милим
20004   80004   460804  3.9994  23.0356 5.7598  0.33278980  3   
1   усміхненим красивим і
45000   204801  204804  4.5511  4.5512  1.0000  1.63969352  3   
5   дзвінким відспіву птахів
20004   51204   204804  2.5597  10.2382 3.9998  0.45553539  3   
1   Уранці ввечері чивдень
36  5144    819344  142.8889    22759.5556  159.2815    0.01255583  4   
1   постійно бачиш його квітним
1   20004   204804  20004.0000  204804.0000 10.2382 0.19534679  4   
1   Підійдеш ближче ось воно
1   1254    45009   1254.0000   45009.0000  35.8923 0.05572095  5   
1   Відходиш далі хочеш бути знов
4   20016   35572   5004.0000   8892.8889   1.7772  1.12526704  3   
3   Авзимку чищасливе дерево
36  5009    80036   139.1389    2223.2222   15.9784 0.12511240  4   1   Так боземля його тримає
81  20081   80225   247.9136    990.4321    3.9951  0.50011207  5   
2   Асніг тепло оберігає тарадує людей
9   25  720009  2.7778  80001.0000  28800.3600  0.00006944  4   
1   свята Різдвяна радість огортає
1   16  460804  16.0000 460804.0000 28800.2500  0.00006944  5   
1   Длядерева затих той теплий рух
1   3674    35560   3674.4694   35559.5556  9.6775  0.20665984  5   
1   Тасили додає йому той зріст
36  36  51236   1.0000  1423.2222   1423.2222   0.00140428  3   
1   ігнучкість іміцне здоров'я
0   45009   460809  Infinity    Infinity    10.2382 0.19534775  6   
1   Цепори року йдерево просте Ами люди
2226    51236   51236   23.0148 23.0148 1.0000  1.91671793  3   
5   Багатші ірухливі іповсюди
5016    204804  720004  40.8301 143.5415    3.5156  0.56496097  3   
2   Ущасті ми активні
1254    1254    8893    1.0000  7.0916  7.0916  0.24716936  2   
1   айакнійдемо донього
    поступово
    людяно
------------------------------------------------------------------------------------------------------
1   2   3   4   5   
22  5   1   0   3   
70.97%  16.13%  3.23%   0.00%   9.68%   
0.3905+-0.4959  0   31
2   3   4   5   6   7   
1   14  10  5   1   0   
******************************************************************************************************
1   .   .   .   .   
7   3   1   .   3   
9   1   .   .   .   
4   1   .   .   .   
1   .   .   .   .   
.   .   .   .   .   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1   0   0   0   0   
7   3   1   0   3   
9   1   0   0   0   
4   1   0   0   0   
1   0   0   0   0   
0   0   0   0   0   
======================================================================================================
propertiesTextG3 \textcolor{green">1_20000 Shchaslyve_derevo.txt  s  1 0 +d 56.csv H02z | distributionTextG s 1 +W 
    5
80000   80000   80003   1.0000  1.0000  1.0000  0.99998469  4   
1   Яке воно щасливе дерево
0   20000   80003   Infinity    Infinity    4.0001  0.49998400  5   
2   Ти можеш бачити цвіте воно
180001  4500000 4500000 24.9999 24.9999 1.0000  1.92307669  3   
5   Закриєш очі плодоносить
20001   180001  180001  8.9998  8.9998  1.0000  1.79999594  3   
5   Радітимеш побачивши його
720000  4500000 4500001 6.2500  6.2500  1.0000  1.72413762  3   
5   іквітним іводночас плідним
720001  4500001 6480002 6.2500  9.0000  1.4400  1.24999987  4   
4   Анавесні колищеквіту там нема
20000   80003   80003   4.0001  4.0001  1.0000  1.60001024  3   
5   Чийе щасливим дерево
80000   320004  320004  4.0000  4.0000  1.0000  1.60000400  4   
5   Напевне Унадії втій порі
80000   320000  320000  4.0000  4.0000  1.0000  1.60000025  3   
5   щосонце гріє Івранці
0   20001   320001  55558.3333  888891.6667 15.9993 0.12500572  4   
1   сяють теплі йпрохолодні роси
0   0   80000   4.0000  2000009.0000    500002.2500 0.00000400  4   
1   Приходиш ти донього навесні
720000  720000  720003  1.0000  1.0000  1.0000  0.99999822  3   
1   ібачиш дерево щасливим
20003   80001   80001   3.9995  3.9995  1.0000  1.59996304  3   
5   Прийдеш улітку восени
80000   320000  320064  4.0000  4.0008  1.0002  1.59974371  4   
5   ізнову зустрічаєш його милим
80001   80004   320003  1.0000  4.0000  3.9998  0.40001644  3   
1   усміхненим красивим і
2   20010   80010   8893.4400   35560.1067  3.9985  0.50017791  3   
2   дзвінким відспіву птахів
80001   80003   180003  1.0000  2.2500  2.2500  0.61539588  3   
1   Уранці ввечері чивдень
720000  2880000 2880041 4.0000  4.0001  1.0000  1.59998193  4   
5   постійно бачиш його квітним
20000   80001   180003  4.0000  9.0001  2.2500  0.79999976  4   
2   Підійдеш ближче ось воно
0   80000   320001  720000.5625 2880009.0000    4.0000  0.49999865  5   
2   Відходиш далі хочеш бути знов
80000   320001  320002  4.0000  4.0000  1.0000  1.59999789  3   
5   Авзимку чищасливе дерево
0   180000  720004  720001.0000 2880016.0000    4.0000  0.49999774  4   
2   Так боземля його тримає
720000  1620001 4500004 2.2500  6.2500  2.7778  0.62068956  5   
2   Асніг тепло оберігає тарадує людей
80002   500000  500002  6.2498  6.2499  1.0000  1.72412455  4   
5   свята Різдвяна радість огортає
20000   320000  320004  16.0000 16.0002 1.0000  1.88233080  5   
5   Длядерева затих той теплий рух
0   20000   320001  125001.1480 2000006.2500    15.9999 0.12500069  5   
1   Тасили додає йому той зріст
720000  720000  720003  1.0000  1.0000  1.0000  0.99999822  3   
1   ігнучкість іміцне здоров'я
0   180002  500002  Infinity    Infinity    2.7778  0.72000644  6   
2   Цепори року йдерево просте Ами люди
80000   720003  720003  9.0000  9.0000  1.0000  1.80000039  3   
5   Багатші ірухливі іповсюди
80010   80010   320004  1.0000  3.9995  3.9995  0.40003696  3   
1   Ущасті ми активні
80000   80000   80000   1.0000  1.0000  1.0000  0.99999761  2   
1   айакнійдемо донього
    поступово
    людяно
------------------------------------------------------------------------------------------------------
1   2   3   4   5   
10  7   0   1   13  
32.26%  22.58%  0.00%   3.23%   41.94%  
1.0681+-0.6072  0   31
2   3   4   5   6   7   
1   14  10  5   1   0   
******************************************************************************************************
1   .   .   .   .   
5   1   .   .   8   
3   2   .   1   4   
1   3   .   .   1   
.   1   .   .   .   
.   .   .   .   .   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1   0   0   0   0   
5   1   0   0   8   
3   2   0   1   4   
1   3   0   0   1   
0   1   0   0   0   
0   0   0   0   0   
======================================================================================================

У першому випадку перший аргумент суттєво підсилює аналіз за 2-складовим компонентом, у другому — за 3-складовим. Якщо Ви порівняєте виділені червоним кольором статистики (середнє значення та стандартне вибіркове квадратичне відхилення) у обох випадках, то побачите, що на рівні тексту підсилення 2-складових компонентів дає значно менший за 1 результат, що означає, що дані сильно зсунуті вліво, до менших значень, а в другому випадку дає навіть більший за 1 результат, що говорить, що дані більше зміщені вправо, до більших значень. Але це не означає, що текст ближчий до віршів з трискладовим віршовим розміром. Багато рядків є класичними рядками з двоскладовим розміром (наприклад, ямбом). зокрема: "свята Різдвяна радість огортає" (виділена синім кольором), але з точки зору тривалостей складів вона значно більше підходить для трискладової стопи. Це також є прикладом різниці у силабічному та тонічному віршуваннях.

Обмеження (constraints)

При запуску програми lineVariantsG3 можна вказати як аргументи командного рядка обмеження. Вони дозволяють зменшити кількість обчислень, розглядати лише певні варіанти (наприклад, з певним визначеним порядком деяких слів тощо), що дозволяє фактично розширити можливості програми. Ці обмеження кодуються як аргументи командного рядка між двома спеціальними позначеннями +a та -a. Вони утворюють групу аргументів, які можуть стояти будь-де у рядку вводу даних. У залежності від того, чи вказуються ці аргументи, програма ставить чи не ставить додаткове питання для перевірки та підтвердження (так званий double check).

Типів обмежень є 6, їх можна довільно комбінувати, але з дотриманням меж для кожного з них.

На рисунку поряд видно, що усі типи реалізовані з одним аргументом, який подібний у всіх них – це кількість слів (чи їх сполучень) у рядку. Користувач, запустивши програму, уже не може коригувати в ході її роботи цю кількість, але вона важлива для обмежень загалом. Жодний з цифрових символів у обмеженнях не повинен бути більшим за це число, також це число саме не більше 6 і не менше 0. Також необхідною умовою є те, що жодні цифрові символи в межах одного кодованого обмеження не можуть повторюватися двічі. Наприклад, завідомо не є валідними обмеження: Q2235 (повтор цифр), E2 (цифрові символи там, де їх немає), T247 (7 більша 6), F0 (один символ замість необхідних двох), A37523 (7 більша 6), B5 (один символ, а мають бути ще). Неправильно задані обмеження або не вплинуть на результат (хоча буде очікуватися інше), або викличуть помилку виконання (runtime exception) і зупинку роботи програми. Оскільки результат їх застосування не є простим, тому програма при їх заданні виводить на екран рядок, до якого будуть застосовані введені обмеження з додатковим запитанням, чи всі дані введено правильно.

Типи обмежень та їх значення наведено детальніше далі.

Паралельне виконання програм

Зазвичай усі програми пакету виконуються одним ядром процесора. При цьому для всіх програм, які розглядаються, є можливість включити режим роботи на кількох ядрах – паралельні обчислення. Для цього серед аргументів командного рядка мають бути наступні:

 +RTS -N -RTS 

Їх розміщення не впливає на порядок та значення інших аргументів командного рядка, також між записами RTS можуть бути інші параметри. Детальніше про ці параметри дивіться документацію англійською («Glasgow Haskell Compiler User’s Guide. 7.5. Using SMP parallelism.», б. д.).

Можна рекомендувати ці параметри лише для програми propertiesTextG3. Для інших програм вони не рекомендуються, хоча Ви можете ними користуватися (вони просто збільшать використання ресурсів).

Подяки

Автор хоче висловити подяку авторам роботи Provably Correct, Asymptotically Efficient, Higher-Order Reverse-Mode Automatic Differentiation Faustyna Krawiec, Simon Peyton-Jones, Neel Krishnaswami, Tom Ellis, Richard A. Eisenberg та Andrew Fitzgibbon за ідею щодо оптимізації, а також Mikolaj Konarski за те, що звернув увагу автора на цю статтю. Також автор висловлює подяку своїм друзям, яких він хотів порадувати цим дослідженням. Також автор висловлює подяку кожній людині, яка щиро сприяла у тій чи іншій формі проведенню дослідження.

Alexander, Shlomo, і Raymond Orbach. 1982. «Density of states on fractals:fractons». Journal de Physique Lettres 43 (17): 625–31.
Andres, Jan, Jiřı́ Fišer, Grzegorz Gabor, і Krzysztof Leśniak. 2005. «Multivalued fractals». Chaos, Solitons & Fractals 24 (3): 665–700.
Andres, Jan, і Miposlav Rypka. 2012. «Multivalued fractals and hyperfractals». International Journal of Bifurcation and Chaos 22 (01): 1250009.
Astésano, Corine. 2001. Rythme et accentuation en français: invariance et variabilité stylistique. Editions L’Harmattan.
Avnir, David, Ofer Biham, Daniel Lidar, і Ofer Malcai. 1998. «Is the geometry of nature fractal?» Science 279 (5347): 39–40.
Barnsley, Michael F, John E Hutchinson, і Örjan Stenflo. 2008. «V-variable fractals: fractals with partial self similarity». Advances in Mathematics 218 (6): 2051–88.
Bishop, Christopher J, і Yuval Peres. 2017. Fractals in probability and analysis. Вип. 162. Cambridge University Press.
Boltz, Marilyn G. 1998. «Tempo discrimination of musical patterns: Effects due to pitch and rhythmic structure». Perception & Psychophysics 60 (8): 1357–73.
Cason, Nia, Corine Astésano, і Daniele Schön. 2015. «Bridging music and speech rhythm: Rhythmic priming and audio–motor training affect speech perception». Acta psychologica 155: 43–50.
Coca, Andrés E, Gerard O Tost, і Zhao Liang. 2009. «Controlling Chaotic Melodies». Proc. Encuentro Nacional de Investigación en Posgrados (ENIP).
Cooper, G. W., G. Cooper, L. B. A. MEYER, і L. B. Meyer. 1963. The Rhythmic Structure of Music. Phoenix books. University of Chicago Press. https://books.google.com.ua/books?id=V2yXrIWDTIQC.
Daniele, Joseph R, і Aniruddh D Patel. 2013. «An empirical study of historical patterns in musical rhythm: Analysis of German & Italian classical music using the nPVI equation». Music Perception: An Interdisciplinary Journal 31 (1): 10–18.
Degara, Norberto, Matthew EP Davies, Antonio Pena, і Mark D Plumbley. 2011. «Onset event decoding exploiting the rhythmic structure of polyphonic music». IEEE Journal of Selected Topics in Signal Processing 5 (6): 1228–39.
Degara, Norberto, Antonio Pena, Matthew EP Davies, і Mark D Plumbley. 2010. «Note onset detection using rhythmic structure». В 2010 IEEE International Conference on Acoustics, Speech and Signal Processing, 5526–29. IEEE.
Drake, Carolyn, і Caroline Palmer. 1993. «Accent structures in music performance». Music perception 10 (3): 343–78.
Galves, Antonio, Jesus Garcia, Denise Duarte, і Charlotte Galves. 2002. «Sonority as a basis for rhythmic class discrimination». В Speech Prosody 2002, International Conference.
Garba, EJ. 2008. «MUSIC PROGRAMMING–RULE-BASED RANDOMIZATION OF MELODIC PATTERNS».
«Glasgow Haskell Compiler User’s Guide. 7.5. Using SMP parallelism.» б. д.
Goldsmith, Alex. б. д. «Synthesising music: exploiting self-similarity using modular forms».
Gross, H. S. б. д. "prosody." Encyclopedia Britannica.
Hannon, Erin E. 2009. «Perceiving speech rhythm in music: Listeners classify instrumental songs according to language of origin». Cognition 111 (3): 403–9.
Holzapfel, Andre, і Yannis Stylianou. 2008. «Rhythmic similarity of music based on dynamic periodicity warping». В 2008 IEEE International Conference on Acoustics, Speech and Signal Processing, 2217–20. IEEE.
Huron, David, і Matthew Royal. 1996. «What is melodic accent? Converging evidence from musical practice». Music Perception 13 (4): 489–516.
Hutchinson, John E. 1981. «Fractals and self similarity». Indiana University Mathematics Journal 30 (5): 713–47.
Iversen, John R, Aniruddh D Patel, і Kengo Ohgushi. 2008. «Perception of rhythmic grouping depends on auditory experience». The Journal of the Acoustical Society of America 124 (4): 2263–71.
Iyer, Vijay, Jeff Bilmes, Matt Wright, і David Wessel. 1997. «A novel representation for rhythmic structure». В Proceedings of the 23rd International Computer Music Conference, 97–100. Citeseer.
Kigami, Jun. 2001. Analysis on fractals. 143. Cambridge University Press.
Magne, Cyrille, Mitsuko Aramaki, Corine Astesano, Reyna Leigh Gordon, Sølvi Ystad, Snorre Farner, Richard Kronland-Martinet, і Mireille Besson. 2005. «Comparison of rhythmic processing in language and music: An interdisciplinary approach». Journal of Music and Meaning 3.
Mandelbrot, Benoit B, і Benoit B Mandelbrot. 1982. The fractal geometry of nature. Вип. 1. WH freeman New York.
Merges, Kevin. 2005. «Fractals and Art».
Nabytovych, Ihor. б. д. «ФРАКТАЛИ ТА ФРАКТАЛЬНІ СТРУКТУРИ У ХУДОЖНЬОМУ ТЕКСТІ (на прикладі прози Л. Керрола, КС Льюїса та ХЛ Борхеса)». ВІСНИК ЛЬВІВСЬКОГО УНІВЕРСИТЕТУ. Серія іноземні мови, вип. 18.
Overy, Katie. 2003. «Dyslexia and music: From timing deficits to musical intervention». Annals of the New York academy of sciences 999 (1): 497–505.
Partap, Narayan, і Renu Chugh. 2016. «Fixed Point Iterative Techniques–An Application to Fractals». International Journal of Research in Mathematics & Computation 4 (1): 1–7.
Patel, Aniruddh D. 2003. «Rhythm in language and music: parallels and differences». Annals of the New York Academy of Sciences 999 (1): 140–43.
Patel, Aniruddh D, і Joseph R Daniele. 2003a. «An empirical comparison of rhythm in language and music». Cognition 87 (1): B35–45.
———. 2003b. «Stress-timed vs. syllable-timed music? A comment on Huron and Ollen (2003)». Music Perception 21 (2): 273–76.
Ramanujam, Rohit Sunkam, і Bill Lin. 2008. «Randomized partially-minimal routing on three-dimensional mesh networks». IEEE Computer Architecture Letters 7 (2): 37–40.
Ramus, Franck. 2002. «Acoustic correlates of linguistic rhythm: Perspectives».
Saupe, Dietmar. 1988. «Algorithms for random fractals». В The science of fractal images, 71–136. Springer.
Shao, Xi, Changsheng Xu, і Mohan S Kankanhalli. 2004. «Unsupervised classification of music genre using hidden markov model». В 2004 IEEE International Conference on Multimedia and Expo (ICME)(IEEE Cat. No. 04TH8763), 3:2023–26. IEEE.
Shields, Joyce L, Astrid McHugh, і James G Martin. 1974. «Reaction time to phoneme targets as a function of rhythmic cues in continuous speech.» Journal of Experimental Psychology 102 (2): 250.
Strichartz, Robert S. 1998. «Fractals in the large». Canadian Journal of Mathematics 50 (3): 638–57.
Todd, Neil P McAngus. 1993. «Segmentation and stress in the rhythmic structure of music and speech: A wavelet model». The Journal of the Acoustical Society of America 93 (4): 2363–63.
Trost, Wiebke, і Patrik Vuilleumier. 2013. «Rhythmic entrainment as a mechanism for emotion induction by music: a neurophysiological perspective». The emotional power of music: Multidisciplinary perspectives on musical arousal, expression, and social control, 213–25.
Vitiello, Giuseppe. 2017. «The Brain is like an orchestra. Better yet, it is like a jazz combo, which doesn’t need a conductor». Chaos 11 (1): 2017.
Vuust, Peter, Leif Ostergaard, Karen Johanne Pallesen, Christopher Bailey, і Andreas Roepstorff. 2009. «Predictive coding of music–brain responses to rhythmic incongruity». cortex 45 (1): 80–92.
Wan-Li, Huang. 1983. «The extremity laws of hydro-thermodynamics». Applied Mathematics and Mechanics 4 (4): 501–10.
Welch, Kerri. 2010. A fractal topology of time: Implications for consciousness and cosmology. California Institute of Integral Studies.
Wildgen, Wolfgang. 1998. «Chaos, fractals and dissipative structures in language. Or the end of linguistic structuralism». Gabriel Altmann und Walter A. Koch (Hg.), Systems. New Paradigms for the Human Sciences, de Gruyter, Berlin, 596–620.
Zentner, Marcel, і Tuomas Eerola. 2010. «Rhythmic engagement with music in infancy». Proceedings of the National Academy of Sciences 107 (13): 5768–73.
Zhabenko, Oleksandr. б. д.a. «dobutokO-poetry».
———. б. д.b. «phonetic-languages-rhythmicity».
———. б. д.c. «phonetic-languages-simplified-generalized-examples-array».
А., Смаглій Г. 2013. «Теорія музики : Підруч. для навч. закл. освіти, культури і мистецтв.» Х.: Вид-во «Ранок».
Анатолія Волкова, Під ред. 2001a. «Адекватний переклад // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001b. «Айрен // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001c. «Александрійський вірш // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001d. «Алкеєва строфа // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001e. «Алкманова або Архілохова строфа // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001f. «Античні розміри // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001g. «Античні строфи // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001h. «Аруз, або Аруд // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001i. «Асклепіадова строфа // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001j. «Баяті // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001k. «Буриме // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001l. «Варіативність // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
———. 2001m. «Верлібр // Лексикон загального та порівняльного літературознавства.» Чернівці: Золоті литаври.
Гуцуляк, МИКОЛА ВАСИЛЬОВИЧ. 2017. «Українське віршування 30-80-х рр. XVII ст». Phdthesis, Теорія літератури. Чернівці: ЧНУ ім. Юрія Федьковича, 2017.
Івончак, П. 2012. «Український силабо-тонічний вірш 50-х років ХІХ століття». Науковий вісник Чернівецького національного університету. Слов’янська філологія, вип. 585-586: 80–84.
Костенко, Наталія. б. д. «ЕЛЕМЕНТИ ТОНІЧНОГО І СИЛАБІЧНОГО ВІРШУВАННЯ В ДУМОВОМУ ВІРШІ ТГ ШЕВЧЕНКА». НАШ УКРАЇНСЬКИЙ ДІМ, 38.
Кошовий, АГ, і ГІ Кошовий. 2011. «Одновимірні самоподібні фрактали та їх використання у моделюванні».
Кудряшова, Оксана Валентинівна. 2016. «Functional poetics».
Л. Л. Звонська, О. В. Лазер-Паньків та ін., Н. В. Корольова. 2017. «Ямбічна строфа // Енциклопедичний словник класичних мов.» К.: ВПЦ <<Київський університет>>.
Любімова, ОВ. 2011. «Відтворення античних розмірів в українській поезії 80-х–90-х років ХІХ століття». Науковий вісник Чернівецького університету. Романо-слов’янський дискурс, вип. 565: 190–93.
Паладян, К. 2010. «Початки силабо-тонічної версифікації в румунській літературі». Питання літературознавства, вип. 81: 164–72.
Шарко, ВД. б. д. «Актуальні проблеми природничо-математичної освіти в середній і вищій школі».
Шевченко, Тарас. 2018. Садок вишневий коло хати. Strelbytskyy Multimedia Publishing.