Raxys Studios
685 subscribers
120 photos
14 videos
63 links
Made with honor in North Caucasus
https://raxys.app
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
В следующем посте я постараюсь рассказать о главном улучшении - возможности добавлять озвучку в разговорник, а так же о некотором упрощении логики работы контекста разговорника. А пока, вот небольшая демонстрация.
После ещё некоторого успешного тестирования и оптимизаций, уверенно считаю, что работать с разговорником стало легче, а принципы его работы - более просты. Продолжаем разбор новых функций.

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

Теперь же функции требований для отключения блока объединены с условиями состояний. Каждый тег в условии состояния может быть в одном из 3х состояний: игнорирован, запрошен, либо предоставлен. Запрошенный тег, если отсутствует в контексте, скрывает данное состояние. Предоставляемый тег, при показе состояния, посылается в глобальный контекст. При изменении соответствующих свойств контекста каждый блок составляет рейтинг из своих состояний на основе их предоставляемых тегов, и показывает первое из них, либо никакое, если ни одно состояние не нашло все запрашиваемые теги. Абстрактно это может звучать несколько сложно, но на примере должно стать понятно.

Простая фраза с двумя блоками: "ду вянда (я иду)" . Первый блок - я - может быть в одном из двух состояний: "ду (ед.)" и "нисса (мн.)". Первое состояние предоставляет в контекст информацию о том, что лицо в единственном числе, а второе - что во множественном. Далее, второй блок - иду - может быть в одном из трёх состояний: "вянда (муж.)", "рянда (жен.)", "дянда (мн.)". Первое состояние, прежде всего, требует, чтобы человек в контексте был в единственном числе, и предоставляет информацию о том, что он - мужчина. Второе состояние выдвигает то же требование, и предоставляет то, что человек - женщина. А третье состояние не предоставляет ничего, лишь требуя, чтобы лицо было во множественном числе, так как эта информация уже предоставлена во втором состоянии первого блока. Изменение отображаемого состояния в любом блоке с предоставляемыми тегами посылает цепную реакцию через контекст во все другие блоки во всех языках. Вот как-то так.
Raxys Studios
После ещё некоторого успешного тестирования и оптимизаций, уверенно считаю, что работать с разговорником стало легче, а принципы его работы - более просты. Продолжаем разбор новых функций. Упрощённая структура блоков Напомню, что каждая фраза в разговорнике…
Для полноты описания стоит ещё дать краткое объяснение переходам между состояниями в блоке. Во всё той же фразе, первый блок свободно переключается между "ду (ед.)" и "нисса (мн.)", изменяя множественность лица. Во втором же блоке, "дянда (мн.)" не имеет перехода, так как вся его информация уже задаётся через "нисса". А вот "вянда (муж.)" и "рянда (жен.)" так же могут свободно переключаться между собой, дополняя единственное число лица ещё и его родом.
Raxys Studios
В следующем посте я постараюсь рассказать о главном улучшении - возможности добавлять озвучку в разговорник, а так же о некотором упрощении логики работы контекста разговорника. А пока, вот небольшая демонстрация.
Последние посты по большей части рассказывали о доработке интерфейса редакторов и об общих улучшениях сайта. А теперь про ключевое пользовательское обновление.

Звуковое сопровождение разговорника
Главная сложность озвучки нашего разговорника в том, что звук должен меняться вместе с изменением отображаемого текста. Рассмотрим предложение из четырёх слов, в котором изменяются первое и последнее: "[ Мне ] нужно увидеть [ врача ]".

Предположим, длительность произношения каждого слова - 1 сек., тогда всё предложение (не важно в какой вариации) - 4 сек. Допустим, мы не разбиваем аудиофайл предложения на слова, а записываем и проигрываем всё целиком. В первом блоке у нас четыре вариации: "мне, тебе, ему, адыгэ уей уей", а во втором - три: "врача, юриста, полицейского". 4 * 3 = 12 вариаций конечного предложения. Если, как уже было сказано, каждая вариация занимает 4 сек., то всё это займёт 4 * 12 = 48 сек. записи.

А теперь представим, что мы записываем не всё предложение целиком, а именно каждый блок по отдельности. Первый блок - 4 вариации - 4 сек. Второй блок - статичный текст "нужно увидеть" - 2 сек. Третий блок - 3 вариации - 3 сек. Итого: 4 + 2 + 3 = 9 сек.

9 сек. с разбивкой против 48 сек. без разбивки. И это лишь одно, вероятно, не самое сложное предложение. И таких у нас будут многие десятки. Каждое из них записывать в полных вариациях - огромный объем рутинной работы, которая будет лишь увеличиваться, и которую можно избежать.

Работает это достаточно просто. По нажатию кнопки система собирает тексты всех отображаемых блоков во фразе, и проигрывает друг за другом файлы с соответствующими именами. Так, если фраза находится в состоянии "[ Мне ] нужно увидеть [ врача ]", то система ищет файлы "Мне.mp3", "нужно увидеть.mp3", "врача.mp3", и проигрывает их, пропуская отсутствующие файлы. При изменении какого-либо блока изменяется и название запрашиваемого файла. Эти файлы хранятся в папках {lect}/audio/phrasebook/{phrase.id}, а prhase.id можно скопировать в редакторе разговорника. Таким образом, озвучка буквально собирается на ходу под текущий вариант фразы.

На этом я успешно завершаю основополагающую техническую работу на ближайшее время. Теперь, наконец, плотно приступаем к составлению разговорника. Об этом расскажем на следующей неделе.
За последний месяц я пытался по-разному подходить к составлению разговорника, и понял две вещи:
1. Решения о том, какие фразы включать и как их организовывать, не должен принимать один человек, особенно такой некомпетентный как я.
2. Составление должно быть итеративным процессом, поскольку объём работы слишком велик, а ресурсы слишком малы, чтобы взять и разом всё сделать.

Поэтому работа по корпусу теперь проводится в обновляемом документе, и весь языковой материал, напоминаю, хранится на ветке репозитория. Все желающие могут комментировать и предлагать дополнения к корпусу, а также добавлять перевод для своего языка на сайт через инструменты редактирования. Такой получается Crowd & Open Source.

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

Несколько спонтанная первая итерация завершается сегодня. Я её форсировал, так как хотел иметь какой-то базовый результат. По итогам у нас имеется первая секция "Greeting & Parting" с 9ю простыми фразами, переведёнными на кайтагский (текст & голос), иронский (текст & голос) и керенский (текст) (благодарю Таймураза из @ironau_online и Абдурахима из @ruxavus за их помощь). На следующей неделе займусь составлением следующего раздела. Надеюсь, удастся придерживаться темпа.
Тема следующего раздела разговорника - basic communication. Это набор базовых фраз, междометий, выражений знакомства, и вопросов по незнакомому языку. Начальный набросок раздела есть, будем вносить правки до конца этой недели, а на следующей - перевод.

А также ряд технических улучшений:
— Доработан поиск в разговорнике, так что теперь можно искать и по тексту переводов. Например, при выбранном иронском, введя в поиск "райсом", отобразится фраза c "good morning".
— Теперь все блоки, чьё состояние изменилось с последним нажатием, синхронно мигают, чтобы было легче понять что с чем связано.
— Добавлена возможность выделять жирным участки текста. Так, в иронском это используется для обозначения ударения.
— Улучшена работа локального хранилища посредством загрузки всей текстовой информации в фоновом режиме. После короткой начальной загрузки, при переходе из домашней карты, все модули (фонетика, конвертер, разговорник), а не только текущий, будут доступны и без подключения к интернету (за исключением аудио).
— Аудиофайлы переведены в формат .m4a - звуки должны грузиться чуть быстрее.
— Убрана возможность окрашивания определённых морфем в словах, потому что это несколько запутывало и, в целом, было ненужно.
Опрос по словарям

За прошлую неделю по разговорнику ничего не сломалось, а заполнение материала идёт согласно плану. Думаю, можно начинать активнее размышлять над добавлением словарей на сайт. Наверняка вам приходилось взаимодействовать с электронными словарями. Тогда, пожалуйста, расскажите в комментариях к этому посту о своём опыте. Какие неудобства у вас возникали, какие функции вы хотели бы видеть, какая информация вам в нём нужна. Мне полезно знать, какие болевые точки имеются при работе со словарями, чтобы постараться исправить их.

У меня есть некоторые размытые идеи по анализу текста, по созданию корпуса и т.д., но я не представляю всего этого без качественного словаря. Электронный словарь - такая фундаментальная вещь, и по многим кавказским языкам они могли бы быть реализованы лучше, а по моему языку его и вовсе нет. Как и с другими частями приложения, я буду строить сразу для всех, а не только для своего. Посмотрим что получится.
Второй цикл заполнения разговорника подходит к концу. На сайте уже доступен перевод последнего раздела на иронский, кайтагский и керенский. В ближайшие дни наш друг @JohnFaraday завершит перевод первых двух разделов и на кабардинский.

Эти 4 языка - это очень хорошо. Но тут есть одна деталь - все эти языки из разных семей и групп, а разговорник, думаю, наиболее полезен при просмотре родственных языков. Поэтому хотел бы сделать объявление, что проекту нужны люди, готовые помочь с
— дигорским осетинским;
— любым из западных черкесских диалектов;
— любым из языков и диалектов лезгинской ветви;
Эти 3 категории языков в приоритете, так как на сайте уже есть язык из каждой группы, и дополнение к семье будет очень кстати, но, разумеется, я и любым другим языкам рад.

Каждые 2 недели нужно будет переводить по 10 - 15 несложных разговорных фраз, и заносить их на сайт через страницы редактирования. Например, у меня на заполнение последнего иронского раздела ушло 30-40 минут, не считая перевода, который был мне дан, так что у носителя это может быть ещё быстрее. Проект некоммерческий, и всё на чистом энтузиазме, поэтому я прошу помочь лишь в том случае, если вы видите в этом деле пользу для своего языка.

А ещё, рассказал @sputnikossetia про наш проект в небольшом интервью.
Пошаговая инструкция от Сергея Санхядова об освоении родного языка в сознательном возрасте:

0. Не пытаться его выучить,
1. Открыться языку на эмоциональном уровне,
2. Освоить его логическую структуру и довести ее до автоматизма.
3. Тренировать свой речевой аппарат в произношении.

Если заменить слово бурятский на осетинский, то цитата будет звучать так: «Реальным показателем того, что осетинский язык стал возрождаться, будет тот момент, когда мы с вами начнем слышать в общественных местах осетинскую речь с русским акцентом».
Forwarded from За языки РФ
Докладчики конференции 12 марта:

🔺Ильдар Киньябулатов (Республика Башкортостан) — Башкирские ИТ-проекты
🔺Григорий Григорьев (Удмуртская Республика) — Решения в области электронной инфраструктуры удмуртского языка
🔺Андрей Чемышев (Республика Марий Эл) — Электронная инфраструктура марийского языка
🔺Магомед Магомедов (Республика Дагестан) — Портал кавказских языков Avzag
🔺Марина Федина (Республика Коми) — Электронная инфраструктура коми языка
🔺Ильгам Шарипов (Республика Татарстан) — Татарское интернет-радио urban.tatar
🔺Василий Харитонов, Динара Сатанова — Мобильное приложение для изучения нанайского языка

Время проведения конференции: 14.00 — 19.00 (мск)

https://languages-rf.timepad.ru/event/1574124/
Пока мы ждём видео с недавней конференции, чтобы поделиться последними новостями по проекту, вот интересный взгляд на родной язык на примере Удмуртского. Поразительно, насколько практически всё сказанное в статье относится и к моему языку, и, полагаю, к другим языкам Кавказа.