Блог Һомай

Спеллчекер для башкирского языка: от идеи до реализации

Спелл-чекер для башкирского языка: от идеи до реализации

Диктант проверен! Учительница башкирского раздает тетради. Открываешь, а там красной ручкой подчеркнуты ошибки. На полях восклицательные знаки, и в конце оценка: 3+. 🤔“Эх, вот была бы ручка, которая писала бы без ошибок”, - мечтали некоторых из нас в школьные времена.
Прошло больше 30 лет. Школьные мечтатели выросли и написали программу, которая подчеркивает все ошибки в тексте на башкирском языке, но вместо оценки просто предлагает исправить их на правильное написание.
Чудо? Обошлось без волшебной палочки. Мы хотим рассказать, как устроен спелл-чекер (программа для исправления орфографии) для башкирского языка http://tiksher.eu/.

Венгерский след

Находить в текстах ошибки — интересная задача, которая объединяет множество лингвистов и программистов по всему миру. Мы работали не с нуля. И первым, на чьи плечи мы смогли опереться — венгерский биолог и разработчик свободного программного обеспечения László Németh, который разработал библиотеку Hunspell.
Это общедоступная бесплатная программа для проверки орфографии. Изначально она была предназначен для языков со сложной системой словообразования и обширной морфологией (например, венгерского, на котором говорит ее создатель).
Башкирский язык, как и венгерский, эстонский, баскский, финский, турецкий и другие языки — агглютинативный. Это значит, что словообразование происходит путем “приклеивания” окончаний к слову. Например, “бала” (ребенок) - “бала-лар” (дети) - “бала-лар-ым” (мои дети). То, что на русском обозначается тремя разными словами, в башкирском легко производится с помощью аффиксов, суффиксов, окончаний.
Как понять, что из этого часть слова, а что аффикс, правильно ли употреблено окончание? Для этого существуют библиотеки и алгоритмы: распознавание соединений, состоящих из произвольного количества слов, обработка аффиксации внутри соединений. 🤯Сложно? Да!

(Не)видимая рука помощи

Первая хорошая новость — большую часть работы наши предшественники уже успели сделать до нас! Вторая хорошая новость в том, что спелл-чекер мы делали в команде. Нам помогали:
⭐Андрей Чемышев @chemyshev программист, активист цифровизации марийского языка,
🌟 Рамиля Каримова @karramnig, лингвист, Институт истории, языка и литературы Уфимского федерального исследовательского центра РАН, которая помогала с подготовкой правил,
🔥Жангузель @Ianguzel, дизайнер, которая придумала очень лаконичный вид сайта — легко разобраться любому пользователю, ничто не отвлекает, интуитивно понятно всем, кто использовал текстовые редакторы,
🏆Ильяс Насыров @Ilyas_nasurov, студент-программист, который сделал сам сайт,
🪴наши замечательные читатели блога @sharddin и @bushidze, которые помогли придумать название (http://tiksher.eu/ — Тикшереү переводится как “проверять”).
Возможно, вы зададите вопрос: неужели марийский и башкирский языки настолько схожи, что можно использовать общие алгоритмы? И да, и нет. Наши языки агглютинативные, но входят в разные группы: башкирский — тюркский, а марийский — финно-угорский.
Общим местом является то, что мы работали с алгоритмами Hunspell. Они открыты и устроены так, чтобы упростить процесс алгоритмизации проверки орфографии на любом языке. Нас очень воодушевляет взаимопомощь программистского сообщества. Сделав что-то полезное, они делятся своими наработками, чтобы результатами интеллектуального труда воспользовались другие люди: исходники сайта открыты, есть инструкция, как запустить, можно указать свои файлы и перевести интерфейс (он очень простой).
Даже если вы используете другие библиотеки, интеграция также не составит труда, так как самая сложная часть работы — это подчеркнуть на сайте ошибку, чтобы при нажатии открылось окно с вариантами исправления.
У нас сформировалась команда энтузиастов со всего мира. Мы стремимся объединить свои усилия, чтобы использовать всю базу наработок по цифровизации языков для того, чтобы сделать автоматические переводчики, сервисы по проверке орфографии, синтезировать и распознавать родную речь.
Да, наши языки звучат по-разному, но код, который используется для этих процессов - один. Так и называется наш проект: “Языки - разные, код один”. Поэтому я, подобно моим великодушным предшественникам, делюсь результатами своего интеллектуального труда и верю, что он обязательно поможет кому-то сделать еще один шаг в сторону того, чтобы интернет и гаджеты научились говорить и понимать башкирскую речь. https://github.com/Ilyas909/Bashkort_SpellChecker.
🔥Используя этот код, уже готовый башкирский спелл-чекер можно легко интегрировать в сервисы LibreOffice. Что, скажете, коллеги, справитесь?