Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

succotashe ridel

Автор basta, июля 4, 2019, 21:05

0 Пользователи и 1 гость просматривают эту тему.

basta

Наконец-то, проект, который не стыдно показать уважаемой публике, поскольку есть подробнейшее словесное описание с примерами и исходный код парсера. Целей у проекта три.
1. Язык должен иметь грамматику, похожую на стандартную европейскую.
2. Текст на этом языке должен быть похож на Интерлингву IALA, хотя бы отдалённо.
3. Текст должен быстро парситься компьютером.

Самым доступным для меня оказался парсер типа LALR, как у Ложбана. Надо сказать, что алгоритм LALR очень глупый и много чего запрещает. Например, он ругается на многозначность, если грамматика допускает пропуск разных синтаксических ролей в непосредственной близости, потому что ему не понятно, какая это пустота - от одной роли или от другой. Но результат меня удовлетворил даже несмотря на ограничения.

Парсер не смотрит в словарь, не понимает и не переводит значения слов. Он только рисует отступами абстрактное синтаксическое дерево и узнаёт части речи по окончаниям или по словам целиком, которых не много. Но если в предложении будет хоть одна грамматическая ошибка, ничего кроме лаконичного "syntax error" Вы не получите. По-хорошему надо показывать место ошибки и угадывать варианты, которые мог иметь в виду пользователь, как это делал парсер Ложбана, но для меня это не так важно, поэтому пока реализация этой функции откладывается.

Описание там: https://github.com/rgj40q/laughing-succotash/blob/master/doc.md
Исходный код там же: https://github.com/rgj40q/laughing-succotash/

Отче наш:

patri nostrel inil celes tet
e nomine tuel sanctificiaza une
e regne tuel veneza
e voluntate tuel faciaza une
inin le cele comef en superin le terre etiamef
e te daiza ain nose hodien pane nostrel quotidianel
e te pardoniza ain nose debites nostrel
e comen etiamem nose ones pardonit ain debitores nostreh
e te nonen induciza nose inin tentatione
sed te liberiza nose din le male
e amenot

Выхлоп парсера:


[text]
    [sentence]
        [argument]
            [noun phrase]
                patri: noun, singular
                [appositive phrase]
                    nostrel: appositive, intransitive
                [appositive phrase]
                    inil: appositive, transitive
                    [subargument]
                        [noun subphrase]
                            celes: noun, plural
        tet: verb, intransitive, present
    e: conjunction for sentence
    [sentence]
        [argument]
            [noun phrase]
                nomine: noun, singular
                [appositive phrase]
                    tuel: appositive, intransitive
        sanctificiaza: verb, transitive, imperative, passive
        [argument]
            [noun phrase]
                une: noun, singular
    e: conjunction for sentence
    [sentence]
        [argument]
            [noun phrase]
                regne: noun, singular
                [appositive phrase]
                    tuel: appositive, intransitive
        veneza: verb, intransitive, imperative
    e: conjunction for sentence
    [sentence]
        [argument]
            [noun phrase]
                voluntate: noun, singular
                [appositive phrase]
                    tuel: appositive, intransitive
        faciaza: verb, transitive, imperative, passive
        [argument]
            [noun phrase]
                une: noun, singular
        [adverbA phrase]
            inin: adverb A, transitive
            [subargument]
                le: article
                [noun subphrase]
                    cele: noun, singular
                    [adverbB subphrase]
                        comef: subadverb B, intransitive
        en: conjunction for adverb A
        [adverbA phrase]
            superin: adverb A, transitive
            [subargument]
                le: article
                [noun subphrase]
                    terre: noun, singular
                    [adverbB subphrase]
                        etiamef: subadverb B, intransitive
    e: conjunction for sentence
    [sentence]
        [argument]
            [noun phrase]
                te: noun, singular
        daiza: verb, transitive, imperative
        [adverbA phrase]
            ain: adverb A, transitive
            [subargument]
                [noun subphrase]
                    nose: noun, singular
        [adverbA phrase]
            hodien: adverb A, intransitive
        [argument]
            [noun phrase]
                pane: noun, singular
                [appositive phrase]
                    nostrel: appositive, intransitive
                [appositive phrase]
                    quotidianel: appositive, intransitive
    e: conjunction for sentence
    [sentence]
        [argument]
            [noun phrase]
                te: noun, singular
        pardoniza: verb, transitive, imperative
        [adverbA phrase]
            ain: adverb A, transitive
            [subargument]
                [noun subphrase]
                    nose: noun, singular
        [argument]
            [noun phrase]
                debites: noun, plural
                [appositive phrase]
                    nostrel: appositive, intransitive
    e: conjunction for sentence
    [sentence]
        [adverbA phrase]
            comen: adverb A, intransitive
            [adverbB phrase]
                etiamem: adverb B, intransitive
        [argument]
            [noun phrase]
                nose: noun, singular
        [argument]
            [noun phrase]
                ones: noun, plural
        pardonit: verb, transitive, present
        [adverbA phrase]
            ain: adverb A, transitive
            [subargument]
                [noun subphrase]
                    debitores: noun, plural
                    [appositive subphrase]
                        nostreh: subappositive, intransitive
    e: conjunction for sentence
    [sentence]
        [argument]
            [noun phrase]
                te: noun, singular
        [adverbA phrase]
            nonen: adverb A, intransitive
        induciza: verb, transitive, imperative
        [argument]
            [noun phrase]
                nose: noun, singular
        [adverbA phrase]
            inin: adverb A, transitive
            [subargument]
                [noun subphrase]
                    tentatione: noun, singular
    sed: conjunction for sentence
    [sentence]
        [argument]
            [noun phrase]
                te: noun, singular
        liberiza: verb, transitive, imperative
        [argument]
            [noun phrase]
                nose: noun, singular
        [adverbA phrase]
            din: adverb A, transitive
            [subargument]
                le: article
                [noun subphrase]
                    male: noun, singular
    e: conjunction for sentence
    [sentence]
        amenot: verb, impersonal, present


Буду рад почитать Ваши комментарии, не хотелось бы остаться писателем в стол, так сказать.  :)

Mona

Парсер в моей голове посчитал слово "e", первые три штуки не союзом (conjunction for sentence), а частицей со смыслом пожелания, рус. "да". Дальше вроде действительно идут союзы рус. "и", но из четырех два лишние, их там не должно быть просто по тексту. Ну и, разумеется, перед словом "аминь" этот "e" мозолит глаза.

А так - вроде работает как-то. Хочется, правда, спросить компьютер: нафига тебе этот текст парсить, если ты в нем ничего не понимаешь?

Как в том анекдоте:
- Официант! Я что-то не пойму, это чай или кофе?
- А какая тебе, XYZ, разница, раз ты не поймешь?

Wolliger Mensch

«Вот интересно, каких лингвистических жемчуг можно найти в море отодвинутых книг», Ян Гавлиш.
«Впредь прошу помнить, что придумал игру не для любых ассоциаций, а для семантически оправданных. Например, чтó это такое: ,,рулетке" — ,,выпечке"?? Тем более, что сей ляпсус я сам совершил...», Марбол
«Ветхий Завет написан на иврите и частично на армейском», Vesle Anne
«МЛ(ять)КО ... ПЛ(ять)NЪ», Тася
«Вот откроет этот спойлер, например, Марго, ничего не подозревая, а потом будут по всему форуму блюющие смайлики...», Авал
«Томан приличный мужчина. Правда по патриархальным меркам слегка голодранец», Vesle Anne
«Возможен ли фонетический переход "ж" в "п с придыханием"», forest

Awwal12

Offtop
При взгляде на название что-то мой "жёполизк" вспомнился. Прошу прощения.
Фашиствующий имперец, асексуал и многожёнец, татарофоб, заслуженный функционер РПЦ. Слушает радио "Радонеж" и терпеть не может счастливых людей.

"Да здравствуют ДОЯРКИ!! Потому что доярки - это раса сверхчеловеков. За ними будущее планеты. Они переживут даже атомную войну, потому что доярки вечны, ибо хтоничны. И дадут потомство, которое тоже будет доярами и доярками. Ура, товарищи!.." (c) Awwal12

Wolliger Mensch

Цитата: Awwal12 от августа 21, 2019, 23:46
Offtop
При взгляде на название что-то мой "жёполизк" вспомнился. Прошу прощения.

Зипджолзик? :o ;D
«Вот интересно, каких лингвистических жемчуг можно найти в море отодвинутых книг», Ян Гавлиш.
«Впредь прошу помнить, что придумал игру не для любых ассоциаций, а для семантически оправданных. Например, чтó это такое: ,,рулетке" — ,,выпечке"?? Тем более, что сей ляпсус я сам совершил...», Марбол
«Ветхий Завет написан на иврите и частично на армейском», Vesle Anne
«МЛ(ять)КО ... ПЛ(ять)NЪ», Тася
«Вот откроет этот спойлер, например, Марго, ничего не подозревая, а потом будут по всему форуму блюющие смайлики...», Авал
«Томан приличный мужчина. Правда по патриархальным меркам слегка голодранец», Vesle Anne
«Возможен ли фонетический переход "ж" в "п с придыханием"», forest

Awwal12

Фашиствующий имперец, асексуал и многожёнец, татарофоб, заслуженный функционер РПЦ. Слушает радио "Радонеж" и терпеть не может счастливых людей.

"Да здравствуют ДОЯРКИ!! Потому что доярки - это раса сверхчеловеков. За ними будущее планеты. Они переживут даже атомную войну, потому что доярки вечны, ибо хтоничны. И дадут потомство, которое тоже будет доярами и доярками. Ура, товарищи!.." (c) Awwal12

Wolliger Mensch

«Вот интересно, каких лингвистических жемчуг можно найти в море отодвинутых книг», Ян Гавлиш.
«Впредь прошу помнить, что придумал игру не для любых ассоциаций, а для семантически оправданных. Например, чтó это такое: ,,рулетке" — ,,выпечке"?? Тем более, что сей ляпсус я сам совершил...», Марбол
«Ветхий Завет написан на иврите и частично на армейском», Vesle Anne
«МЛ(ять)КО ... ПЛ(ять)NЪ», Тася
«Вот откроет этот спойлер, например, Марго, ничего не подозревая, а потом будут по всему форуму блюющие смайлики...», Авал
«Томан приличный мужчина. Правда по патриархальным меркам слегка голодранец», Vesle Anne
«Возможен ли фонетический переход "ж" в "п с придыханием"», forest

basta

Название сгенерировал //github.com :stop: А вообще хоть горшком назови, только на околоземную орбиту не запускай ;)

Цитата: Mona от августа 21, 2019, 22:19
из четырех два лишние, их там не должно быть просто по тексту. Ну и, разумеется, перед словом "аминь" этот "e" мозолит глаза.
Союзы между предложениями тут обязательные, по-другому SVO я не смог сделать. :donno: "e" везде можно заменить на "et", полегчает? :???

ЦитироватьА так - вроде работает как-то. Хочется, правда, спросить компьютер: нафига тебе этот текст парсить, если ты в нем ничего не понимаешь?

Как в том анекдоте:
- Официант! Я что-то не пойму, это чай или кофе?
- А какая тебе, XYZ, разница, раз ты не поймешь?
Создать ИИ задача не стояла :) Современным нейронным сетям, насколько я понимаю, ни парсер, ни грамматика вообще не нужны, чтобы понимать текст. Впрочем, это уже совсем другая история... :)

Mona

По-моему, современные нейронные сети все так же ничего не понимают.

basta

Цитата: Mona от августа 26, 2019, 10:56
По-моему, современные нейронные сети все так же ничего не понимают.
А как Вы определяете понимание? Если нейронная сеть может перевести текст или как голосовой помощник выполнить запрос пользователя, то этого достаточно, я считаю.

Mona

Это может сделать не нейронная сеть, а обычная программа, состоящая из процедур, условных ветвлений, словарей и т.п. Что на самом деле и происходит. "Нейронные сети" и "искусственный интеллект" - маркетинговые (=мошеннические) приемы в большинстве случаев.

Я определяю понимание, как соотнесение с окружающей действительностью, практикой и каким-то жизненным опытом. Мало того, нейронные сети с ИИ должны иметь способность к самостоятельному усвоению материала, его анализу и синтезу новой информации. Я таких продуктов еще не видел.

гальюн

Цитата: Mona от августа 28, 2019, 21:26
Я определяю понимание, как соотнесение с окружающей действительностью, практикой и каким-то жизненным опытом. Мало того, нейронные сети с ИИ должны иметь способность к самостоятельному усвоению материала, его анализу и синтезу новой информации. Я таких продуктов еще не видел.
https://thispersondoesnotexist.com/

Mona

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

Awwal12

Цитата: basta от августа 28, 2019, 18:07
Цитата: Mona от августа 26, 2019, 10:56
По-моему, современные нейронные сети все так же ничего не понимают.
А как Вы определяете понимание? Если нейронная сеть может перевести текст или как голосовой помощник выполнить запрос пользователя, то этого достаточно, я считаю.
Нейронная сеть НЕ может перевести текст по смыслу. При переводе слова "ключ", например, она может учесть его окружение (ср. "бил ключ" и "взял ключ"), но в нейтральном окружении она сможет только дать наиболее частотный вариант; определение смысла высказывания (т.е., в сущности, установление связи между высказыванием и реальной ситуацией) лежит в принципе за пределами ее возможностей.
Фашиствующий имперец, асексуал и многожёнец, татарофоб, заслуженный функционер РПЦ. Слушает радио "Радонеж" и терпеть не может счастливых людей.

"Да здравствуют ДОЯРКИ!! Потому что доярки - это раса сверхчеловеков. За ними будущее планеты. Они переживут даже атомную войну, потому что доярки вечны, ибо хтоничны. И дадут потомство, которое тоже будет доярами и доярками. Ура, товарищи!.." (c) Awwal12

Mona

Вы, Awwal12, все правильно сказали. Скажите теперь что-нибудь про не-нейронную сеть, а обычную программу. По-моему, выйдет то же самое.

basta

Вариация на ту же тему. Предлоги сделаны неизменяемыми. За это пришлось заплатить тем, что существительные склоняются по уровням предложения и чуть больше ограничена свобода порядка слов.
Безличные глаголы выкинул. Вместо них наверное нужно добавить междометия :???

patre nostrel cec in le celos tet
e nomine tuel sanctificen
e regne tuel venen
e voluntate tuel facen in le celi comom eem super le terri etiamom
e hodiem te daen a nosi pane nostrel quotidianel
e te pardonen a nosi debites nostrel
e comem etiamim nose pardonet a debitoris nostril
e nonem te nose inducen in tentationi
sed te nose liberen de le mali
e one amenet


[text]
    [sentence]
        [argument, level=0]
            [noun phrase, level=0]
                patre: noun, singular, level=0
                [adjective phrase, level=0]
                    nostrel: adjective, singular, level=0
                [appositive phrase, level=0]
                    cec: apposition, singular, level=0
                    [prepositional phrase, level=1]
                        in: preposition
                        [argument, level=2]
                            le: article
                            [noun phrase, level=2]
                                celos: noun, plural, level=2
        tet: verb, present
    e: conjunction for sentence
    [sentence]
        [argument, level=0]
            [noun phrase, level=0]
                nomine: noun, singular, level=0
                [adjective phrase, level=0]
                    tuel: adjective, singular, level=0
        sanctificen: verb, imperative
    e: conjunction for sentence
    [sentence]
        [argument, level=0]
            [noun phrase, level=0]
                regne: noun, singular, level=0
                [adjective phrase, level=0]
                    tuel: adjective, singular, level=0
        venen: verb, imperative
    e: conjunction for sentence
    [sentence]
        [argument, level=0]
            [noun phrase, level=0]
                voluntate: noun, singular, level=0
                [adjective phrase, level=0]
                    tuel: adjective, singular, level=0
        facen: verb, imperative
        [prepositional phrase, level=0]
            in: preposition
            [argument, level=1]
                le: article
                [noun phrase, level=1]
                    celi: noun, singular, level=1
                    [adverb phrase, level=2]
                        comom: adverb, level=2
        eem: conjunction for adverb, level=0
        [prepositional phrase, level=0]
            super: preposition
            [argument, level=1]
                le: article
                [noun phrase, level=1]
                    terri: noun, singular, level=1
                    [adverb phrase, level=2]
                        etiamom: adverb, level=2
    e: conjunction for sentence
    [sentence]
        [adverb phrase, level=0]
            hodiem: adverb, level=0
        [argument, level=0]
            [noun phrase, level=0]
                te: noun, singular, level=0
        daen: verb, imperative
        [prepositional phrase, level=0]
            a: preposition
            [argument, level=1]
                [noun phrase, level=1]
                    nosi: noun, singular, level=1
        [argument, level=0]
            [noun phrase, level=0]
                pane: noun, singular, level=0
                [adjective phrase, level=0]
                    nostrel: adjective, singular, level=0
                [adjective phrase, level=0]
                    quotidianel: adjective, singular, level=0
    e: conjunction for sentence
    [sentence]
        [argument, level=0]
            [noun phrase, level=0]
                te: noun, singular, level=0
        pardonen: verb, imperative
        [prepositional phrase, level=0]
            a: preposition
            [argument, level=1]
                [noun phrase, level=1]
                    nosi: noun, singular, level=1
        [argument, level=0]
            [noun phrase, level=0]
                debites: noun, plural, level=0
                [adjective phrase, level=0]
                    nostrel: adjective, singular, level=0
    e: conjunction for sentence
    [sentence]
        [adverb phrase, level=0]
            comem: adverb, level=0
            [adverb phrase, level=1]
                etiamim: adverb, level=1
        [argument, level=0]
            [noun phrase, level=0]
                nose: noun, singular, level=0
        pardonet: verb, present
        [prepositional phrase, level=0]
            a: preposition
            [argument, level=1]
                [noun phrase, level=1]
                    debitoris: noun, plural, level=1
                    [adjective phrase, level=1]
                        nostril: adjective, singular, level=1
    e: conjunction for sentence
    [sentence]
        [adverb phrase, level=0]
            nonem: adverb, level=0
        [argument, level=0]
            [noun phrase, level=0]
                te: noun, singular, level=0
        [argument, level=0]
            [noun phrase, level=0]
                nose: noun, singular, level=0
        inducen: verb, imperative
        [prepositional phrase, level=0]
            in: preposition
            [argument, level=1]
                [noun phrase, level=1]
                    tentationi: noun, singular, level=1
    sed: conjunction for sentence
    [sentence]
        [argument, level=0]
            [noun phrase, level=0]
                te: noun, singular, level=0
        [argument, level=0]
            [noun phrase, level=0]
                nose: noun, singular, level=0
        liberen: verb, imperative
        [prepositional phrase, level=0]
            de: preposition
            [argument, level=1]
                le: article
                [noun phrase, level=1]
                    mali: noun, singular, level=1
    e: conjunction for sentence
    [sentence]
        [argument, level=0]
            [noun phrase, level=0]
                one: noun, singular, level=0
        amenet: verb, present


Эстетически всё так же не очень :'(
Но наверное с LALR'ом лучше и не получится. Надо осваивать PEG. :-\

Исходник: https://github.com/rgj40q/busy-enchilada

Mona

Вместо безличных глаголов междометия? Уй ё! (Это я в окно посмотрел).

basta

Да никто безличные глаголы грамматически и не обособляет. Видимо, их слишком мало. Во многих языках используют затычку как в It rains. А междометия как раз нужны, я ими зря пренебрегаю. :)

basta

Процесс пошёл гораздо бодрее с PyPEG2. Очень удобная библиотека, сама рисует деревья, правда в XML, но тоже симпатично.

Эту итерацию я назвал wild raisin.

Визуализируем степень приближения к IALA.

В глаголах финитных форм разница только в 1) безударном окончании причастия, 2) императиве и 3) настоящем простом времени.


   
       
       
       
       
       
       
       
       
       
       
activeIALAwild raisinpassiveIALAwild raisin
Imperativecrea!
vide!
audi!
crean
viden
audin
Imperativesia create
sia vidite
sia audite
sia creata
sia vidita
sia audita
Presentio crea
io vide
io audi
ie creat
ie videt
ie audit
Presentio es create
io es vidite
io es audite
ie es creata
ie es vidita
ie es audita
Present perfectio ha create
io ha vidite
io ha audite
ie ha creata
ie ha vidita
ie ha audita
Present perfectio ha essite create
io ha essite vidite
io ha essite audite
ie ha essita creata
ie ha essita vidita
ie ha essita audita
Imperfectio creava
io videva
io audiva
ie creava
ie videva
ie audiva
Imperfectio esseva create
io esseva vidite
io esseva audite
ie esseva creata
ie esseva vidita
ie esseva audita
Past perfectio habeva create
io habeva vidite
io habeva audite
ie habeva creata
ie habeva vidita
ie habeva audita
Past perfectio habeva essite create
io habeva essite vidite
io habeva essite audite
ie habeva essita creata
ie habeva essita vidita
ie habeva essita audita
Futureio creara
io videra
io audira
ie creara
ie videra
ie audira
Futureio essera create
io essera vidite
io essera audite
ie essera creata
ie essera vidita
ie essera audita
Future perfectio habera create
io habera vidite
io habera audite
ie habera creata
ie habera vidita
ie habera audita
Future perfectio habera essite create
io habera essite vidite
io habera essite audite
ie habera essita creata
ie habera essita vidita
ie habera essita audita
Conditionalio crearea
io viderea
io audirea
ie crearea
ie viderea
ie audirea
Conditionalio esserea create
io esserea vidite
io esserea audite
ie esserea creata
ie esserea vidita
ie esserea audita
Conditional perfectio haberea create
io haberea vidite
io haberea audite
ie haberea creata
ie haberea vidita
ie haberea audita
Conditional perfectio haberea essite create
io haberea essite vidite
io haberea essite audite
ie haberea essita creata
ie haberea essita vidita
ie haberea essita audita

С остальными частями речи похуже.
1. Там существительное не маркируется, здесь -V(s), где V - это одно из e, i, o, u, ia.
1. Там аппозиция не маркируется, здесь -Vf(s).
2. Там прилагательное не маркируется, здесь -Vl.
3. Там наречие маркируется суффиксом -(a)mente или иногда -o, здесь -Vm.
4. Здесь есть разделение по уровням фразы, т.е. подлежащее - это нулевой уровень; причастный оборот, распространяющий это подлежащее - первый уровень; наречие, распространяющее этот причастный оборот - второй уровень и т.д. Без этого синтаксическая однозначность (одновременно с выразительностью) не получится.


   
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       

IALAwild raisin


level=01234
n sgpanpanepanipanopanupania
n plpanespanespanispanospanuspanias
app sgpanpanefpanifpanofpanufpaniaf
app plpanespanefspanifspanofspanufspaniafs
adjcelerecelerelcelerilcelerolcelerulcelerial
advcelerementeceleremcelerimceleromcelerumceleriam
inf acrearcrearcreavurcreadurcreajurcreagur
inf evidervidervidevurvidedurvidejurvidegur
inf iaudiraudiraudivuraudiduraudijuraudigur
ptcp a prescreantecreantacreavuntacreaduntacreajuntacreagunta
ptcp a pastcreatecreatacreavutacreadutacreajutacreaguta
ptcp e presvidentevidentavidevuntavideduntavidejuntavidegunta
ptcp e pastviditeviditavidivutavididutavidijutavidiguta
ptcp i presaudienteaudientaaudievuntaaudieduntaaudiejuntaaudiegunta
ptcp i pastauditeauditaaudivutaaudidutaaudijutaaudiguta

5. У союзов и, или есть версии для всех уровней и для нескольки основных частей речи. Остальные союзы только для разбиения предложений. Предложения разбивать обязательно, по умолчанию союзом e.


   
       
       
       
       
       

01234
conj_argeze, ozeezi, oziezo, ozoezu, ozuezia, ozia
conj_adjezel, ozelezil, ozil,ezol, ozolezul, ozulezial, ozial
conj_advezem, ozemezim, ozimezom, ozomezum, ozumeziam, oziam
conj_ptcpezet, ozetezit, ozitezot, ozotezut, ozuteziat, oziat

Отче наш:


   
       
       
       
       
       
       
       
       
       
       
       
Patre nostre,patre nostrel
qui es in le celos,e quie es in le celes
que tu nomine sia sanctificate;que nomine tuel sia sanctificata
que tu regno veni;que regne tuel venit
que tu voluntate sia facite como in le celo, etiam super le terra.que voluntate tuel sia facita in le cele comim ezem super le terre etiamim
Da nos hodie nostre pan quotidian,e dan nose hodiem pane nostrel quotidianel
e pardona a nos nostre debitase pardonan a nose debites nostrel
como etiam nos los pardona a nostre debitores.e comem etiamim nose lose pardonat a debitores nostrel
E non induce nos in tentation,e non inducen nose in tentatione
sed libera nos del mal.sed liberan nose de le male
Amen. e amen

Теперь мне нравится внешний вид. Почти не приходится менять порядок слов.

Исходный код там: https://github.com/rgj40q/wild-raisin

Вещи которые точно не работают как в IALA и за которые я ещё даже не брался:
1. Сравнительные обороты в прилагательных и наречиях ("быстрее, чем Пётр").
2. Составные числительные в любых ролях кроме существительного ("сто пятьдесят третий").
3. Подчинённые предложения, вложенные в главное ("дом, в котором живёт Иван, расположен на краю деревни").

В теории всё это можно сделать, кроме наверное вложенных предложений, но насколько придётся перелопатить код - неизвестно.

Наверняка есть ещё что-то, что я упустил, т.к. не могу похвастаться 100%ным знанием грамматики IALA, или просто ошибки в коде, т.к. я не тестировал все варианты.

basta

Выхлоп парсера не влез в первое сообщение:


<Text>
  <Sentence>
    <Arg0>
      <NP0>
        <N0>patre</N0>
        <AdjP0>
          <Adj0>nostrel</Adj0>
        </AdjP0>
      </NP0>
    </Arg0>
  </Sentence>
  <ConjSent>e</ConjSent>
  <Sentence>
    <Arg0>
      <NP0>
        <N0>quie</N0>
      </NP0>
    </Arg0>
    <VP>
      <V>es</V>
    </VP>
    <AdvP0>
      <Prep>in</Prep>
      <Arg0>
        <Art>le</Art>
        <NP0>
          <N0>celes</N0>
        </NP0>
      </Arg0>
    </AdvP0>
  </Sentence>
  <ConjSent>que</ConjSent>
  <Sentence>
    <Arg0>
      <NP0>
        <N0>nomine</N0>
        <AdjP0>
          <Adj0>tuel</Adj0>
        </AdjP0>
      </NP0>
    </Arg0>
    <VP>
      <ImperativePassiveAuxV>sia</ImperativePassiveAuxV>
      <PtcpPast0>sanctificata</PtcpPast0>
    </VP>
  </Sentence>
  <ConjSent>que</ConjSent>
  <Sentence>
    <Arg0>
      <NP0>
        <N0>regne</N0>
        <AdjP0>
          <Adj0>tuel</Adj0>
        </AdjP0>
      </NP0>
    </Arg0>
    <VP>
      <V>venit</V>
    </VP>
  </Sentence>
  <ConjSent>que</ConjSent>
  <Sentence>
    <Arg0>
      <NP0>
        <N0>voluntate</N0>
        <AdjP0>
          <Adj0>tuel</Adj0>
        </AdjP0>
      </NP0>
    </Arg0>
    <VP>
      <ImperativePassiveAuxV>sia</ImperativePassiveAuxV>
      <PtcpPast0>facita</PtcpPast0>
    </VP>
    <AdvP0>
      <Prep>in</Prep>
      <Arg0>
        <Art>le</Art>
        <NP0>
          <N0>cele</N0>
          <AdvP1>
            <Adv1>comim</Adv1>
          </AdvP1>
        </NP0>
      </Arg0>
      <ConjAdv0>ezem</ConjAdv0>
      <Prep>super</Prep>
      <Arg0>
        <Art>le</Art>
        <NP0>
          <N0>terre</N0>
          <AdvP1>
            <Adv1>etiamim</Adv1>
          </AdvP1>
        </NP0>
      </Arg0>
    </AdvP0>
  </Sentence>
  <ConjSent>e</ConjSent>
  <Sentence>
    <VP>
      <V>dan</V>
    </VP>
    <Arg0>
      <NP0>
        <N0>nose</N0>
      </NP0>
    </Arg0>
    <AdvP0>
      <Adv0>hodiem</Adv0>
    </AdvP0>
    <Arg0>
      <NP0>
        <N0>pane</N0>
        <AdjP0>
          <Adj0>nostrel</Adj0>
          <Adj0>quotidianel</Adj0>
        </AdjP0>
      </NP0>
    </Arg0>
  </Sentence>
  <ConjSent>e</ConjSent>
  <Sentence>
    <VP>
      <V>pardonan</V>
    </VP>
    <AdvP0>
      <Prep>a</Prep>
      <Arg0>
        <NP0>
          <N0>nose</N0>
        </NP0>
      </Arg0>
    </AdvP0>
    <Arg0>
      <NP0>
        <N0>debites</N0>
        <AdjP0>
          <Adj0>nostrel</Adj0>
        </AdjP0>
      </NP0>
    </Arg0>
  </Sentence>
  <ConjSent>e</ConjSent>
  <Sentence>
    <AdvP0>
      <Adv0>comem</Adv0>
      <AdvP1>
        <Adv1>etiamim</Adv1>
      </AdvP1>
    </AdvP0>
    <Arg0>
      <NP0>
        <N0>nose</N0>
      </NP0>
    </Arg0>
    <Arg0>
      <NP0>
        <N0>lose</N0>
      </NP0>
    </Arg0>
    <VP>
      <V>pardonat</V>
    </VP>
    <AdvP0>
      <Prep>a</Prep>
      <Arg0>
        <NP0>
          <N0>debitores</N0>
          <AdjP0>
            <Adj0>nostrel</Adj0>
          </AdjP0>
        </NP0>
      </Arg0>
    </AdvP0>
  </Sentence>
  <ConjSent>e</ConjSent>
  <Sentence>
    <VP>
      <Negation>non</Negation>
      <V>inducen</V>
    </VP>
    <Arg0>
      <NP0>
        <N0>nose</N0>
      </NP0>
    </Arg0>
    <AdvP0>
      <Prep>in</Prep>
      <Arg0>
        <NP0>
          <N0>tentatione</N0>
        </NP0>
      </Arg0>
    </AdvP0>
  </Sentence>
  <ConjSent>sed</ConjSent>
  <Sentence>
    <VP>
      <V>liberan</V>
    </VP>
    <Arg0>
      <NP0>
        <N0>nose</N0>
      </NP0>
    </Arg0>
    <AdvP0>
      <Prep>de</Prep>
      <Arg0>
        <Art>le</Art>
        <NP0>
          <N0>male</N0>
        </NP0>
      </Arg0>
    </AdvP0>
  </Sentence>
  <ConjSent>e</ConjSent>
  <Sentence>
    <Interj>amen</Interj>
  </Sentence>
</Text>



basta

Цитата: basta от февраля 19, 2020, 15:17
2. Составные числительные в любых ролях кроме существительного ("сто пятьдесят третий").
Сделал и сделал хорошо. Поставил их в именную фразу. И чтобы не было горы вспомогательных слов, количественное числ-е поставил перед сущ-м, а порядковое после. Разница с интерлинвгой IALA в том, что там числ-е могут быть полноправными сущ-ми и прил-ми, а здесь они только в сопровождении сущ-го и строго до или после него, что на мой взгляд не беда, т.к. числительные в номинальном смысле употребляются реже и поэтому будут снабжены словами-затычками типа coses "вещи", veces "разы".

le anniversarie duo cento cinquantesime - двести пятидесятая годовщина

<Text>
  <Sentence>
    <Arg0>
      <NP0>
        <Art>le</Art>
        <N0>anniversarie</N0>
        <OrdinalNumeral>
          <N_1_999_ord>
            <N_1_9>duo</N_1_9>
            <Num100>cento</Num100>
            <N_10_90_ord>cinquantesime</N_10_90_ord>
          </N_1_999_ord>
        </OrdinalNumeral>
      </NP0>
    </Arg0>
  </Sentence>
</Text>


le millepedes ha perdita quatro cento novanta nove pedes - сороконожка потеряла 499 ножек

<Text>
  <Sentence>
    <Arg0>
      <NP0>
        <Art>le</Art>
        <N0>millepedes</N0>
      </NP0>
    </Arg0>
    <VP>
      <PresentPerfectAuxV>ha</PresentPerfectAuxV>
      <PtcpPast0>perdita</PtcpPast0>
    </VP>
    <Arg0>
      <NP0>
        <CardinalNumeral>
          <Natural>
            <N_0_999>
              <N_1_999>
                <N_1_9>quatro</N_1_9>
                <Num100>cento</Num100>
                <N_10_90>novanta</N_10_90>
                <N_1_9>nove</N_1_9>
              </N_1_999>
            </N_0_999>
          </Natural>
        </CardinalNumeral>
        <N0>pedes</N0>
      </NP0>
    </Arg0>
  </Sentence>
</Text>


Цитата: basta от февраля 19, 2020, 15:17
3. Подчинённые предложения, вложенные в главное ("дом, в котором живёт Иван, расположен на краю деревни").
Чтобы сделать вложенные предложения возможными, нужно в определении сущ-го рекурсивно сослаться на определение предложения, в то время как (очевидно) определение предложения ссылается на определение сущ-го. В PyPEG все определения делаются через классы, а python не может задавать классы рекурсивно. Я пытался разобраться как это можно сделать через костыли, скажем декораторы или метаклассы, но не осилил. Так что вложенных предложений не будет, по крайней мере в этой реализации. Известно, что PEG.js ограниченно поддерживает рекурсивные определения. Т.е. они обязательно должны ветвиться вправо. Не невозможно, но дофига делов.

Цитата: basta от февраля 19, 2020, 15:17
1. Сравнительные обороты в прилагательных и наречиях ("быстрее, чем Пётр").
Делается легко, если считать слово чем предлогом. Примерное значение у такого предлога "по сравнению с". Не очень по-европейски, конечно, но в японском именно так и делается частицей ёри/ёримо.

IALA: un persona plus rapide que Piotr
WR: un persone rapidel plusim qua piotro - некто быстрее, чем Пётр

<Text>
  <Sentence>
    <Arg0>
      <NP0>
        <Art>un</Art>
        <N0>persone</N0>
        <AdjP0>
          <Adj0>rapidel</Adj0>
          <AdvP1>
            <Adv1>plusim</Adv1>
            <AdvP2>
              <Prep>qua</Prep>
              <Arg2>
                <NP2>
                  <N2>piotro</N2>
                </NP2>
              </Arg2>
            </AdvP2>
          </AdvP1>
        </AdjP0>
      </NP0>
    </Arg0>
  </Sentence>
</Text>


Если совсем калькировать японский, то plus можно опустить.

Фразы "быстрее, чем я мог себе представить", увы, здесь невозможны, как и другие виды вложенных предложений.

basta

Цитата: basta от мая 17, 2020, 17:44
Чтобы сделать вложенные предложения возможными, нужно в определении сущ-го рекурсивно сослаться на определение предложения, в то время как (очевидно) определение предложения ссылается на определение сущ-го. В PyPEG все определения делаются через классы, а python не может задавать классы рекурсивно. Я пытался разобраться как это можно сделать через костыли, скажем декораторы или метаклассы, но не осилил.
Обманул. Оказывается, всё очень просто. Определение класса можно оставить пустым (с ключевым словом pass), а потом расписать подробно в любом месте кода.

Цитата: basta от мая 17, 2020, 17:44
IALA: un persona plus rapide que Piotr - некто быстрее, чем Пётр
WR: un persone plus rapidel qua Piotre iu
(iu - терминатор вложенного предложения, на всякий случай)

<Text>
  <Sentence>
    <Arg0>
      <NP0>
        <Art>un</Art>
        <N0>persone</N0>
        <AdjP0>
          <AdjP0i>
            <ComparativeAdv>plus</ComparativeAdv>
            <Adj0>rapidel</Adj0>
            <ComparativeConj>qua</ComparativeConj>
            <Sentence>
              <Arg0>
                <NP0>
                  <N0>Piotre</N0>
                </NP0>
              </Arg0>
            </Sentence>
            <SubsentenceEnd>iu</SubsentenceEnd>
          </AdjP0i>
        </AdjP0>
      </NP0>
    </Arg0>
  </Sentence>
</Text>


IALA: ille curre plus rapidemente que io imaginava
WR: ille curret plus rapidem qua ie imaginava iu - он бежит быстрее, чем я представлял себе

<Text>
  <Sentence>
    <Arg0>
      <NP0>
        <N0>ille</N0>
      </NP0>
    </Arg0>
    <VP>
      <V>curret</V>
    </VP>
    <AdvP0>
      <AdvP0i>
        <ComparativeAdv>plus</ComparativeAdv>
        <Adv0>rapidem</Adv0>
        <ComparativeConj>qua</ComparativeConj>
        <Sentence>
          <Arg0>
            <NP0>
              <N0>ie</N0>
            </NP0>
          </Arg0>
          <VP>
            <V>imaginava</V>
          </VP>
        </Sentence>
        <SubsentenceEnd>iu</SubsentenceEnd>
      </AdvP0i>
    </AdvP0>
  </Sentence>
</Text>


Соответственно точно так же можно сделать сравнительные обороты, подчинённые предложения и парные союзы, которые так долго не поддавались формализации. :smoke:
Продолжение следует.

basta

С подачи Astromir'а освоил peg.js, так что теперь можно играться с парсером в браузере.

Надоело притворяться интерлингвой, поэтому эта итерация основана на априорной лексике: https://rgj40q.github.io/potato.html ,
зачаток словаря: https://raw.githubusercontent.com/rgj40q/rgj40q.github.io/master/dict.js , формальная грамматика в начале странички под тегом <script id="grammar"...>: https://raw.githubusercontent.com/rgj40q/rgj40q.github.io/master/potato.html .

Лень было доделать сложноподчинённые предложения с союзами / союзными словами / местоимениями. Когда-нибудь, когда снизойдёт вдохновение... :)

Цитата: basta от июля  4, 2019, 21:05
Парсер не смотрит в словарь, не понимает и не переводит значения слов.
Теперь смотрит и переводит, хотя и пословно. Общий смысл додумывайте сами, так сказать. :)

Hellerick

Personal, me no comprende cual tu fa asi.

Лично я не понимаю, чем вы тут занимаетесь.

basta

Да собственно тем же, чем и всегда.

ЦитироватьЦелей у проекта три.
1. Язык должен иметь грамматику, похожую на стандартную европейскую.
2. Текст на этом языке должен быть похож на Интерлингву IALA, хотя бы отдалённо.
3. Текст должен быстро парситься компьютером.

По сравнению с тем, что было в теме "Логический язык не взрывающий мозг", грамматика сложнее и более европеоидна. Вместо бесконечно ветвящихся абстрактных потоков - более-менее привычные имена, глаголы и наречия с ограниченным ветвлением, т.е. у каждого места в предложении своя часть речи и это число конечно, а ветвление ограничено перечислением через союзы и "дном" в три уровня от субъекта/объекта предложения. Имеется парсер в качестве подтверждения однозначности синтаксиса. Я считаю, что предложенные в той теме простые грамматики слишком просты и на практике тоже взрывают мозг.

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр