Здесь собраны множество правил и алгоритмов генерации слов кыргызского языка и реализованы на языке Python 3. С помощью данного проекта было сгенерировано около 1 000 000 словоформ из 12 000 корневых слов. Эти слова используются для проверки правописания кыргызского языка на сайте http://orfo.kg.
В будущем планируется создать FST(Finite-State Transducer) используя эти правила и сгенерированные слова. С помощью FST можно будет генерировать, проверять правописание и определять его свойства.
Мүчө(mucho) - суффикс
Все суффиксы кыргызского языка добавляются в конец слова и меняются в зависимости от последнего слога слова. Например суффикс -лар, который используется для построения множественного числа, может иметь следующие формы:
-
-дар, -дор, -дөр, -дер
-
-лар, -лор, -лөр, -лер
-
-тар, -тор, -төр, -тер
-
китеп + тер (книги)
-
алма + лар (яблоки)
Зависимость формы суффиксов от слова приблизительно одинаковая у всех суффиксов:
- От типа согласной буквы в конце слова
- От типа гласной буквы в последнем слоге
Перед началом склонения слова, определяются его свойства. В частности: тип согласной буквы в конце слова и тип гласной буквы в последнем слоге.
После изучения множества суффиксов, в каждом измерении я выделил по 4 возможных значения и получил такую матрицу с примерами подходящих слов:
согл\гл | аы | оу | еи | өү |
---|---|---|---|---|
- | тараза, казы | бозо, козу | теке, тиги | бөлө, бөрү |
лмн | тан, кыл | жол, сум | жем, ким | көл, түн |
рй | ыр, ай | тор, уй | кий, тер | көйгөй, бүчүр |
пктш.. | таш, кыш | тоок, куш | бет, кит | төш, сүт |
Используя матрицу с примерами слов можно составить матрицу форм для каждого суффикса. Например для суффикса -лар будет следующая матрица:
согл\гл | аы | оу | еи | өү |
---|---|---|---|---|
- | -лар | -лор | -лер | -лөр |
лмн | -дар | -дор | -дер | -дөр |
рй | -лар | -лор | -лер | -лөр |
пктш.. | -тар | -тор | -тер | -төр |
Теперь, после определения свойства любого слова, можно выбрать для него соответсвующую форму суффикса из таблицы.
Например: китеп - согласная буква в конце: п (твердая, 4 строка), гласная буква в последнем слоге: e (3 столбец). По адресу 4 строка, 3 столбец находится форма -тер. Получится китеп+тер.
Таким образом, для всех суффиксов предоставлены их таблицы форм.
Примеры использования внутренних классов можно посмотреть в тестах.
Добавлена SQLite БД с 12665 словами, у которых указана часть речи. Используя эти данные можно сгенерировать правильные словоформы.
Для запуска подойдет любая версия Python выше 3.1. Чтобы проверить версию вашего Python, запустите следующую команду:
python --version
Также необходимо установить необходимые Python пакеты командой:
pip install -r requirements.txt
Команда для генерации всех возможных словоформ слова:
python generator.py [слово]
Например, команда:
python generator.py адам
выведет такой список:
адам
адамдардын
адамдарга
адамдарды
адамдарда
адамдардан
адамдын
адамга
адамды
... еще 110 форм
Если не указывать параметры, сгенерируется список всех возможных форм всех слов из БД:
python generator.py