Корпусная база проекта «Клавиатура РФ» — системных раскладок для всех кириллических языков
Цели проекта
- Расширить русскую системную раскладку, чтобы через long-press покрыть все кириллические языки Российской Федерации.
- Подготовить индивидуальные системные клавиатуры для каждого языка РФ.
- Для академичечких целей для любого исследователя.
- Подготовка проекта для поддержки всех Кириллических языков Мира.
| Компонент | Файл/папка | Назначение |
|---|---|---|
| Монокорпус | raw/lang_mono_<N>.txt |
Сплошной текст на языке-цели; N — число символов. Основной источник статистики по символам (один токен = один Unicode‑символ). |
| Частотности | frequencies/lang_monocorpus_freq.csv |
Таблица «символ → вхождений» — влияет на сортировку вариантов long‑press |
| Раскладки | keyboard/lang_key_*.json |
Базовая, 4‑рядная, комплексная и т. д. — готовые файлы iOS |
| Long‑press‑маппинг | mapping/lang_key_mapping.json |
Указывает, под какой базовой русской буквой показывать дополнительные буквы/символы языка |
| Статистика носителей | stats/lang_population.csv |
Взвешиваем «частота × охват» и аргументируем приоритеты перед Apple. Охват = носители |
| Манифест | metadata.json |
Машинно‑читаемые метаданные (версия, лицензия, контакты) |
| README | README.md |
Человеческое описание: источники корпуса, очистка, особенности |
lang— код ISO 639‑3 (пример:tyv,kbd).
В случае долгого нажатия буквы в стандартной русской клавиатуре (например, как сейчас Е -> [Ё]), ваши буквы должны иметь ближайщую похожую букву, через которую покажется в случае создания расширенной Клавиатуры РФ.
Соответствие ваших букв к букве Русского языка в файле lang_key_mapping.json:
или же создать более простой вариант в текстовом формате lang_key_mapping.txt:
О | Ӧ, Ө, О̄
У | Ӱ, Ү
Н | Ң
Е | Ё, ЁКлюч — базовая русская клавиша; значения — варианты в порядке убывания частоты (но пока это не столь важно).
-
Соберите корпус →
raw/, один символ = один токен. -
Вычислите частоты – локально:
python tools/freq/char_freq.py raw/tyv_mono_5M.txt \ > frequencies/tyv_monocorpus_freq.csv– или через Google Colab‑ноутбук.
-
Создайте
lang_key_mapping.txtилиlang_key_mapping.jsonвручную в удобном редакторе. -
Подготовьте раскладки (
keyboard/lang_key_default.jsonи, при необходимости, дополнительные). -
Добавьте статистику носителей, заполните
metadata.jsonиREADME.md. -
Откройте pull‑request.
| Вопрос | Ответ |
|---|---|
| Можно ли несколько вендоров для одного языка? | Да. Используйте разные папки <vendor>; скрипты автоматически объединят частоты. |
| Как обрабатывать emoji, латиницу и другие чужие символы? | При расчёте частот скрипт по умолчанию игнорирует всё, что не входит в кириллический блок Unicode. Буквы целевого языка сохраняются, шум отбрасывается. |
Нужно ли включать пробелы и пунктуацию в lang_monocorpus_freq.csv? |
Нет. Оставляйте только буквенные символы и специфические знаки языка; пробелы и знаки препинания опускайте. |
| Как именовать файлы при обновлении корпуса? | Добавляйте суффикс версии (_v2, дата) и обновляйте поле version в metadata.json. |
| Обязательна ли 4‑рядная раскладка? | Нет. Добавляйте её, если она будет полезна; базовая портретная раскладка (3 ряда символов) обязательна. |
| Какую лицензию выбрать для корпуса? | Рекомендуем CC BY‑SA 4.0 или совместимую открытую лицензию, чтобы Apple могла свободно использовать данные. |
Корпус → Частоты → Эргономика — точные данные дают объективное основание для расположения букв. Чем точнее корпуса и статистика, тем убедительнее аргумент для Apple внедрить полноценную поддержку всех кириллических языков Российской Федерации.
| Язык | Частотность | Маппинг | Носители | by Ali Kuzhuget |
|---|---|---|---|---|
| Абазинский | ✅ | ✅ | ✅ | ○ |
| Абхазский | ✅ | ✅ | ✅ | ○ |
| Аварский | ✅ | ✅ | ✅ | ○ |
| Агульский | ✅ | ✅ | ✅ | ● |
| Адыгейский | ✅ | ✅ | ✅ | ○ |
| Алтайский | ✅ | ✅ | ✅ | ● |
| Андийский | ✅ | ✅ | ✅ | ● |
| Ахвахский | ❌ | ✅ | ✅ | ○ |
| Башкирский | ✅ | ✅ | ✅ | ○ |
| Белорусский | ✅ | ✅ | ✅ | ● |
| Бурятский | ✅ | ✅ | ✅ | ○ |
| Даргинский | ✅ | ✅ | ✅ | ○ |
| Долганский | ✅ | ✅ | ✅ | ○ |
| Церковнославянский | ✅ | ✅ | ✅ | ● |
| Ингушский | ✅ | ✅ | ✅ | ● |
| Кабардино-черкесский | ✅ | ✅ | ✅ | ○ |
| Казахский | ✅ | ✅ | ✅ | ● |
| Кайтагский | ✅ | ✅ | ✅ | ○ |
| Калмыцкий | ✅ | ✅ | ✅ | ● |
| Каратинский | ✅ | ✅ | ✅ | ○ |
| Карачаево-балкарский | ✅ | ✅ | ✅ | ○ |
| Коми | ✅ | ✅ | ✅ | ○ |
| Крымскотатарский | ✅ | ✅ | ✅ | ● |
| Кумыкский | ✅ | ✅ | ✅ | ● |
| Кыргыз | ✅ | ✅ | ✅ | ● |
| Лакский | ✅ | ✅ | ✅ | ● |
| Лезгинский | ✅ | ✅ | ✅ | ○ |
| Марийский | ✅ | ✅ | ✅ | ● |
| Мокшанский | ✅ | ✅ | ✅ | ● |
| Молдавский | ✅ | ✅ | ✅ | ● |
| Ненецкий | ✅ | ✅ | ✅ | ● |
| Ногайский | ✅ | ✅ | ✅ | ○ |
| Осетинский | ✅ | ✅ | ✅ | ○ |
| Рутульский | ✅ | ✅ | ✅ | ● |
| Саха | ✅ | ✅ | ✅ | ○ |
| Сибирско-татарский | ✅ | ✅ | ✅ | ○ |
| Табасаранский | ✅ | ✅ | ✅ | ● |
| Таджикский | ✅ | ✅ | ✅ | ○ |
| Татарский | ✅ | ✅ | ✅ | ○ |
| Тиндинский | ✅ | ✅ | ✅ | ● |
| Тувинский | ✅ | ✅ | ✅ | ● |
| Удмуртский | ✅ | ✅ | ✅ | ○ |
| Узбекский | ✅ | ✅ | ✅ | ● |
| Украинский | ✅ | ✅ | ✅ | ● |
| Хакасский | ✅ | ✅ | ✅ | ● |
| Цудахарский | ✅ | ✅ | ✅ | ● |
| Цыганский | ✅ | ✅ | ✅ | ● |
| Чеченский | ✅ | ✅ | ✅ | ● |
| Чувашский | ✅ | ✅ | ✅ | ○ |
| Эрзянский | ✅ | ✅ | ✅ | ● |
{ "О": ["Ӧ", "Ө", "О̄"], "У": ["Ӱ", "Ү"], "Н": ["Ң"], "Е": ["Ё", "Ё"] }