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) робиться аналіз, чи можуть слухачі визначати за ритмами музики (мову якої вони добре знають), якою мовою ця пісня. Як виявилося, у багатьох випадках можуть. Слухачі можуть використовувати подібності та відмінності в ритмічних структурах мов для визначення, якою мовою була складена пісня.
Цікава додаткова інформація щодо ритму та суміжних музичних явищ є в роботі:
Adam Neely. Solving James Brown’s Rhythmic Puzzle. Adam Neely. 2021.
Поки програми працюють для робочих станцій (десктопів, desktop, working station тощо), і немає мобільних версій.
Потрібно, щоб були встановлені та налаштовані програми мовою Haskell:
Виконувані файли цих програм мають бути доступні для пошуку через змінну робочого середовища 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 (наведеними вище командами).
У новій версії зроблено спробу оптимізувати обчислення перетворення українського тексту на дані для аналізу. Також виправлено дублювання значень для ліній 4 та 3 для різних типів властивостей. Якщо Ви бажаєте відтворити попередні результати для лінії 4, то тепер потрібно для цього використовувати лінію 3, натомість 4 лінія потенційно має давати більш рекомендований автором результат. Також змінено правила нумерації версій, щоб з часом дозволити більш стабільні випуски та можливість відтворити результати роботи програм для тієї чи іншої версії у майбутньому.
У новій версії були виправлені неправильно визначена зміна структури виводу (перетворення інтервалів) так, щоб програми тепер працювали, як описано. Якщо ви використовували раніше зміну структури з аргументами, то всі результати повинні бути повторно розглянуті (заново отримані) з використанням виправленої версії 0.18.0.0. Автор просить вибачення за можливі незручності. Покращена документація. Додано приклади двох нових наборів значень тривалості, доступних як готовий до використання файл за постійним посиланням: відкрити тут. Виправлено помилку з інтерпретатором рядків (див. відповідну інформацію) і додано можливість краще налаштувати поділ сполучення на частини.
У новій версії додано підтримку додаткових властивостей, а також режиму кількох властивостей для distributionTextG. Покращено теоретичну частину даного документа. Виправлено деякі помилки в коді. Переключено в обчисленнях середнього значення та стандартного середнього квадратичного відхилення з популяційних до вибіркових версій (тепер стандартне квадратичне відхилення дещо більше). Виправлено помилку в режимі кількох варіацій, якщо Ви не працюєте в інтерактивному режимі.
У новій версії здійснено суттєву зміну функціональності, додано режим склад-як-одне-ціле (syllable-as-a-whole – SaaW), який дозволяє враховувати не лише тривалості фонем чи фонетичних явищ, але і задавати ваги складів, що дозволяє в першу чергу розрізняти наголошені та ненаголошені склади, а також враховувати широке коло просодичних факторів, включаючи логічні наголоси, інтонацію, загальний характер вимови тощо, і може бути використане для створення також і силаботонічної поезії, музичних творів та ін. Також це узагаьнення дозволяє аналізувати ширше коло мов як фонетичні мови. Виправлено помилки у сегментації на склади та слова. Тепер слова з дефісами та апостофом сегментуються кращим, більш відповідним чином (до потреб підходу і загалом). Виправлено помилку для неповної множини перестановок для кодування-декодування 10-го слова, яка могла приводити до неправильної роботи. Здійснено для цього перехід від дясяткової до шістнадцяткової системи числення. Загалом усі зміни призводять до того, що вивід програм може частково змінитися, і тому якщо потрібна точність в обчисленнях, то результати потрібно перерахувати заново.
Виправлено роботу зі зміною інтервалів. Деякі незначні покращення документації.
Додано можливість шукати суму періодів унікальності не для всіх одиниць, які мають позначення числом, меншим 100 (більшість з яких — фонеми, але серед яких є і позначення м’якого знаку для усіх приголосних, крім "сь" та "ць"), а лише для певних заданих одиниць, серед яких можуть бути наперед визначені типи фонем (наприклад, голосні чи дзвінкі приголосні), — як одну з властивостей, доступних для усіх програм.
У програмі lineVariantsG3 додано можливість змінювати аргументи виклику програми разом з текстом у рекурсивному режимі, а також змінено порядок сортування і виводу рядків у деталізованому режимі кількох властивостей з параметрами виклику "+v 2".
У програмі propertiesTextG3 додано можливість читати текст прямо з вводу, а не з файлу, можливість "розписувати" варіанти тексту (яка раніше була введена для lineVariantsG3), а також режим статистики за складами.
У програмі rewritePoemG3 збільшено кількість можливих джерел для створення комбінованого файлу з 7 до 14.
Виправлено помилку в документації щодо логічного наголосу. Зроблено обґрунтоване припущення, як Тарас Шевченко писав вірш "Садок вишневий коло хати".
Перевірте, щоб папка (каталог), куди cabal встановив виконувані файли програм, була доступна для пошуку в змінній середовища PATH.
У новій версії є два головних режими роботи:
зі складом-як-одним-цілим (SaaW), коли кожний склад розглядається як одне ціле, як базова одиниця, з можливістю задавати числову характеристику у вигляді числа типу Double; він застосовується, якщо:
серед позначень властивостей є хоча б одне з літерою ’a’ в написанні;
серед аргументів командного рядка послідовно (поза межами груп +m …-m та +a -a) введено "+s" і наступним – натуральне число, не менше від 1, яке позначає, скільки різних множин пар "склад-число" буде задано користувачем для роботи режиму;
звичайний (був єдиним можливим до цієї нової версії), режимом фонетичне-явище-як-одне-ціле (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, +i, +f, то після кожного рядка буде відображено 2 числа у квадратних дужках – первинне значення властивості (без переміщення інтервалів) і значення після переміщення. Якщо був (хоча б) один з цих (груп) символів – значення властивостей друкуватися не буде.
Також слід пам’ятати, що:
+bl == +b +l
(це просто скорочення використання відразу обох параметрів, замість 5 символів потрібно ввести лише 3).
Якщо Ви вказуєте також +f або +i, тоді цей параметр можна не вказувати (його буде застосовано автоматично), натомість, якщо бажаєте, можете замість нього задати додатково +b.
Якщо де-небудь серед аргументів командного рядка вказати аргумент у вигляді +b (або +bl), то програма збереже при виведенні та аналізі останнє слово у рядку на своєму місці – це дуже зручно, коли потрібно, маючи риму, підібрати інші слова. Якщо не вказувати, то усі слова будуть переміщуватися (при необхідності). Робота параметра реалізована фактично як додаткове обмеження (constraint), дивіться нижче. Ви можете також додаткво задавати інші обмеження.
+bl == +b +l
(це просто скорочення використання відразу обох параметрів, замість 5 символів потрібно ввести лише 3).
Про використання інших параметрів трохи згодом.
Якщо серед аргументів командного рядка задати групу аргументів, виділену розділювачами +m та -m, так щоб група аргументів виділена розділювачами +a та -a не була всередині цієї, і навпаки (щоб вони не перетиналися), тоді програма працюватиме в режимі кількох властивостей. Значення властивостей виводитися на екран не будуть, натомість є можливість задати не більше чотирьох різних властивостей та до кожної з них вказати аргументи (дивіться: Більш комплексне використання). Програма тоді знайде варіанти, які задовольняють кожну з вказаних умов, а потім виведе на екран лише ті варіанти, які зустрічаються у всіх обраних і заданих властивостях з параметрами. Числові аргументи, які стоять після позначення властивості і передують наступному позначенню властивості, відносяться до цієї властивості. Якщо числові аргументи опущено, то використовуються значення за замовчуванням (фактично це еквівалентно простому пошуку максимальних значень властивості). Загалом, це комплексне використання даної програми.
Спробуйте, наприклад, задати:
lineVariantsG3 +m 02y 3 03y 3 y0 10 -m +bl <український текст>.
Інтерактивний режим (додаткова розширена взаємодія з користувачем,
крім необхідної) вмикається і відповідно задається аргументом командного
рядка +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 <шлях до файлу запису>, то у вказаний шлях, якщо є змога, буде дописано фінальний результат роботи програми, окрім того, що він як і в звичайному інтерактивному режимі буде виведений на екран. Ця група може стояти будь-де серед аргументів командного рядка виклику програми, але не повинна міститися всередині інших гру виду +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
, наприклад, на початку після першого аргументу. У такому
випадку програма буде виконуватися рекурсивно, пропонуючи завершити
рекурсію на кожному окремому кроці. При цьому її результатом буде
останній перед завершенням результат роботи. Цей режим несумісний з
обмеженнями (тому що обмеження втрачають своє правильне значення і
починають зміщуватися
з потрібних частин тексту на інші), тому
має використовуватися окремо від них, може бути їх альтернативою. При
цьому при кожному виклику немає змоги змінити властивості та параметри
виклику цих крайніх, тому обирайте їх доречно. Зміни в тексті в цьому
режимі задають через так званий рядок інтерпретатора, тобто текстовий
ввід, який у арифметичному виразі – числі або частці кодує наступні дії
програми.
Якщо в рядку інтерпретатора введене двоцифрове число, тоді першу
цифру програма намагається витлумачити як номер першого слова, до якого
застосовується зміна, а другу цифру вона намагається витлумачити як
кількість слів, які потрібно конкатенувати (з’єднати разом в одне довше
слово
), включаючи вказане перше. Далі програма (якщо введені дані
можна так інтерпретувати без помилки) працюватиме з новоутвореним
текстом. Відлік слів починається з 1. Наприклад, запис 12
означатиме, що програма з’єднає перше слово (цифра 1
) з
наступними, щоб кількість з’єднаних була рівна 2 (цифра 2
), тобто
з’єднає перші два слова в одне. 34
означатиме, що програма
спробує з’єднати 4 послідовних слова, починаючи від 3-го. Якщо це
неможливо зробити, програма виконає попередній етап повторно,
запропонувавши ввести рядок інтерпретатора ще раз.
Якщо введено трицифрове чи багатоцифрове число, тоді усі цифри, які не рівні 0, програма намагатиметься приписати номерам слів, які потрібно з’єднати у тому порядку, в якому цифри записані в рядку інтерпретатора.
Якщо ввести цифру (не рівну 0 і меншу за кількість слів у рядку),
потім після неї символ ділення /
і тоді ,ціле число зі знаком, то
перша цифра до знаку ділення буде означати номер слова (починаючи з 1),
яке буде розділятися на дві частини, а друге число буде кількість
символів, які програма відрахує від початку цього слова (якщо число
додатнє) вліво або з кінця слова вправо (якщо число від’ємне), щоб його
поділити (додатній випадок схожий на функцію стандартної бібліотеки
Haskell splitAt
). Тоді вона, якщо вказані дані вдалося так
інтерпретувати, розділить вказане слово на дві частини (одна з яких
може бути порожньою, порожнім рядком) і далі працюватиме з текстом, у
якому вказане слово замінено цими двома (або лише першим з них, якщо
вони непорожні і кількість слів у рядку уже була рівна 7 до моменту
поділу або 10 у випадку неповної можини перестановок). Наприклад,
садоквишневий
рядок інтерпретатора рівний 1/5
, якщо це
перше слово у тексті, перетворить на садок вишневий
(відрахувавши
від початку 5 символів) і працюватиме з новим текстом далі. Починаючи з
версії 0.18.0.0, додано перевірку програмою для довгих сполучень слів.
Якщо після ’/’ ввести число, модуль якого більший 7 (наприклад, 9 чи
-15), то вона спочатку виведе на екран те слово, яке має бути розділене
на дві частини згідно введеного значення (як описано щойно), додавши
попереду ”?: ”; якщо поділ виконаний правильно, тоді потрібно натиснути
Enter. Якщо ”неточний” поділ, то потрібно вказати слово (цифрою 1 чи 2)
і через пробіл (”змістити” пробіл вліво або вправо на) N (має бути
більшим 0), це все вводиться тут же у новому рядку, і далі знову буде
запит ”?: ” типу. Програма буде повторювати поділ доки не буде натиснуто
просто Enter. Це дозволяє не рахувати більше 8 символів підряд,
намагаючись отримати поділ у потрібному місці для довгих сполучень, а
швидко визначити ”на око”, приблизно, а потім скорегувати. Цю опцію
додано для зручності.
Починаючи з версії 0.21.0.0 можна задати також зміни аргументів виклику програми. Зміни задаються у форматі:
{аргументи стосовно злиття чи розбиття слова / слів} +{натуральне число від 0 до 7, \
варіант перетворення чи збереження аргуметів} {змінені аргументи в їх звичайному \
форматі для командного рядка}
Деталі дивіться нижче, а зараз приклад. Ось, наприклад, як можна від режиму однієї властивості та англомовних інформаційних повідомлень перейти в режим кількох властивостей та україномовних повідомлень.
lineVariantsG3 +r 3 02y текстовий рядок для можливих перетворень аргументів
0
1 дльаможливих аргументьів рьадок перетворень текстовий
2 дльаможливих перетворень текстовий рьадок аргументьів
3 дльаможливих перетворень рьадок аргументьів текстовий
4 дльаможливих аргументьів текстовий рьадок перетворень
5 текстовий дльаможливих аргументьів рьадок перетворень
6 дльаможливих аргументьів текстовий перетворень рьадок
7 текстовий рьадок аргументьів перетворень дльаможливих
8 аргументьів рьадок перетворень текстовий дльаможливих
Please, specify the variant which you would like to become the resulting
string by its number.
3
If you would like to run the program (call the function) recursively with
changes for the words or letter connections then, please, enter here the
encoded string of the interpreter. If you would NOT like to use it
recursively, then just press Enter.
12 +1 +m 02y 10 y0.vw 20 -m +u
1 аргументьів дльаможливихперетворень рьадок текстовий
2 аргументьів дльаможливихперетворень текстовий рьадок
3 аргументьів рьадоґ дльаможливихперетворень текстовий
4 аргументьів текстовий дльаможливихперетворень рьадок
5 аргументьів текстовий рьадоґ дльаможливихперетворень
6 дльаможливихперетворень аргументьів рьадок текстовий
7 дльаможливихперетворень аргументьів текстовий рьадок
8 рьадок аргументьів дльаможливихперетворень текстовий
9 текстовий аргументьів дльаможливихперетворень рьадок
10 рьадок аргументьів текстовий дльаможливихперетворень
11 текстовий аргументьів рьадоґ дльаможливихперетворень
12 дльаможливихперетворень рьадок аргументьів текстовий
13 дльаможливихперетворень текстовий аргументьів рьадок
14 рьадоґ дльаможливихперетворень аргументьів текстовий
15 текстовий дльаможливихперетворень аргументьів рьадок
16 рьадок текстовий аргументьів дльаможливихперетворень
17 текстовий рьадок аргументьів дльаможливихперетворень
18 дльаможливихперетворень рьадок текстовий аргументьів
19 дльаможливихперетворень текстовий рьадок аргументьів
20 рьадоґ дльаможливихперетворень текстовий аргументьів
21 текстовий дльаможливихперетворень рьадок аргументьів
22 рьадок текстовий дльаможливихперетворень аргументьів
23 текстовий рьадоґ дльаможливихперетворень аргументьів
Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим
рядком) за його номером.
19
Якщо бажаєте запустити програму (функцію) рекурсивно, змінюючи сполучення слів
та букв, введіть тут закодований рядок інтерпретатора. Якщо бажаєте не
використовувати програму (функцію) рекурсивно, просто натисніть Enter.
дльаможливихперетворень текстовий рьадок аргументьів
Змінити можна багато аргументів, але не можна вийти з рекурсивного режиму роботи, не можна додати до аналізованого рядка додатковий текст або забрати (не збільшуючи кількість "слів" чи їх "сполучень" більше максимально можливої) частину тексту. Для цих змін потрібно припинити виклик програми (можливо, без збереження результатів) і запустити її заново з новими аргументами.
Аргументи змніюються наступним чином в залежності від введених даних.
+u (україномовні повідомлення) — якщо задано при зміні +u, то будуть використані україномовні повідомлення, інакше буде використане попереднє значення;
+b (фіксування останнього слова на своїй позиції) — якщо задано при зміні +b, то зафіксувати останнє слово, інакше буде використане попереднє значення;
+l (чи виводити значення властивостей, чи лише рядок) — якщо задано при зміні +l, то буде виведено лише рядок, інакше буде використане попереднє значення (у рекурсивному режимі ця зміна мало на що впливає);
перший аргумент — якщо задано новий перший аргумент, то буде використаний він, якщо ні — то попереднє значення;
WX-аргумент — якщо задано новий, то буде використане нове значення, інакше — попереднє значення;
+s (режим SaaW) — якщо задано нове значення, буде використане воно, інакше — попереднє значення;
натуральне число після +s (кількість варіантів розподілу в режимі SaaW, скільки разів потрібно буде задавати значення) — якщо задане +s як новий параметр, то буде використане число після нього, інакше — попереднє значення;
+d (читання тривалостей зі свого файлу) — якщо задано нове значення, то буде використане воно, інакше — попереднє значення;
+v (деталізація у режимі кількох властивостей) — якщо у режимі кількох властивостей задане нове значення, буде використане воно, інакше — попереднє значення.
Після першого плюса задається натуральне число від 0 до 7, яке визначає, як будуть змінюватися (чи не будуть) наступні групи аргументів у таблиці (1 означає, що буде використане нове введене значення, 0 — що буде використане попереднє).
Введене число | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
args02 (+m …-m) | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
args2 (усі аргументи, які описані перед таблицею) | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
pairwisePermutations | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
Якщо бажаєте точно використати нові значення режиму кількох властивостей чи однієї, усі вищеописані не в таблиці значення, і режими неповних множин перестановок (чи навпаки, перейти від неповної до повної), то після + як число потрібно вказати 1, якщо бажаєте, щоб жодні нові значення не були використані — то 0. Інші числа можна зрозуміти з таблиці.
Якщо Ви серед властивостей використовуєте 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.
лунайе весна вжеприйшла іспьів пташоґ звьідусьіль
Також тут можна було б узяти іспівпташокужелунаєзвідусільприйшлавесна.
Отже, на вибір маємо варіанти:
іспівпташокужелунаєзвідусільприйшлавесна — І спів пташок уже лунає звідусіль: "Прийшла весна!"
лунає весна вжеприйшла іспів пташок звідусіль — Лунає: "Весна вже прийшла!", — і спів пташок звідусіль
прийшлавесна звідусіль уже іспівпташокзвучить — Прийшла весна, звідусіль уже і спів пташок звучить
Інший приклад.
Розглянемо вірш Олександра Сергійовича Жабенка "Щасливе дерево".
— Яке воно — щасливе дерево?
— Ти можеш бачити — цвіте воно;
Закриєш очі — плодоносить.
Радітимеш, побачивши його
і квітним, і водночас плідним.
— А навесні, коли ще квіту там нема,
Чи є щасливим дерево?
— Напевне. У надії, в тій порі,
що сонце гріє. І вранці
сяють теплі й прохолодні роси.
Приходиш ти до нього навесні
і бачиш дерево щасливим.
Прийдеш улітку, восени
і знову зустрічаєш його милим,
усміхненим, красивим і
дзвінким від співу птахів.
Уранці, ввечері чи вдень
— постійно бачиш його квітним.
Підійдеш ближче — ось воно!
Відходиш далі — хочеш бути знов.
— А взимку чи щасливе дерево?
— Так, бо земля його тримає,
А сніг тепло оберігає та радує людей,
свята Різдвяна радість огортає.
Для дерева затих той теплий рух,
Та сили додає йому той зріст,
і гнучкість, і міцне здоров'я.
Це пори року й дерево просте. А ми — люди:
Багатші, і рухливі, і повсюди.
У щасті ми активні,
а як ні, — йдемо до нього
поступово,
людяно.
(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 фактично еквівалентні, але перша з них не обчислює десятковий логарифм (можна очікувати, що вона працює дещо швидше).
Цей режим викликається через задання серед властивостей хоча б однієї з додатковою літерою ’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
Все вищесказане стосується і режиму кількох властивостей. При цьому літера ’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 буде викликати введення даних для складів вручну – це подовжує загальну тривалість обчислень, збільшує роботу людини, але водночас дозволяє змінивши дані отримати видозмінені результати.
Перше ускладнення може не дуже сильно впливати на результати роботи (оскільки для 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’ в позначенні взагалі не впливає.
Якщо Ви бажаєте провести певне дослідження рядка, то можна застосовувати різні схеми для аналізу. Програми надають багато можливостей, тому потрібно проявити доцільність. Ось кілька порад:
Почати аналіз можна задавши, наприклад, послідовно різнохарактерні властивості, наприклад, для двох складів (використовуючи перший аргумент у вигляді N_0.0), трьох складів (перший аргумент у вигляді 0_N), w / x, згодом 5- чи 6-складові варіанти властивостей, можна також свої користувацькі.
Застосування властивостей ’a’ типу потребує більше часу, зате дозволяє задати більше характеристик, а також дає переваги у силаботонічному віршуванні.
Цікаву інформацію можна також отримати, використовуючи деталізацію (див. нижче).
І також багато інших, більш творчих варіантів, зрештою з використанням має розвиватися власне відчуття мови у людини і вона поступово навчатиметься створенню гарних текстів.
Якщо Ви використовуєте режим кількох властивостей (+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) — за спаданням.
При виконанні програм lineVariantsG3, rewritePoemG3 утворюються конкатенації слів для збереження мінімальної граматики та кращого розуміння тексту. Деякі з них є типовими і їх можна легко відрізнити від звичайних (неконкатенованих) слів. Тому для прискорення редагування текстів після використання програм можна застосувати ще одну програму — unconcatUkr.
unconcatUkr 1 <шлях до файлу з конкатенованими сполученнями слів> [<шлях до нового файлу>]
unconcatUkr 2 <шлях до файлу з конкатенованими сполученнями слів> [<шлях до нового файлу>]
unconcatUkr -i
це три принципові способи використання цієї утиліти.
Перший найбільш безпечний, застосовує лише ті розділення сполучень, які майже напевно не призведуть до неправильних слів. Другий більш ризикований, але має більший ефект, тим не менше, застосовуйте з обереженістю (деякі не настільки широко вживані слова будуть неправильно розділені при цьому).
За замовчуванням, якщо цифра не вказана, то вона вважається 1.
Починаючи з версії 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]
Починаючи з версії 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
======================================================================================================
Виділення кольором не буде, тут просто згруповані різні типи даних статистики.
Червоний колір – Десятковий дріб з похибкою – це середнє
арифметичне значення (математичне сподівання) всіх чисел у VІI стовпчику
статистики для рядків, плюс-мінус середнє квадратичне відхилення; у
випадку обраної властивості y0
– часто число близьке до 1.0; може
містити похибку округлення викликану особливостями знаходження суми
чисел з плаваючою крапкою.
У випадку, якщо всі рядки тексту виключаються з аналізу (дивіться: пояснення для оранжевого кольору), то виводиться замість матриць та подальшої інформації лише один рядок тексту – сигнальний напис:
1.000+-0.000!
,
де ‘’͡ означає символ табуляції.
Цей напис означає, що вказаний текст не підходить для аналізу програмою, а також, що будь-які дані, які в ході роботи програми можна було б отримати з цього тексту та супутніх текстів, повинні аналізуватися так, щоб не спростувати зроблені висновки на основі усієї сукупності текстів. Простіше кажучи, у такому випадку можна не враховувати текст, бо при правильному підході до аналізу та інтерпретації даних він не повинен скасувати результати.
Синій колір – Натуральні числа – Матриця розподілу рядків за кількістю слів та інтервалами; елемент матриці у k-му рядку та j-му стовпчику – кількість рядків, для яких значення обраної властивості з вказаними даними потрапляє в інтервал з номером j (нумерація починається з 1), який рівний номеру стовпчика матриці, і містить у рядку k слів (слів або їх сполучень, які відображаються злитно для дотримання мінімальних правил граматики при аналізі та виведенні даних), число k лежить у діапазоні між 2 і 7 включно (рядки, які аналізуються для матриці, містять від 2 до 7 слів (або написаних злитно сполучень)). Таким чином, матриця завжди має 6 рядків, а число стовпчиків буде залежати від введених та наявних даних. Фактично ця матриця заміняє графік двовимірного розподілу даних.
На екран виводиться двічі, одна від іншої відмежована тильдами. У
першому випадку нульові значення не відображаються, замість них стоять
крапки. Це елемент візуалізації даних, який дозволяє краще
побачити
, як виглядає розподіл, де числові значення відповідають
висоті
на графіку розподілу (значенню функції дискретного
двовимірного розподілу). У другому випадку на місці крапок стоять
відповідні значення, які всі рівні 0.
Дані для матриці отримуються з VIII та IX стовпчиків статистики за рядками.
Оранжевий колір – Цілі невід’ємні числа – Загальні кількості рядків. Перше число зліва – кількість рядків, які виключаються з аналізу для матриці, оскільки в них мало даних (1 або менше слів). Рівність 0 означає, що усі рядки виведені на екран беруть участь в аналізі для утворення матриці розподілу. Число справа – загальна кількість рядків у тексті, який виводиться та аналізується (включно з тими рядками, які пораховані зліва).
Зелений колір – Відсотки – Розподіл загальної кількості рядків за інтервалами. Сума відсоткових значень природно рівна 100%. Номери інтервалів надписані зверху над відповідними відсотковими значеннями. Наприклад, напис у цих трьох рядках типу:
1 2
10 15
40% 60%
означає, що з усієї загальної кількості рядків, які піддаються аналізу за допомогою програми (містять достатньо даних), 40% припадає на перший інтервал (з меншим значенням властивості), а 60% – на другий (відповідно з більшим значенням властивості). Тобто таких рядків відповідно 10 і 15.
Усі інтервали рівні за величиною, але можуть мати різні кількості рядків (яка знаходиться в ході роботи програми).
Одновимірний розподіл, за ним можна побудувати гістограму.
Жовтий колір – Натуральні числа – Номери інтервалів. Починається відлік з 1. Під ними відповідні кількості рядків, значення властивості для яких згідно даних потрапляє у відповідний за номером інтервал.
Коричневий колір – Натуральні числа – Кількість слів у рядках. Лежить в межах від 2 до 7 включно (якщо слів менше, тоді рядок отримує значення рівні 1.0 і вилучається з аналізу програмою для матриці). Під ними – відповідні значення кількості таких рядків. 0 відповідає випадку відсутності рядків з даною кількістю слів (чи сполучень, які відображаються як одне слово).
Уважне вивчення цих даних дає змогу зробити певні висновки щодо тексту, їх сукупності, самої моделі та мови.
Тепер, як і для програми 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, додавши до рядка параметр +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 включно.
Якщо задати як один з аргументів командного рядка для propertiesTextG3 символи +b, то програма буде обчислювати усю статистику, наче останнє слово фіксоване обмеженням і не рухається. Фактично у такому випадку смисл цього символу (аргументу) є аналогічним як і для програми lineVariantsG3.
Потрібно пам’ятати, що це звужує інтервал допустимих значень властивостей і при незмінній кількості рядків змінює розподіл всередині інтервалів.
Можливі три випадки:
s
– кількість інтервалів буде визначена за відомим
правилом Стерджеса, де кількість випробувань буде рівною результуючій
кількості рядків;
l
– кількість інтервалів буде визначена за рекомендацією
В. П. Левинського (див.: Опря А. Т. Статистика (модульний варіант з
програмованою формою контролю знань). – Навч. посіб. – К.: Центр учбової
літератури, 2012. – 448 с. ISBN 978-611-01-0266-7. С. 60);
число – кількістю інтервалів буде задане натуральне число (має бути більше 1, хоча це не перевіряється);
щось інше – буде використано 9.
Якщо цей аргумент рівний 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.
Це все дозволяє сфокусовано аналізувати текст чи лише його частини.
Перевірте, щоб папка (каталог), куди cabal встановив виконувані файли програм, була доступна для пошуку в змінній середовища PATH.
Програма rewritePoemG3, починаючи з версії пакету 0.12.0.0, може працювати у режимі кількох властивостей, або в режимі однієї властивості, або в порівняльному режимі.
Якщо серед аргументів командного рядка задати групу аргументів, виділену розділювачами +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) буде переміщено до максимального за номером (і значеннями властивості) інтервалу, а потім записано у файл виводу результатів рядок з максимальним значенням властивості.
Значення, які були в максимальному інтервалі, будуть переміщені в інтервал з найменшим номером серед тих, які переміщені в максимальний.
Програму rewritePoemG3 можна запустити також у так званому
порівняльному
режимі, коли вона пропонує рядки (один за одним) з
кількох (не більше 14) заданих файлів і записує вибраний (або порожній
рядок, якщо жодний не обрано) у кінцевий файл. Так з кількох файлів
шляхом їх порядкового порівняння можна створити новий. Це також
дозволяє, запустивши програму двічі чи кілька разів з різними
параметрами у режимі кількох властивостей, потім запускати її в
порівняльному на отриманих файлах і створювати у досить невимушений
спосіб їх комбінації – нові варіанти.
Ремарка: Якщо Ви плануєте отримати більше підказок
та
рекомендацій від програми, то імовірно простіше (і краще) застосувати
інтерактивний режим програми lineVariantsG3 з кількома метриками, чи
навіть рекурсивний режим кількох джерел тієї ж програми.
Для роботи у порівняльному режимі (comparative mode):
rewritePoemG3 +c <файли, відділені пробілами, з яких будуть зчитуватися рядки> <кінцевий файл>
Одним з принципів роботи програми є пошук серед варіантів тексту тих,
для яких максимальним є значення певної функції, яка називається
властивістю
тексту (property) і становить собою певну властивість
для рядків. Користувач може самостійно обрати властивість, яка буде
використана при роботі програми (це робиться в командному рядку один раз
протягом роботи програми заданням (або відсутністю відповідного)
командного аргумента). Аргумент командного рядка виклику програми може
бути:
y0
– найперша у часі властивість, заснована на періодах
унікальності
. Ідея полягає у тому, що оцінюються кількості звуків,
або пауз, або фонетичних явищ (палаталізації приголосних, наприклад),
які знаходяться між послідовними появами кожного звука не в одному, а в
різних словах, і шукається загальна сума таких відстаней для різних
слів. Більшому значенню відповідає текст, в якому кожне нове слово
пропонує все нові звуки, (імовірно) у залежності від середньої кількості
звуків у періоді унікальності
його може бути легше чи важче
промовляти; меншому значенню – навпаки – текст, в якому більше повернень
у новому слові до звуків попереднього чи попередніх, таким чином, може
бути більше повторів, акцентування в певних місцях на скупченнях певних
звуків, що імовірно більш характерно для інтонаційно виділених і / чи
поетичних текстів з закликами чи підсиленими емоціями. При використанні
цієї властивості перший аргумент рядка виклику програми не має значення
(він ігнорується програмою).
Починаючи з версії 0.21.0.0, можна використовувати як властивості, де є обчислення суми періодів унікальності, такі, де ця сума обчислюється не для всіх наявних фонетичних явищ (одиниць), а лише для заданих вручну, вибірково, при цьому певні типові множини (зокрема голосні, сонорні приголосні, глухі приголосні) можна задати закодовано і спрощено. Розглянемо це на прикладі властивості y0, для інших спосіб роботи та кодування аналогічний.
Спосіб запису: властивість, у якій обчислюється сума періодів унікальності.вибраний звук чи кодована їх група1[.вибраний звук чи кодована їх група 2[і т. д.]] Наприклад, y0.і.в.г.дж.дз.сь.к.ь — сума періодів унікальності буде шукатися лише для наступних фонетичних явищ: звуків "і", "в", "г", "дж", "дз", "сь", "к" та усіх випадків, де "ь" буде позначати м’якість попереднього приголосного (крім "ц", оскільки м’який "ц" кодується окремо як "ць", а не послідовність "ц" "ь").
03y.р.б.ґ.о — у властивості 03y замість суми усіх періодів унікальності буде шукатися сума лише для наступних фонетичних явищ: "р", "б", "ґ" та "о".
y4.sr.vw — у властивості y4 буде шукатися сума періодів унікальності для всіх сонорних приголосних та усіх голосних (вони мають спеціальні позначення).
Для української мови у пакеті phonetic-languages-simplified-examples-array передбачено наступні спеціальні позначення для груп фонетичних явищ:
"sr" — [27,28,38,3,34,36] (тут і далі у цьому підрозділі — такі списки не є списком, як позначати фонетичні явища, а є списком чисел типу Int8, в які перетворюються при аналізі відповідні звуки, зокрема 1 — це "а") — усі сонорні приголосні звуки (запам’ятовування: sr SonoRous);
"vd" — [8,10,15,17,19,21,23,25] — усі дзвінкі приголосні звуки (крім сонорних) (vd VoiceD);
"vs" — [45,47,49,50,43,52,38,66,54,39,41] — усі глухі приголосні звуки, включаючи "сь" та "ць" (vs VoiceleSs);
"vw" — [1..6] — усі голосні звуки (vw VoWels).
Якщо записати .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 слова в рядку, щоб не створювати враження "коротких рядків", має застосовуватися певне "розгрупування" звуків, щоб це можна було сприймати як неквапливу розповідь (як у даному випадку).
Можна зробити висновок, що Тарас Шевченко писав рядки вірша так, щоб переважно більш розлого розмістити голосні, а також глухі приголосні (де голосних недостатньо, для милозвучності), але там, детреба було більше динамізму — там, навпаки, обрав варіанти з їх ближчим групуванням. Тому ці рядки потрібно читати більш динамічно.
Далі продовження опису властивостей.
0y
– перша версія властивості аналізу лише ритмічності.
Метрика (напівемпірична), заснована на функції ритмічності, що
використовує тривалості звуків, які були синтезовані у пакеті програм
mmsyn6ukr-array. Функція ритмічності натхненна античною поезією, де
замість наголошених та ненаголошених складів чергувалися ритмічно
короткі та довгі; також музичними долями, для яких основними є
дводольний ритм та тридольний. Функція реалізована таким чином, щоб
можливо простіше вловити значні викиди підритмічностей для двоскладових
і трискладових випадків. Використовуючи <перший аргумент> можна
змінити співвідношення цих підвластивостей і відповідно – змінити
властивість.
02y
– подібна до 0y
властивість, яка використовує
інші тривалості звуків, синтезовані завдяки пакету
r-glpk-phoneticlanguages-ukrainian-durations. Можна створити інші
варіанти тривалостей звуків, використовуючи можливості пакету
r-glpkphonetic-languages-ukrainian-durations або іншим
способом.
03y
– подібна до 02y
властивість, яка використовує
інші тривалості звуків, синтезовані завдяки пакету
r-glpk-phoneticlanguages-ukrainian-durations. Можна створити інші
варіанти тривалостей звуків, використовуючи можливості пакету
r-glpkphonetic-languages-ukrainian-durations або іншим
способом.
04y
– подібна до 02y
властивість, яка використовує
інші тривалості звуків, синтезовані завдяки пакету
r-glpk-phoneticlanguages-ukrainian-durations. Ці тривалості звуків
отримані з інших даних, ніж 0y, 02y та 03y, тому обережно змішуйте їх з
ними в режимі кількох метрик.
y
– властивість, яка обчислює властивості y0
та
0y
у більш ефективний спосіб, ніж кожну з них поодинці, а потім
перемножує отримані дані. Дає більші значення для рядків з більш
віддаленими одне від одного словами з однаковими звуками та такі, які
більше ритмізовані (з точки зору властивості 0y
). Використання
<першого коефіцієнта> внутрішньо впливає лише на підвластивість
0y
.
y2
– властивість, подібна до y, але використовує замість
другої підвластивості (ритмічності) варіант з 02y
.
y3
– властивість, подібна до y, але використовує замість
другої підвластивості (ритмічності) варіант з 03y
.
y4
– властивість, подібна до y, але використовує замість
другої підвластивості (ритмічності) варіант з 04y
.
yy
– властивість, яка використовує властивість y0
та 0y
, при цьому замість їх перемноження, ділить результат другої
на результат першої. Максимізується для текстів з високою ритмічністю (з
точки зору властивості 0y
) та групуванням однакових звуків у
групи ближче один до одного. Використання <першого коефіцієнта>
впливає лише на підвластивість 0y
.
yy2
– властивість, яка використовує властивість y0
та 02y
, при цьому замість їх перемноження, ділить результат
другої на результат першої. Максимізується для текстів з високою
ритмічністю (з точки зору властивості 02y
) та групуванням
однакових звуків у групи ближче один до одного. Використання <першого
коефіцієнта> впливає лише на підвластивість 02y
.
yy3
– властивість, яка використовує властивість y0
та 03y
, при цьому замість їх перемноження, ділить результат
другої на результат першої. Максимізується для текстів з високою
ритмічністю (з точки зору властивості 03y
) та групуванням
однакових звуків у групи ближче один до одного. Використання <першого
коефіцієнта> впливає лише на підвластивість 03y
.
будь-які інші варіанти даного аргумента – аналогічна до yy
з тією відмінністю, що замість 0y
використовується 04y
.
z
-лінія
0z
02z
03z
04z
z
z2
z3
z4
zz
zz2
zz3
zz4
Ці метрики схожі на відповідні, де z замінено на y. Але у них використовуються складніші функції ритмічності, отримані з модуля Languages.Rhythmicity.Factor пакету phonetic-languages-rhythmicity. Обережно використовуйте змішані властивості у режимі кількох властивостей, оскільки вони фактично являють собою різні підходи всередені загального методу, тому можуть давати попарно менш сумісні результати, але при правильному використанні дають гарний результат. Можливо, потрібно трохи практики, також частіше використовуйте програму propertiesTextG.
Також при роботі з наступними властивостями використовуються ідеї поліритмічності як джерела ритму.
"w01" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне максимальне значення, менше – ще одне максимальне (але менше значення). Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD;
"w02" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне максимальне значення, менше – ще одне максимальне (але менше значення). Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD2;
"w03" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне максимальне значення, менше – ще одне максимальне (але менше значення). Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD3;
"w04" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне максимальне значення, менше – ще одне максимальне (але менше значення). Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD4;
"w11" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає два максимальних значення, менше – ще одне мінімальне. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD;
"w12" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає два максимальних значення, менше – ще одне мінімальне. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD2;
"w13" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає два максимальних значення, менше – ще одне мінімальне. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD3;
"w14" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає два максимальних значення, менше – ще одне мінімальне. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD4;
"w21" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне мінімальне значення, менше – ще два максимальних. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD;
"w22" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне мінімальне значення, менше – ще два максимальних. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD2;
"w23" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне мінімальне значення, менше – ще два максимальних. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD3;
"w24" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне мінімальне значення, менше – ще два максимальних. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD4;
"w31" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне мінімальне значення, менше – ще одне мінімальне. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD;
"w32" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне мінімальне значення, менше – ще одне мінімальне. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD2;
"w33" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне мінімальне значення, менше – ще одне мінімальне. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD3;
"w34" – більш складна ритмічна структура з іншим способом визначення значення властивості, розглядає рядок як текст з ритмічними групами по 4 склади кожна, де найбільше на ритмічність впливає одне мінімальне значення, менше – ще одне мінімальне. Як варіант обчислення тривалості складів використовується бібліотечна функція syllableDurationsD4;
"x01" – аналогічно до w01
, але з більш комплексною
залежністю для менш значимої тривалості та, можливо, менш
передбачуваними результатами;
"x02" – аналогічно до w02
, але з більш комплексною
залежністю для менш значимої тривалості та, можливо, менш
передбачуваними результатами;
"x03" – аналогічно до w03
, але з більш комплексною
залежністю для менш значимої тривалості та, можливо, менш
передбачуваними результатами;
"x04" – аналогічно до w04
, але з більш комплексною
залежністю для менш значимої тривалості та, можливо, менш
передбачуваними результатами;
Наступні значення аналогічні до відповідних w
з більш
комплексною залежністю (як щойно описані вище).
До них належать:
"x11"
"x12"
"x13"
"x14"
"x21"
"x22"
"x23"
"x24"
"x31"
"x32"
"x33"
"x34"
Якщо цей аргумент має наступний вигляд, то застосовуються
поліритмічний аналіз рядка. Шукаються та перевіряються більш комплексні
властивості тексту, з застосуванням складніших за структурою
властивостей. Це дослідницький напрямок програм. Також є можливість
задати власні налаштування, використовуючи режим c
, C
,
N
властивостей. Отже, наступні значення задають таке:
"u01" -> Шукається поліритм з найбільш значимим 1 максимумом,
потім менш значимими двома, і нарешті з ще менш значимим 1, при цьому
розглядаються групи по 5 складів. Як функція для визначення тривалостей
складів використовується
syllableDurationsD;
"u02" -> Шукається поліритм з найбільш значимим 1 максимумом,
потім менш значимими двома, і нарешті з ще менш значимим 1, при цьому
розглядаються групи по 5 складів. Як функція для визначення тривалостей
складів використовується
syllableDurationsD2;
"u03" -> Шукається поліритм з найбільш значимим 1 максимумом,
потім менш значимими двома, і нарешті з ще менш значимим 1, при цьому
розглядаються групи по 5 складів. Як функція для визначення тривалостей
складів використовується
syllableDurationsD3;
"u04" -> Шукається поліритм з найбільш значимим 1 максимумом,
потім менш значимими двома, і нарешті з ще менш значимим 1, при цьому
розглядаються групи по 5 складів. Як функція для визначення тривалостей
складів використовується
syllableDurationsD4;
"u11" -> Шукається поліритм з найбільш значимим 1 максимумом,
потім менш значимими двома, і нарешті з ще менш значимим1 мінімумом, при
цьому розглядаються групи по 5 складів. Як функція для визначення
тривалостей складів використовується
syllableDurationsD;
"u12" -> Шукається поліритм з найбільш значимим 1 максимумом,
потім менш значимими двома, і нарешті з ще менш значимим1 мінімумом, при
цьому розглядаються групи по 5 складів. Як функція для визначення
тривалостей складів використовується
syllableDurationsD2;
"u13" -> Шукається поліритм з найбільш значимим 1 максимумом,
потім менш значимими двома, і нарешті з ще менш значимим1 мінімумом, при
цьому розглядаються групи по 5 складів. Як функція для визначення
тривалостей складів використовується
syllableDurationsD3;
"u14" -> Шукається поліритм з найбільш значимим 1 максимумом,
потім менш значимими двома, і нарешті з ще менш значимим1 мінімумом, при
цьому розглядаються групи по 5 складів. Як функція для визначення
тривалостей складів використовується
syllableDurationsD4;
"u21" -> Шукається поліритм з найбільш значимим 1 максимумом, потім менш значимими двома мінімумами, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD
"u22" -> Шукається поліритм з найбільш значимим 1 максимумом, потім менш значимими двома мінімумами, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"u23" -> Шукається поліритм з найбільш значимим 1 максимумом, потім менш значимими двома мінімумами, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"u24" -> Шукається поліритм з найбільш значимим 1 максимумом, потім менш значимими двома мінімумами, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"u31" -> Шукається поліритм з найбільш значимим 1 максимумом, потім менш значимими двома мінімумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"u32" -> Шукається поліритм з найбільш значимим 1 максимумом, потім менш значимими двома мінімумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"u33" -> Шукається поліритм з найбільш значимим 1 максимумом, потім менш значимими двома мінімумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"u34" -> Шукається поліритм з найбільш значимим 1 максимумом, потім менш значимими двома мінімумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"u41" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"u42" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"u43" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"u44" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"u51" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"u52" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"u53" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"u54" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"u61" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"u62" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"u63" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"u64" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"u71" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"u72" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"u73" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"u74" -> Шукається поліритм з найбільш значимими 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 5 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"v01" та інші v
– аналогічні до відповідних u
ліній, з тією відмінністю, що використовують лише зростаючі варіанти
функцій для визначення ритмічності. Це робить їх більш
прямолінійними.
"s01" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 максимумами, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"s02" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 максимумами, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"s03" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 максимумами, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"s04" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 максимумами, і нарешті з ще менш значимим 1 масксимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"s11" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 максимумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"s12" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 максимумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"s13" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 максимумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"s14" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 максимумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"s21" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 мінімумами, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"s22" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 мінімумами, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"s23" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 мінімумами, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"s24" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 мінімумами, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"s31" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 мінімумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"s32" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 мінімумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"s33" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 мінімумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"s34" -> Шукається поліритм з найбільш значимим 1 максимумумом, потім менш значимими 2 мінімумами, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"s41" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"s42" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"s43" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"s44" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"s51" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"s52" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"s53" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"s54" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 максимумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"s61" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"s62" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"s63" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"s64" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 максимумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"s71" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD;
"s72" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD2;
"s73" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD3;
"s74" -> Шукається поліритм з найбільш значимим 2 максимумумами, потім менш значимим 1 мінімумом, і нарешті з ще менш значимим 1 мінімумом, при цьому розглядаються групи по 6 складів. Як функція для визначення тривалостей складів використовується syllableDurationsD4;
"t01" та інші з t
лінії – аналогічні до відповідних з
s
лінії, з тією відмінністю, що використовуються лише збільшуючі
функції для властивостей.→ Це робить ці властивості більш
прямолінійними.
S
лінія відповідає властивостям s
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedF2;
T
лінія відповідає властивостям t
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedF20;
U
лінія відповідає властивостям u
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedF2;
V
лінія відповідає властивостям v
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedF20;
W
лінія відповідає властивостям u
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedF3;
X
лінія відповідає властивостям v
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedF30;
Y
лінія відповідає властивостям s
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedF3;
Z
лінія відповідає властивостям t
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedF30; Наступні лінії властивостей намагаються
збільшити значимість закінчення рядка і зменшити значення його
початку.
I
лінія відповідає властивостям W
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedEF2;
J
лінія відповідає властивостям X
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedEF20;
K
лінія відповідає властивостям Y
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedEF2;
L
лінія відповідає властивостям Z
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedEF20;
O
лінія відповідає властивостям U
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedEF3;
P
лінія відповідає властивостям V
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedEF30;
Q
лінія відповідає властивостям S
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedEF3;
R
лінія відповідає властивостям T
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedEF30; Починаючи з версії 0.10.0.0 введені також
наступні властивості:
o
лінія відповідає властивостям u
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLF2;
p
лінія відповідає властивостям v
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLF20;
q
лінія відповідає властивостям s
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLF2;
r
лінія відповідає властивостям t
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLF20;
k
лінія відповідає властивостям u
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLF3;
l
лінія відповідає властивостям v
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLF30;
m
лінія відповідає властивостям s
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLF3;
n
лінія відповідає властивостям t
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLF30; Наступні лінії властивостей намагаються
збільшити значимість закінчення рядка і зменшити значення його
початку.
g
лінія відповідає властивостям u
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLEF2;
h
лінія відповідає властивостям v
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLEF20;
i
лінія відповідає властивостям s
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLEF2;
j
лінія відповідає властивостям t
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLEF20;
b
лінія відповідає властивостям u
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLEF3;
d
лінія відповідає властивостям v
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLEF30;
e
лінія відповідає властивостям s
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLEF3;
f
лінія відповідає властивостям t
лінії, з тією
відмінністю, що використовується зважена
функція
rhythmicityPolyWeightedLEF30;
Якщо тип починається з 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 для більш-менш ”реальних” рядків; властивості можуть бути використані в усіх трьох програмах:
lineVariantsG3
propertiesTextG3
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 результат, що говорить, що дані більше зміщені вправо, до більших значень. Але це не означає, що текст ближчий до віршів з трискладовим віршовим розміром. Багато рядків є класичними рядками з двоскладовим розміром (наприклад, ямбом). зокрема: "свята Різдвяна радість огортає" (виділена синім кольором), але з точки зору тривалостей складів вона значно більше підходить для трискладової стопи. Це також є прикладом різниці у силабічному та тонічному віршуваннях.
При запуску програми lineVariantsG3 можна вказати як аргументи командного рядка обмеження. Вони дозволяють зменшити кількість обчислень, розглядати лише певні варіанти (наприклад, з певним визначеним порядком деяких слів тощо), що дозволяє фактично розширити можливості програми. Ці обмеження кодуються як аргументи командного рядка між двома спеціальними позначеннями +a та -a. Вони утворюють групу аргументів, які можуть стояти будь-де у рядку вводу даних. У залежності від того, чи вказуються ці аргументи, програма ставить чи не ставить додаткове питання для перевірки та підтвердження (так званий double check).
Типів обмежень є 6, їх можна довільно комбінувати, але з дотриманням меж для кожного з них.
На рисунку поряд видно, що усі типи реалізовані з одним аргументом, який подібний у всіх них – це кількість слів (чи їх сполучень) у рядку. Користувач, запустивши програму, уже не може коригувати в ході її роботи цю кількість, але вона важлива для обмежень загалом. Жодний з цифрових символів у обмеженнях не повинен бути більшим за це число, також це число саме не більше 6 і не менше 0. Також необхідною умовою є те, що жодні цифрові символи в межах одного кодованого обмеження не можуть повторюватися двічі. Наприклад, завідомо не є валідними обмеження: Q2235 (повтор цифр), E2 (цифрові символи там, де їх немає), T247 (7 більша 6), F0 (один символ замість необхідних двох), A37523 (7 більша 6), B5 (один символ, а мають бути ще). Неправильно задані обмеження або не вплинуть на результат (хоча буде очікуватися інше), або викличуть помилку виконання (runtime exception) і зупинку роботи програми. Оскільки результат їх застосування не є простим, тому програма при їх заданні виводить на екран рядок, до якого будуть застосовані введені обмеження з додатковим запитанням, чи всі дані введено правильно.
Типи обмежень та їх значення наведено детальніше далі.
Обмеження E – Без вводу додаткових цифрових символів – Відповідає відсутності додаткового обмеження, в ході роботи програми не впливає на кінцевий результат.
Обмеження Q – 4 попарно нерівні цифри в межах від 0 до кількості слів чи їх сполучень мінус 1 – Цифри – це індекси 4-х слів чи їх сполучень, взаємний порядок яких при перестановках буде збережений таким.
Також якщо ці слова однакові (без врахування великих та малих літер), тоді це зручний спосіб зменшити об’єм даних, який буде аналізуватися.
Обмеження T – 3 попарно нерівні цифри в межах від 0 до кількості слів чи їх сполучень мінус 1 – Цифри – це індекси 3-х слів чи їх сполучень, взаємний порядок яких при перестановках буде збережений таким.
Також якщо ці слова однакові (без врахування великих та малих літер), тоді це зручний спосіб зменшити об’єм даних, який буде аналізуватися.
Обмеження F – 2 попарно нерівні цифри в межах від 0 до кількості слів чи їх сполучень мінус 1 – Цифри – це індекси 2-х слів чи їх сполучень, взаємний порядок яких при перестановках буде збережений таким.
Також якщо ці слова однакові (без врахування великих та малих літер), тоді це зручний спосіб зменшити об’єм даних, який буде аналізуватися.
Обмеження A – 1 цифра та ще кілька попарно нерівних цифр (усі між собою нерівні) справа від неї в межах від 0 до кількості слів чи їх сполучень мінус 1 – Перша цифра – індекс елемента, відносно якого визначається розміщення усіх інших елементів (слів чи їх сполучень); усі інші цифри правіше – індекси елементів, які мають стояти в отриманих перестановках ПРАВІШЕ від елемента з індексом, рівним першій цифрі.
Обмеження B – 1 цифра та ще кілька попарно нерівних цифр (усі між собою нерівні) справа від неї в межах від 0 до кількості слів чи їх сполучень мінус 1 – Перша цифра – індекс елемента, відносно якого визначається розміщення усіх інших елементів (слів чи їх сполучень); усі інші цифри правіше – індекси елементів, які мають стояти в отриманих перестановках ЛІВІШЕ від елемента з індексом, рівним першій цифрі.
Обмеження P (fixed Point) (введене, починаючи з версії 0.18.0.0) – 1 чи ще кілька попарно нерівних цифр (усі між собою нерівні) в межах від 0 до кількості слів чи їх сполучень мінус 1 – кожна з них (крім 0) означає порядковий номер слова, яке при перестановках буде залишатисяна своєму місці (відлік розпочинається з 1 зліва направо), цифра 0 вживається лише для випадку неповних множин перестановок і відповідає ситуації, коли останнє можливе слово, 10-е, має залишитися на своєму місці. У випадку повної множини перестановок: щоб залишити останнє слово на своєму місці, використовуйте, будь ласка, +b (+bl) параметр командного рядка при виклику програм.
Зазвичай усі програми пакету виконуються одним ядром процесора. При цьому для всіх програм, які розглядаються, є можливість включити режим роботи на кількох ядрах – паралельні обчислення. Для цього серед аргументів командного рядка мають бути наступні:
+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 за те, що звернув увагу автора на цю статтю. Також автор висловлює подяку своїм друзям, яких він хотів порадувати цим дослідженням. Також автор висловлює подяку кожній людині, яка щиро сприяла у тій чи іншій формі проведенню дослідження.