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

Генератор языков

Автор shinkarom, августа 12, 2009, 15:05

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

Bhudh

Цитата: ВадимийНадо просто подождать, пока всё не напишет (у меня это занимает где-то полминуты).
Так то у Вас. А на моей старушке две с лишним.

Цитата: ВадимийА что у моей противоречивого?
Да нет, теперь выяснилось, что просто маловато синтаксиса, в основном морфология.

Цитата: ВадимийА грамматика? А фонетика?Не заметили?
Честно говоря, сначала не дождался, думал, комп заглючило.
Советую оптимизировать — сначала давать грамматику и основные слова (например, список Сводеша :)), а потом предлагать выбор: если понравилось выданное, сгенерить весь словник, если не понравилось, повторить генерацию основ.

Да, и с приставочными словами надо что-то сделать. А то на один корень разные генерит.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Bhudh

Кстати, порадовало ;D:
Цитировать* ебать - hutogu
ебаться - zysybykogu
еть - pigygu
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Вадимий

Цитата: Bhudh от августа 15, 2009, 15:56
Кстати, порадовало ;D:
Цитировать* ебать - hutogu
ебаться - zysybykogu
еть - pigygu
Ужас какой!Спасибо,что сказали! Поправил у себя.
Словарь-то не я составлял.
Это всё из викисловаря в категории "Русские глаголы." Какие они там все испорченные!

Вадимий

Спасибо за советы!

По поводу синтаксиса: можно поподробней? Что, например, должна придумывать программа?

Bhudh

Цитата: ВадимийЭто всё из викисловаря
Хм. Звёздочки тоже?

Цитата: ВадимийПо поводу синтаксиса: можно поподробней?
Например, какие-нибудь нестандартные применения падежей, конструкции с пред-/послелогами и т. д. и т. п.

Цитата: ВадимийЧто, например, должна придумывать программа?
У Вас там что — полноценный AI в 378 KiB'ах?!
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Вадимий

Цитата: Bhudh от августа 15, 2009, 16:15
Цитата: ВадимийЭто всё из викисловаря
Хм. Звёздочки тоже?
Потому что список. Я сделал программу,чтобы всё, кроме слов, удалила, но она удалила не всё. (но сначала все слова начинались на "                   *    ")

Цитата: Bhudh от августа 15, 2009, 16:15
Цитата: ВадимийПо поводу синтаксиса: можно поподробней?
Например, какие-нибудь нестандартные применения падежей, конструкции с пред-/послелогами и т. д. и т. п.
Ой, сложно... боюсь
Цитата: Bhudh от августа 15, 2009, 16:15
Цитата: ВадимийЧто, например, должна придумывать программа?
У Вас там что — полноценный AI в 378 KiB'ах?!
Не цепляйтесь,пожалуста, к словам.

И по поводу корней: сложно, но я попробую.

Hellerick

Почитал словарь сгенерированный программой Вадимия:

я - mycujutyde
мы - hecupugyde


Надо бы ввести индекс частоты для слов — более частые должны быть более короткими. И как-нибудь контролируется появление омофонов?

Да и хотелось бы, чтобы фонетическая структура языка тоже определялись бы случайно.

Вадимий

Цитата: Hellerick от августа 15, 2009, 16:38
Почитал словарь сгенерированный программой Вадимия:

я - mycujutyde
мы - hecupugyde


Надо бы ввести индекс частоты для слов — более частые должны быть более короткими.
Я об этом уже думал. Скоро так сделаю.

Цитата: Hellerick от августа 15, 2009, 16:38
И как-нибудь контролируется появление омофонов?
Нет. НИкак. А зачем?
Цитата: Hellerick от августа 15, 2009, 16:38
Да и хотелось бы, чтобы фонетическая структура языка тоже определялись бы случайно.
Так и есть. Одни звуки суть чаще других суть, а не ссуть!. Это определяется в самом начале программы случайно.
Кстати, иногда (редко) моя программа даёт мне язык со всего одной гласной.


Hellerick

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

Вот, например список законов (для SED'а), которые я использовал для языка Keva:


Вадимий

Цитата: Hellerick от августа 15, 2009, 17:13
Надо бы ввести небольшую библиотеку фонетических законов (фильтров поиска-замены текста), и задействовать их случайным образом. Эти законы должны применяться к каждому из слов, и это придаст словам языка некий общий фонетический стиль.

Вот, например список законов (для SED'а), которые я использовал для языка Keva:

Я не понимаю приведённых Вами законов.

Вадимий

Даю вам чуть-чуть изменённую версию (слова из списка Сводеша из одного-двух слогов, а программа, прдума грамматику и слова из списка сводеша, спрашивает пользователя, нравится это ему или нет. Если нет,то делает всё заново) и ложусь спать.

Hellerick

Значения слова ty согласно сгенерированному словарю:

большой
длинный
охотиться (в лесу)
ударить (однократно рукой)
давать держать (рукой)
песок
жёлтый
сухой


Когда я говорил о контроле за появлением омофонов, я имел в виду именно это. Хотя про песок, желтый, сухой это здорово подмечено.  :)

Я привел правила фонологических изменений в форме понятной программе SSED (super string editor), которая использует синтаксис похожий на Pearl

Например s/nz([ptkm])([aeiou])/nz\2\1\2/g означает:

s — команда найти и заменить
nz([ptkm])([aeiou]) — найти строку, в которой nz идет перед буквой p, t, k, или m, а за нею идет одна из пяти гласных
nz\2\1\2 — заменить строку на буквы nz, за которыми будет стоять гласная из аргумента поиска, затем согласная из аргумента поиска, а затем еще раз та же гласная
g — произвести поиск и замену по всему тексту

В результате применения данного правила, например, слово panzte изменится на panzete.

Люблю работать с SSED'ом, очень удобно.

Вадимий

Цитата: Hellerick от августа 15, 2009, 18:23

Например s/nz([ptkm])([aeiou])/nz\2\1\2/g означает:

s — команда найти и заменить
nz([ptkm])([aeiou]) — найти строку, в которой nz идет перед буквой p, t, k, или m, а за нею идет одна из пяти гласных
nz\2\1\2 — заменить строку на буквы nz, за которыми будет стоять гласная из аргумента поиска, затем согласная из аргумента поиска, а затем еще раз та же гласная
g — произвести поиск и замену по всему тексту

В результате применения данного правила, например, слово panzte изменится на panzete.

Люблю работать с SSED'ом, очень удобно.
Вы не возравжаете, если я у себя сделаю такой же синтаксис?  (Команды будут генерироваться случайно программой)

Вадимий

Цитата: Hellerick от августа 15, 2009, 18:23
Значения слова ty согласно сгенерированному словарю:

большой
длинный
охотиться (в лесу)
ударить (однократно рукой)
давать держать (рукой)
песок
жёлтый
сухой


Когда я говорил о контроле за появлением омофонов, я имел в виду именно это. Хотя про песок, желтый, сухой это здорово подмечено.  :)
Это можно, но
Цитата: Яндекс Словари от
tickler['tɪklə]
сущ.

1) тот, кто щекочет или чем щекочут

2) амер. блокнот, записная книжка

3) уст.

а) затруднение; щекотливое положение

б) трудная задача

4) авто подкачивающая помпа

5) радио анодная катушка обратной связи

6) мор.; жарг. самокрутка

7) разг. пианист

8) амер.; разг.

а) небольшое количество спиртного

б) пистолет, нож

Hellerick

Цитата: Вадимий от августа 16, 2009, 05:34
Вы не возравжаете, если я у себя сделаю такой же синтаксис?  (Команды будут генерироваться случайно программой)

Почему вы меня спрашиваете? Мне же ничего не принадлежит.

Вот только я не знаю, насколько это возможно в Delphi. RegEx (регулярные выражения) — классная штука. Если к ним привыкнуть, то начинаешь решать с их помощью множество проблем по преобразованию текстов, данных, форматов и т.п. Я не упертый поклонник SED'а (упертые сидят на http://sed.sourceforge.net/), но сам ловлю себя на том, что вместо того, чтобы редактировать текст в программе-редакторе, начинаю писать алгоритм для его редактирования в SSED'е.

Команды едва ли могут быть совсем случайными, случайным должен быть их выбор. Сам правила должен придумать человек. Например вот правило для ввода губной гармонии может выглядеть так:

s/([ou][bcdfghjklmnpqrstvwxz]+)[ae]/\1o/g
s/([ou][bcdfghjklmnpqrstvwxz]+)i/\1u/g

Т.е. если после гласной o или u за которым идет согласный или группа согласных, идет неогубленный гласный, то a и e изменятся на o, а i — на u.

Всё-таки большое число омофонов — это страшновато. Не дай бог совпадут местоимения и т.п. Я бы рекомендовал сначала сранжировать слова по частоте (т.е. более частые слова должны быть в начале списка), и сгененрировать для каждого четырехсложную абракадабру. Потом для каждого слова сокращать абракадабру по одной букве за раз и смотреть, чтобы его результат (после применения правил) не совпадал с уже имеющимися словами. Если совпадает — прекращаем сокращение слова. В этом случае более частые слова окажутся более короткими, а омофоны будут исключены.

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

Bhudh

Цитата: ВадимийДаю вам чуть-чуть изменённую версию (слова из списка Сводеша из одного-двух слогов...)
Из двух слогов не даёт (имеется в виду при склонении?).
Кстати, со Сводешом файл местоимений не нужен, а то они два раза генерятся. Получается как в японском :green:.
Ну и с глаголами без изменений...
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Вадимий

Цитата: Bhudh от августа 16, 2009, 15:40
Цитата: ВадимийДаю вам чуть-чуть изменённую версию (слова из списка Сводеша из одного-двух слогов...)
Из двух слогов не даёт (имеется в виду при склонении?).
Кстати, со Сводешом файл местоимений не нужен, а то они два раза генерятся. Получается как в японском :green:.
Я хотел сделать, чтобы слова из списка Сводеша были из одного-двух слогов, но нечаянно сделал только из одного.
Цитата: Bhudh от августа 16, 2009, 15:40
Ну и с глаголами без изменений...
Что именно? звёздочки?

Bhudh

Цитата: ВадимийЧто именно? звёздочки?
Неверно выразился. С глагольным синтаксисом.
Порядок слов — далеко не весь синтаксис.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Вадимий

Цитата: Bhudh от августа 16, 2009, 22:44
Цитата: ВадимийЧто именно? звёздочки?
Неверно выразился. С глагольным синтаксисом.
Порядок слов — далеко не весь синтаксис.
Давайте Вы приведёте два-три примера, какую грамматику должна в идеале делать программа.

Bhudh

Пожалуйста.
Примеры (от балды).
Местоимения.

1 л. ед. ч.ɦoo
2 л. ед. ч.đoa
1 л. дв. ч. инкл.ɦoa
1 л. дв. ч. экскл.ɦoda
2 л. дв. ч.đođa
1 л. мн. ч. инкл.ō-hawa
1 л. мн. ч. экскл.ō-hada
2 л. мн. ч.on-da
3 лица нет, используются указательные местоимения tsa "вот этот (ближайший)", two "этот (рядом)", zoŋ "вон тот (поодаль, о видимом [слышимом &c.])", zɨn "тот (об отсутствующем)", к каждому местоимению может фикситься отрицание mā-/-am (mātsa, mātwo, zoŋam, zɨnam).

Глагол. Настоящее время.
Глагол "идти"Настоящее время           Прошедшеевремя     
идти  baruидти (в прошлом)bar-ax-u
иду  ɦo-barя шёлbar-ax-o
идёшь  đo-barты шёлbar-ax-to
иду с тобой  ɦa-bar-waя шёл с тобойbar-ax-wax
иду с ним  ɦo-bar-daя шёл с нимbar-ax-dox
ты и ты идёте  đo-bar-daты и ты шлиbar-ax-dat
мы с вами идём  hō-bar-waмы с вами шлиbar-ax-ox
мы идём  hō-bar-daмы шлиbar-ax-dax
вы идёте  on-bar-daвы шлиbar-ax-don
В прошедшем времени местоименные аффиксы ставятся в конце слова и существенно ассимилируются.

Синтаксис.
Я иду с тобой по лесуčoz-ze (loc.) ɦabarwa
Вы идёте домойonbarda wa-dūp-oŋ (poss.-obj-acc., прямое дополнение после глагола)
Мы с вами доим козmehekaxox ō-meh-oŋo (plur.-obj-acc. pl.)
Мы с вами доим своих козmehekaxox wō-meh-oŋo (poss.-plur.-obj-acc. pl.)
Вон те люди бегут за водойō-zoŋ rewa-dodo (obj.-суффикс каузатива) ō-barubaro
Ты не шёл за козойme-dodo đobaraxam (суффикс отрицания в конце глагола)
Не ты шёл за козойmāđo(a) me-dodo baraxto (при отрицании местоимения оно используется в полном виде)
Ты шёл не за козойme-dodo-mā baraxto
Вы не говорите на (нашем) Языкеdoŋ-grnuw-am Garanaw-oŋ (букв. "вы-говор(ить)-не Язык (acc.)", подразумевается, что Язык — единственный)

Рекомендую заглянуть в раздел "Лингвистические задачи" — там много подобных примеров, причём более разработанных. Был ещё старый бумажный сборник, но не знаю, можно ли его в сети найти; там задачи по реальным языкам были.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Вадимий

Спасибо большое! Буду знать, к чему стремиться.

shinkarom

Я вижу, что про меня все уже забыли. Так вот. Меня спрашивали, какая у меня идея.
Моя идея заключается в генерации слов по маске, такой как "cvcvc"=fedyx или siviz или banan и т. д.
Мой блог //allthetongues.hol.es

Вадимий

Цитата: shinkarom от августа 18, 2009, 12:46
Я вижу, что про меня все уже забыли.
Вы не писали, и Вам не отвечали.
Запомните: Если хотите получить ответ на письмо, сначала напишите его!

Цитата: shinkarom от августа 18, 2009, 12:46
Моя идея заключается в генерации слов по маске, такой как "cvcvc"=fedyx или siviz или banan и т. д.
Язык - это не только лексика!
На форуме уже был "программный генератор лексики, если лень."

arseniiv

Цитата: Вадимий от августа 18, 2009, 16:18
На форуме уже был "программный генератор лексики, если лень."
Я его, кстати, решил улучшить опциями, чтобы не редактировать файлы и не менять их туда-сюда. Но моя Delphi [у меня тоже она, притом 7, и притом она какая-то испорченная и иногда нормальный код не компилирует] что-то виснет при присвоении нормального свойства нормальному уникодному компоненту. Бился-бился и устал... Так что, боюсь, этот генератор никогда не появится больше нигде, кроме той темы - хотя для русского языка он выдаёт красоту (конечно, зависит от того, называть ли "ья", "ью" и "ьи" гласными буквами ;-) Могу приложить файл с опциями. Хохот гарантирован (если сделать список из 100 слов, например - вполне хватает).

Ой. Забыл. Hellerick, вы спрашивали, есть ли для (или в) Delphi хорошая библиотека регулярных выражений. Есть. Модуль называется почти безлико: TRegExpr - вдруг кому-нибудь понадобится. Там ещё ссылка на сайт: http://anso.virtualave.net/ Но я брал в другом месте и не помню, рабочая ли она. :what:

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

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

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

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

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