Это небольшая статья, но, чтобы её написать, нужно было очень много проделать. Тут кратко описано про язык, про сбор нами данных и про обучение моделей. Это скорее не инструкция, как делать, а способ заявить о проделанном.

Про язык и народ

Раз в названии написано «переводчик», значит речь идёт о языке. На нём говорят карачаево‑балкарцы (официально народ искусственно разделён на «карачаевцев» и «балкарцев») — кавказцы, проживающие к северу, востоку и западу от горы Эльбрус в основном в Республиках Карачаево‑Черкессия и Кабардино‑Балкария.

Карачаевский флаг (текмет) и балкарский (с горой Эльбрус)
Карачаевский флаг (текмет) и балкарский (с горой Эльбрус)

Общая численность нашего народа составляет около 435 тысяч в мире. Говорим на карачаево‑балкарском языке — тюркском языке из половецко‑кыпчакской группы, близкими являются кумыкский и крымскотатарский. Количество говорящих примерно 310 тыс. человек, что меньше численности населения.

Наш язык имеет два диалекта с говорами, не сильно отличающимися между собой:

  1. Чокающие говоры (пример: чач — «волос»):

    1. Джокающий (джол — «дорога»). Говорят карачаевцы и балкарцы из долины реки Баксан.

    2. Жокающий (жол). Говорят балкарцы из долины реки Чегем.

    3. Смешанный хуламско‑безенгиевский (возможны одновременно жол и зол). Территория — долина реки Черек Хуламский.

  2. Цокающе‑зокающий балкарский (цац и зол). Территория — долина реки Черек Балкарский.

Проблемы языка

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

  1. Малая численность

  2. Дети не говорят на нём активно

  3. Уменьшение его преподавания в школах (особенно когда его сделал не обязательным, а дополнительным)

  4. Мультиязычная среда, где языком общения становится русский и т. д.

Все эти факторы в совокупности наносят серьёзный урон. Однако есть ещё одна очень весомая проблема — наш язык про прошлое: он используется для описания исторических названий, традиций и быта в селе… Но не про настоящие и, тем более, будущее: его практически нет в науке, технологиях, современном быту и т. д. Из этого следует, что нет необходимости в карачаево‑балкарском языке, когда все русский понимают и в нём можно реализоваться.

К счастью, среди нас появляются активисты, которые его популяризируют.

  1. Есть переводы фильмов, мультфильмов, музыка

  2. Создаются приложения, игры

  3. Делаются адаптации и переводы приложений

  4. Пишутся книги/стихи

  5. Ведутся блоги/каналы и т. д.

Так и мы: Богдан Теунаев и Али Берберов — создали первый переводчик между карачаево‑балкарским и русским языками.

Сбор и обработка данных

Тут двинемся из общего к более техническому.

На карачаево‑балкарский язык есть достаточно много оцифрованных данных, но, чтобы обучить переводчик, нужны параллельные корпуса. На данный момент собрали порядка 289 тыс. параллельных слов/фраз/предложений.

Это самый долгий этап. Собирали их около 2,5 лет и до сих пор продолжаем. Источники очень разные: религиозные тексты, художественная литература, фольклор, детские сказки, словари, советские доклады, мультфильмы.

Выравнивали примерно 95% кодом + руками (иногда за небольшое вознаграждение привлекали людей, чтобы выравнивали). В процессе обучили LaBSE, чтобы выровнять автоматически, но качество на троечку. Большую часть пришлось отфильтровать, однако это сильно ускорило и сил нам сохранило.

Так как у языка небольшая разница в диалектах, то параллельный корпус привели к базовому виду. Это позволяет обучить одну модель и затем применять для разных диалектов.

Модель

Всё начиналось с модели, которая была написана на tensorflow на языке R и около 10 тыс. пар. Затем обучали mbart-50, добавляя новые токены и язык в токенизатор.

В итоге пришли к NLLB-200, несколько раз дообучая, по мере роста корпуса. До сих пор это SOTA в мире моделей для перевода. В ней уже были различные тюркские, особенно, крымскотатарский. Это позволило модели легко выучить и карачаево‑балкарский язык. Сначала «знакомили» модель с нашим языком (одну эпоху прогнали по всему корпусу), а затем уже обучали переводить (выкинув словари, оставив только длинные предложения).

Такую модель не обучишь на ноутбуке или компьютере (хотя можно постараться, но будет долго), поэтому приходится покупать серверные мощности. Например на A100 (видеокарта) мы обучали наш корпус сутки и это ещё быстро.

В итоге у нас есть модель, переводящая между русским и карачаево‑балкарским. У неё есть ряд недостатков: имена собственные она пытается перевести и зачастую искажается смысл, сложные предложения она плохо понимает… Но всё это решается с увеличение корпуса данных. Также она может нормально переводить только по одному предложению из‑за особенности NLLB-200 (её обучали по предложению).

Есть также и интерфейс переводчика. Помимо самого переводчика, там встроен словарь и озвучка карачаево‑балкарского текста. Озвучку мы не тренировали, это open‑source модель. Сайта со своим доменом, к сожалению, на данный момент нет.

Дальнейшие планы

  1. Собрать монокорпус языка и обучить языковую модель на карачаево‑балкарском языке.

  2. Собрать параллельных корпус текста и речи, чтобы обучить модели, которые озвучивают текст и речь переводят в текст. Возможно это поможет тем, кто озвучивает фильмы, мультики, либо переводить видео.

  3. Добавить в переводчик другие языки, чтобы они переводились на карачаево‑балкарский.

  4. Перенести на нормальный домен.

Всё это занимает огромное количество времени (особенно сбор данных) и требует средств. Мы делаем на энтузиазме в наше свободное время. Всегда рады будем присоединившимся к нам, чтобы быстрее наш язык развивать в цифровом мире и делать его про настоящие и будущее.

Также наши другие проекты:

  1. Али сделал игру «Terekle», где нужно угадать слова: скачать на Андроид, в браузере.

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

Комментарии (11)


  1. newintellimouse
    16.07.2024 14:18
    +3

    Очень круто!

    Для моего любимого вепсского языка (говорящих хоть как-то осталось 2,5 тысячи) сделали переводчик с открытым API на базе LibreTranslate

    https://translate.vepslaine.ru/

    Не думали прикрутить API к своему переводчику?


    1. TSjB Автор
      16.07.2024 14:18

      Спасибо большое!
      Вообще можно, так как интерфейс сделан на gradio, внизу есть надпись "Use via API", но я пока не пытался через апи что-то делать) так что не знаю, работает или нет


      1. newintellimouse
        16.07.2024 14:18

        Сейчас не работает :) Будем ждать


  1. Eureka
    16.07.2024 14:18
    +1

    Ребята, вы красавцы! Стоим в начале похожего пути, на этапе составления словаря одного угасающего диалекта. Вам не приходила в голову безумная мысль переводить современный контент типа условного TED и воссоздавать современные термины, отсутствующие в языке?


    1. almaz1c
      16.07.2024 14:18
      +2

      воссоздавать современные термины

      А так делают? Почитал бы о примерах подобных работ. Разговаривая в быту на татарском, постоянно переключаюсь на русский (или смесь) именно потому, что многих современных терминов в татарском языке нет.


      1. newintellimouse
        16.07.2024 14:18
        +3

        Да, в вепсском языке так постоянно делают, но лингвисты :) Компьютер — tedomašin.

        Было утрачено слово «Ёжик» (с концами, есть только предположения, как могло быть по аналогии с карельским и финским) — завели слово neglik (иголковый, сделанный из игл), да так удачно, что прижилось как родное.


        1. almaz1c
          16.07.2024 14:18

          а как произошло образование слова tedomašin? mašin - это, видимо, машина, а tedo?


          1. newintellimouse
            16.07.2024 14:18
            +2

            знание, наука.

            Кому не нравится вариант от лингвистов, те используют заимствования :) kompjuter


    1. TSjB Автор
      16.07.2024 14:18

      Спасибо большое)
      Вообще идея классная, мы не задумывались
      Было бы время и больше людей... а то не хватает на всё


  1. timon_18
    16.07.2024 14:18
    +1

    А можно ли использовать карачаево-балкарскую википедию что бы спарсить слова/фразы/предложения и потом сделать к примеру ТГ бота, что бы заинтересованные переводили их на русский язык?


    1. TSjB Автор
      16.07.2024 14:18
      +1

      Можно так сделать
      на википедии 2k+ статей
      вот хостить бы бота где-нибудь, как и сайт