Forwarded from За языки РФ
Интервью со спикером нашей конференции Магомедом Магомедовым на портале Global Voices
AM: What are your hopes for the future of Kaitag and other local languages?
MM: I used to think that everything was lost, but now I believe that even a single passionate person with a cheerful attitude and the right tools can turn the tide of the battle. Most importantly, we have small but passionate local communities with individuals working hard to reclaim their intellectual sovereignty. And then—this is my part—we have technologies to facilitate our activities and explore innovative solutions. The future is exciting for those of us who aspire to use for good and multiply the intellectual assets provided by our languages and our culture.
https://globalvoices.org/2021/03/28/the-watchtower-on-the-mountain-of-dagestans-indigenous-languages/
AM: What are your hopes for the future of Kaitag and other local languages?
MM: I used to think that everything was lost, but now I believe that even a single passionate person with a cheerful attitude and the right tools can turn the tide of the battle. Most importantly, we have small but passionate local communities with individuals working hard to reclaim their intellectual sovereignty. And then—this is my part—we have technologies to facilitate our activities and explore innovative solutions. The future is exciting for those of us who aspire to use for good and multiply the intellectual assets provided by our languages and our culture.
https://globalvoices.org/2021/03/28/the-watchtower-on-the-mountain-of-dagestans-indigenous-languages/
Global Voices
The watchtower on the mountain of Dagestan's indigenous languages
Kaitag, a language variant of the Dargwa family, is spoken in Dagestan's mountainous villages, but has a limited digital presence. Digital activists like Magomed Magomedov are working to change this.
Заполнение разговорника временно (до конца мая) приостановлено. На это есть две причины.
Чтобы от сайта была польза, для него нужны материалы, а чтобы были материалы - нужны люди. За прошлые пару неделя я несколько раз пытался объяснять инструменты редактирования. И только тогда я осознал, насколько мои инструменты сложны. Потому что, как разработчик, я не могу оценить тяжесть этой системы для человека со стороны, который к тому же и не программист. И я не знаю, как это положение можно поправить. Очевидно, нет смысла в упрощении самой системы в ущерб функционалу. Тогда, наверное, нужно будет создавать обучающие видеоролики, писать текстовые руководства. Плотно займёмся этим летом.
Вторая причина в том, что я теперь работаю над сайтом в рамках двух учебных предметов. Это очень хорошо, но это ещё и накладывает побочные, чисто академические задания, на выполнение которых я и должен временно переключиться.
Вот так, в ближайший месяц буду писать о ходе разработки словарей. Пока что всё ещё есть совершенно непонятные для меня моменты в реализации, поэтому сейчас активно исследуем разные технологии.
Чтобы от сайта была польза, для него нужны материалы, а чтобы были материалы - нужны люди. За прошлые пару неделя я несколько раз пытался объяснять инструменты редактирования. И только тогда я осознал, насколько мои инструменты сложны. Потому что, как разработчик, я не могу оценить тяжесть этой системы для человека со стороны, который к тому же и не программист. И я не знаю, как это положение можно поправить. Очевидно, нет смысла в упрощении самой системы в ущерб функционалу. Тогда, наверное, нужно будет создавать обучающие видеоролики, писать текстовые руководства. Плотно займёмся этим летом.
Вторая причина в том, что я теперь работаю над сайтом в рамках двух учебных предметов. Это очень хорошо, но это ещё и накладывает побочные, чисто академические задания, на выполнение которых я и должен временно переключиться.
Вот так, в ближайший месяц буду писать о ходе разработки словарей. Пока что всё ещё есть совершенно непонятные для меня моменты в реализации, поэтому сейчас активно исследуем разные технологии.
Размышляя над словарём, я видел 2 модели.
Первая - это стандартное серверное приложение. Наподобие https://www.ironau.ru/vortaro.php или https://gaf.lezgichal.ru/. Когда сайт - лишь средство связи с сервером, где хранятся слова и осуществляется поиск.
Вторая модель - мобильное оффлайн приложение, которое скачивается с Google Play / AppStore. Все слова у тебя на телефоне, и ты можешь искать без интернета.
Как это часто бывает с техническими проблемами, здесь нет единственно верного решения. Каждая модель имеет свои преимущества и недостатки, и лучше всего было бы постараться реализовать гибридную модель.
С той инфраструктурой, что имеет наш сайт, раздел словарей реализуется в следующем виде. Пользователь заходит на карту, выбирает языки, открывает словарь. Начинается загрузка словарных данных в кэш браузера. Далее эти загруженные словари доступны на компьютере или телефоне и без интернета.
Плюсы такого подхода:
— После начальной загрузки, автономный доступ к словарями.
— Возможность заносить новые слова, которые будут доступны другим пользователям.
— Полная открытость всех языковых данных, которые всё так же буду храниться в репозитории.
Минусы:
— В худшем случае, если не получится далее улучшить кэширование, придётся ждать секунд 20 при каждой смене языков. Тесты показали, что 4 языка, по 12 тыс. (пустых) словарных единиц в каждом, загружаются и заносятся в локальное хранилище за 11 секунд.
— На данный момент на сайте нет встроенного механизма оповещения об обновлении языковых данных. Так что пользователь не имеет возможности прямо на сайте узнать, если в исходный словарь была загружена новая порция данных, и ему нужно перезагрузить локальную копию.
Первая - это стандартное серверное приложение. Наподобие https://www.ironau.ru/vortaro.php или https://gaf.lezgichal.ru/. Когда сайт - лишь средство связи с сервером, где хранятся слова и осуществляется поиск.
Вторая модель - мобильное оффлайн приложение, которое скачивается с Google Play / AppStore. Все слова у тебя на телефоне, и ты можешь искать без интернета.
Как это часто бывает с техническими проблемами, здесь нет единственно верного решения. Каждая модель имеет свои преимущества и недостатки, и лучше всего было бы постараться реализовать гибридную модель.
С той инфраструктурой, что имеет наш сайт, раздел словарей реализуется в следующем виде. Пользователь заходит на карту, выбирает языки, открывает словарь. Начинается загрузка словарных данных в кэш браузера. Далее эти загруженные словари доступны на компьютере или телефоне и без интернета.
Плюсы такого подхода:
— После начальной загрузки, автономный доступ к словарями.
— Возможность заносить новые слова, которые будут доступны другим пользователям.
— Полная открытость всех языковых данных, которые всё так же буду храниться в репозитории.
Минусы:
— В худшем случае, если не получится далее улучшить кэширование, придётся ждать секунд 20 при каждой смене языков. Тесты показали, что 4 языка, по 12 тыс. (пустых) словарных единиц в каждом, загружаются и заносятся в локальное хранилище за 11 секунд.
— На данный момент на сайте нет встроенного механизма оповещения об обновлении языковых данных. Так что пользователь не имеет возможности прямо на сайте узнать, если в исходный словарь была загружена новая порция данных, и ему нужно перезагрузить локальную копию.
Что касается словарных единиц, то мне сейчас представляется следующая структура данных по каждому слову \ словосочетанию (на примере "кошки", где * - поисковое поле).
— *значения: cat.
— *словоформы (падежи, рода, числа):
бизи, \bizi\, cat
бизилли, \bizi-lli\, cat-ERG
бизий, \bizi-j\, cat-DAT ...
— примеры употребления:
бизилли гваца буцив, \bizi-lli gʷɑt͡sɑ b-ut͡s-iβ\, cat-ERG mouse N-catch-PST, cat caught a mouse ...
— заметки (могут быть для разъяснения смысла, этимологии, чего-то другого);
— *тематические тэги (цвет, анатомия, природа, и т.д.): animal, domestic ...
— *грамматические тэги (часть речи, класс существительного, вид глагола, и т.д.): noun, neuter ...
Вроде это самые нужные куски информации. Если у кого-то есть мысли, буду рад выслушать (желательно до конца недели, потому что сроки). Если в этом "забеге" не удастся, так на будущее.
— *значения: cat.
— *словоформы (падежи, рода, числа):
бизи, \bizi\, cat
бизилли, \bizi-lli\, cat-ERG
бизий, \bizi-j\, cat-DAT ...
— примеры употребления:
бизилли гваца буцив, \bizi-lli gʷɑt͡sɑ b-ut͡s-iβ\, cat-ERG mouse N-catch-PST, cat caught a mouse ...
— заметки (могут быть для разъяснения смысла, этимологии, чего-то другого);
— *тематические тэги (цвет, анатомия, природа, и т.д.): animal, domestic ...
— *грамматические тэги (часть речи, класс существительного, вид глагола, и т.д.): noun, neuter ...
Вроде это самые нужные куски информации. Если у кого-то есть мысли, буду рад выслушать (желательно до конца недели, потому что сроки). Если в этом "забеге" не удастся, так на будущее.
Кому интересно, могут уже сейчас поиграть на сайте с разделом словарей, чтобы понять, что получается. Это первый наивный прототип, который я показывал на конференции. Там около 200 слов по Кайтагскому, Кюринскому, Керенскому, Иронскому. Выбирайте хоть все 4 языка разом, и тыкайте в кнопки. Формат взаимодействия со словарём, в целом, по окончанию забега не изменится. Работа в этом забеге (до середины мая) ведётся над технической частью — поддержка больших объёмов данных, улучшенный поиск, и т.д.
Raxys Studios
Что касается словарных единиц, то мне сейчас представляется следующая структура данных по каждому слову \ словосочетанию (на примере "кошки", где * - поисковое поле). — *значения: cat. — *словоформы (падежи, рода, числа): бизи, \bizi\, cat бизилли…
Строение словарной единицы.
У слова есть применения. Каждое использование состоит из значения и смысловых меток (1) (они определяют понятие), из заметок (2) (например, пояснение к значению и образцу), и из образцов (3) (примеры предложений или словосочетаний).
У слова так же есть грамматические метки (4), заметки (5) (например, этимология, родственные слова), и грамматические формы (6) (склонения, спряжения, множественное чисто, и т.п.).
У слова есть применения. Каждое использование состоит из значения и смысловых меток (1) (они определяют понятие), из заметок (2) (например, пояснение к значению и образцу), и из образцов (3) (примеры предложений или словосочетаний).
У слова так же есть грамматические метки (4), заметки (5) (например, этимология, родственные слова), и грамматические формы (6) (склонения, спряжения, множественное чисто, и т.п.).
Слова группируются по смыслам. Если слово имеет несколько подходящих смыслов, то оно отображается под каждым из них. Если раскрыть слово на одном из его смыслов, то все дубликаты погаснут.
Так, при поиске иронской формы "ных", "ныхас" отобразилось под смыслами "речь", "слово", "собрание". При раскрытии "ныхас" в строке со смыслом "слово", остальные кнопки с этим словом погасли (но и на них тоже можно нажать), показывая, что все они - одно слово.
Так, при поиске иронской формы "ных", "ныхас" отобразилось под смыслами "речь", "слово", "собрание". При раскрытии "ныхас" в строке со смыслом "слово", остальные кнопки с этим словом погасли (но и на них тоже можно нажать), показывая, что все они - одно слово.
Логика запросов также претерпевает улучшения.
— поиск по тегу: "#color" покажет "белый", "чёрный", "зелёный", ...
— поиск по началу формы или смысла: "+sleep" покажет "sleep", "sleepless", ...
— поиск по окончанию формы или смысла: "-one" покажет "one", "alone", "bone", ...
— поиск по точному совпадению формы или смысла: "!car" покажет только "car", а не "care" или "scar".
— поиск по вхождению в форму или смысл: "believ" покажет "believe", "believer", "unbelievable", ...
А ещё, можно будет объединять запросы, разграничивая их точкой. Например, "#color" будет означать "покажи все цвета", "уркка #social" — "покажи смыслы слова уркка, которые относятся к социальным явлениям", а "!one. !two. !three" — "или один, или два, или три", т.е. покажет все три слова.
— поиск по тегу: "#color" покажет "белый", "чёрный", "зелёный", ...
— поиск по началу формы или смысла: "+sleep" покажет "sleep", "sleepless", ...
— поиск по окончанию формы или смысла: "-one" покажет "one", "alone", "bone", ...
— поиск по точному совпадению формы или смысла: "!car" покажет только "car", а не "care" или "scar".
— поиск по вхождению в форму или смысл: "believ" покажет "believe", "believer", "unbelievable", ...
А ещё, можно будет объединять запросы, разграничивая их точкой. Например, "#color" будет означать "покажи все цвета", "уркка #social" — "покажи смыслы слова уркка, которые относятся к социальным явлениям", а "!one. !two. !three" — "или один, или два, или три", т.е. покажет все три слова.
В словаре для каждого слова по умолчанию будет показана лишь основная информация — переводы, примеры, заметки, формы. Но можно будет включать расширенный режим, при котором будет также отображаться грамматическая разбивка форм и примеров, семантические и грамматические теги.
Разработка первой рабочей версии словаря постепенно подходит к концу. Ещё нужно доделать редактор и оптимизировать внутренние алгоритмы, но по пользовательскому функционалу — всё на месте.
Вкратце об интерфейсе:
— В самом верху строка ввода (1), где набирается поисковый запрос (о синтаксисе запросов было рассказано ранее). Там же левее есть кнопки переключения расширенного режима и избранных списков.
— Сразу под ними есть ряд кнопок, первая из которых это "meanings / list" (2). Если выбрана эта категория запроса, система будет искать среди смыслов по всем языкам.
— Продолжая всё тот же ряд, правее располагаются кнопки выбора языков (3). При выборе какого-либо языка, система будет искать сначала формы в этом языке, а затем смыслы всех найденных форм — в других языках.
Пока доступны лишь по 100 слов по каждому из 5 языков, но этого должно хватить, чтобы оценить взаимодействие с системой. По академическим причинам работа ведётся в отдельном репозитории, и в середине мая модуль будет перенесён на основной сайт. Желающие могут опробовать приложение по временной ссылке, а я буду рад любым замечаниям.
Вкратце об интерфейсе:
— В самом верху строка ввода (1), где набирается поисковый запрос (о синтаксисе запросов было рассказано ранее). Там же левее есть кнопки переключения расширенного режима и избранных списков.
— Сразу под ними есть ряд кнопок, первая из которых это "meanings / list" (2). Если выбрана эта категория запроса, система будет искать среди смыслов по всем языкам.
— Продолжая всё тот же ряд, правее располагаются кнопки выбора языков (3). При выборе какого-либо языка, система будет искать сначала формы в этом языке, а затем смыслы всех найденных форм — в других языках.
Пока доступны лишь по 100 слов по каждому из 5 языков, но этого должно хватить, чтобы оценить взаимодействие с системой. По академическим причинам работа ведётся в отдельном репозитории, и в середине мая модуль будет перенесён на основной сайт. Желающие могут опробовать приложение по временной ссылке, а я буду рад любым замечаниям.
С сегодняшнего дня приложение использует мою собственную систему кэширования. При обнаружении обновления, она предлагает пользователю перезагрузить страницу. И тогда загружаются лишь устаревшие файлы.
В редакторах теперь можно выбирать редактируемый язык. Там же можно увидеть, изменена ли локальная версия. Если изменена, то можно сбросить изменения, или послать их в удалённое хранилище *. После отправки изменений в хранилище, я должен буду принять их, и затем они станут доступны для всех.
* Загрузка будет готова через неделю.
В редакторах теперь можно выбирать редактируемый язык. Там же можно увидеть, изменена ли локальная версия. Если изменена, то можно сбросить изменения, или послать их в удалённое хранилище *. После отправки изменений в хранилище, я должен буду принять их, и затем они станут доступны для всех.
* Загрузка будет готова через неделю.
This media is not supported in your browser
VIEW IN TELEGRAM
Наконец, модуль словаря вместе с инструментом редактирования готов. В предыдущих постах уже было достаточно рассказано о его работе, поэтому вот вам просто демонстрация того, как сейчас на сайте можно искать слова напрямую между адыгейским и кабардинским. Слов пока совсем немного, но система работает, и я очень рад.
Планы на лето
Инструменты на месте, системы работают, поэтому этим летом нужно сосредоточиться на добавлении контента. Во-первых, продолжить заполнение разговорника, которое было прервано форсированной разработкой словаря. Во-вторых, начать серьёзно заполнять этот самый словарь. В-третьих, в Дагестане много языков, для которых этот проект может оказаться полезным, и я постараюсь показать его неравнодушным людям из этих народов, а там они сами решат.
Я планировал обновление интерфейса, но выбранная библиотека лишь к сентябрю будет поддерживать последнюю версию фреймворка, на которую я переводил сайт в конце зимы. Поэтому этот момент откладывается.
Планы на осень
Глобально, я воспринимаю текущее состояние проекта как временное затишье перед следующим масштабным рывком. Этот рывок будет иметь 3 направления.
1. Если на первых порах моя кустарная система хранения данных и позволяла мне быстро экспериментировать (что тоже спорно) и избегать непредвиденных затрат (интересный факт: за полтора года на проект было потрачено 900 рублей — на аренду адреса сайта), то чем дальше я двигался, тем больше ощущал, что изобретаю велосипед. Теперь отсутствие серверов и хранение контента в монолитных текстовых файлах сильно ограничивает весь проект. Например, нельзя быстро зайти и посмотреть что-либо по языку, не загрузив полностью все данные о нем. Как и нет возможности расширяться в иные форматы, например написать бота в Телеграм. Чтобы исправить это, мне нужно перенести всю инфраструктуру в облако.
2. Несмотря на то, что avzag.app адаптирован под телефоны и работает offline, веб-cайт никогда не будет так же удобен, как настоящее мобильное приложение. Сейчас потенциальный пользователь не может зайти в GooglePlay/AppStore, ввести в поиск "кайтагский/кабардинский/иронский разговорник/словарь/алфавит", и скачать проект. Отсутствие русской/турецкой/арабской (по местам основного расположения кавказцев) локализации интерфейса — тоже сильный ограничивающий фактор (хотя я пока и не знаю, как это можно оптимально решить). Чтобы исправить это, мне нужно разработать мобильные приложения.
3. Добавление языкового контента в проект — весьма недружелюбный процесс. И дело не столько в интерфейсах, сколько в отсутствии правильного подхода к crowdsourcing. Нужно разбивать задачи на атомарные действия. Вместо "добавь слово в словарь, со всеми падежами, переводами, и примерами", нужно просить сделать одно из "добавь новое слово / добавь перевод / добавь падежное склонение / добавь пример употребления / добавь этимологию / проверь корректность информации по слову". Каждое такое действие будет занимать буквально минуту, и суммарно они дадут результат. Но опять же возвращаемся к тому, что система без бэкэнда и неудобство сайта на телефоне делают этот процесс довольно затруднительным. Если мы хотим вытянуть наши языки на конкурентный уровень, мы должны использовать интеллектуальный ресурс каждого, кому они небезразличны. И для этого нужно сделать так, чтобы людям было удобно вносить свой вклад. Чтобы исправить это, мне нужно серьезно изучить и внедрить механизмы crowdsourcing.
Думаю, каждая из этих задач потребует пары месяцев плотной работы. Летом, параллельно с ранее упомянутым добавлением языковых материалов, будет подготовительная часть: изучение облачных и мобильных технологий (кто в теме, планирую связку Flutter & Firebase), проработка архитектуры, взвешивание различных вариантов, и т.д. А осенью начнётся активная фаза разработки (кстати, уже 5я по счету, как же время летит), и до конца года всё будет готово, иншаЛлагь. Я не раз говорил, что воспринимаю проект как эксперимент. Пора выводить его на серьёзный уровень.
Инструменты на месте, системы работают, поэтому этим летом нужно сосредоточиться на добавлении контента. Во-первых, продолжить заполнение разговорника, которое было прервано форсированной разработкой словаря. Во-вторых, начать серьёзно заполнять этот самый словарь. В-третьих, в Дагестане много языков, для которых этот проект может оказаться полезным, и я постараюсь показать его неравнодушным людям из этих народов, а там они сами решат.
Я планировал обновление интерфейса, но выбранная библиотека лишь к сентябрю будет поддерживать последнюю версию фреймворка, на которую я переводил сайт в конце зимы. Поэтому этот момент откладывается.
Планы на осень
Глобально, я воспринимаю текущее состояние проекта как временное затишье перед следующим масштабным рывком. Этот рывок будет иметь 3 направления.
1. Если на первых порах моя кустарная система хранения данных и позволяла мне быстро экспериментировать (что тоже спорно) и избегать непредвиденных затрат (интересный факт: за полтора года на проект было потрачено 900 рублей — на аренду адреса сайта), то чем дальше я двигался, тем больше ощущал, что изобретаю велосипед. Теперь отсутствие серверов и хранение контента в монолитных текстовых файлах сильно ограничивает весь проект. Например, нельзя быстро зайти и посмотреть что-либо по языку, не загрузив полностью все данные о нем. Как и нет возможности расширяться в иные форматы, например написать бота в Телеграм. Чтобы исправить это, мне нужно перенести всю инфраструктуру в облако.
2. Несмотря на то, что avzag.app адаптирован под телефоны и работает offline, веб-cайт никогда не будет так же удобен, как настоящее мобильное приложение. Сейчас потенциальный пользователь не может зайти в GooglePlay/AppStore, ввести в поиск "кайтагский/кабардинский/иронский разговорник/словарь/алфавит", и скачать проект. Отсутствие русской/турецкой/арабской (по местам основного расположения кавказцев) локализации интерфейса — тоже сильный ограничивающий фактор (хотя я пока и не знаю, как это можно оптимально решить). Чтобы исправить это, мне нужно разработать мобильные приложения.
3. Добавление языкового контента в проект — весьма недружелюбный процесс. И дело не столько в интерфейсах, сколько в отсутствии правильного подхода к crowdsourcing. Нужно разбивать задачи на атомарные действия. Вместо "добавь слово в словарь, со всеми падежами, переводами, и примерами", нужно просить сделать одно из "добавь новое слово / добавь перевод / добавь падежное склонение / добавь пример употребления / добавь этимологию / проверь корректность информации по слову". Каждое такое действие будет занимать буквально минуту, и суммарно они дадут результат. Но опять же возвращаемся к тому, что система без бэкэнда и неудобство сайта на телефоне делают этот процесс довольно затруднительным. Если мы хотим вытянуть наши языки на конкурентный уровень, мы должны использовать интеллектуальный ресурс каждого, кому они небезразличны. И для этого нужно сделать так, чтобы людям было удобно вносить свой вклад. Чтобы исправить это, мне нужно серьезно изучить и внедрить механизмы crowdsourcing.
Думаю, каждая из этих задач потребует пары месяцев плотной работы. Летом, параллельно с ранее упомянутым добавлением языковых материалов, будет подготовительная часть: изучение облачных и мобильных технологий (кто в теме, планирую связку Flutter & Firebase), проработка архитектуры, взвешивание различных вариантов, и т.д. А осенью начнётся активная фаза разработки (кстати, уже 5я по счету, как же время летит), и до конца года всё будет готово, иншаЛлагь. Я не раз говорил, что воспринимаю проект как эксперимент. Пора выводить его на серьёзный уровень.
Media is too big
VIEW IN TELEGRAM
Очень хотел это увидеть, поэтому сам занёс скромные 50 Дигорских слов. На видео — параллельный Ироно-Дигорский словарь.
Ещё хочу сказать пару слов об английском. Конечно, на Северном Кавказе русский понятен бóльшему количеству людей чем английский. С другой стороны, английский язык является международным, и имея английский — глобальный охват будет шире по сравнению с русским. Вручную дублировать каждое слово\перевод на русский и английский было бы слишком большой работой. К тому же, если один язык будет переведён на русский, а другой — на английский, то параллельный перевод между ними будет невозможен в рамках текущей реализации. Учитывая, что ресурсов хватает лишь на 1 язык, я осознанно решил оставить лишь английский. Тем более что у осетин и черкесов есть существенные диаспоры в разных странах, для которых, очевидно, английский будет более удобен, а у дагестанцев в целом особых проблем с английским нет.
Ещё хочу сказать пару слов об английском. Конечно, на Северном Кавказе русский понятен бóльшему количеству людей чем английский. С другой стороны, английский язык является международным, и имея английский — глобальный охват будет шире по сравнению с русским. Вручную дублировать каждое слово\перевод на русский и английский было бы слишком большой работой. К тому же, если один язык будет переведён на русский, а другой — на английский, то параллельный перевод между ними будет невозможен в рамках текущей реализации. Учитывая, что ресурсов хватает лишь на 1 язык, я осознанно решил оставить лишь английский. Тем более что у осетин и черкесов есть существенные диаспоры в разных странах, для которых, очевидно, английский будет более удобен, а у дагестанцев в целом особых проблем с английским нет.