Shanraq.org Shanraq.org
IT

ИИ без LLM: казахская модель с нуля Урок 11 из 20

Урок 11. Различаем «к нашим домам» и «в наших домах»

Представьте два билета: один ведёт к музею, другой разрешает находиться в музее. Надпись «музей» на них общая, но назначение разное. Казахское слово тоже может сохранять основу и принадлежность, меняя последнюю часть: үйлерімізге — «к нашим домам», үйлерімізде — «в наших домах».

Текст переведён с помощью ИИ.

Зачем это нужно

Представьте два билета: один ведёт к музею, другой разрешает находиться в музее. Надпись «музей» на них общая, но назначение разное. Казахское слово тоже может сохранять основу и принадлежность, меняя последнюю часть: үйлерімізге — «к нашим домам», үйлерімізде — «в наших домах».

Сначала видим целое

В уроке 10 мы разбирали үй-лер-іміз-ге: дом + несколько + наши + направление. Часть -ге здесь показывает направление и относится к барыс септік — форме «к чему?». Часть -де показывает место и относится к жатыс септік — форме «где?». Термин септік, или падеж, означает роль слова в связи с другими словами предложения: здесь направление либо место. Окончание ставится после части принадлежности. Для второй знакомой основы получаем мектеп-тер-іміз-ге и мектеп-тер-іміз-де. Эти четыре формы сверены с порядком и вариантами окончаний в описании казахской грамматики.

Работающий шаг

Перед кодом расшифруем новые знаки. endswith проверяет конец слова, removesuffix снимает уже проверенный конец, elif означает «иначе, если»; переменная case хранит название падежа. Вертикальная черта | в выводе отделяет учебные части слова; в обычной записи её нет.

Создайте case.py в UTF-8 в папке ai-course и запустите python3 case.py на macOS/Linux или py case.py на Windows.

known = {"үйлеріміз": "үй | лер | іміз",
         "мектептеріміз": "мектеп | тер | іміз"}
word = input("Сөз: ").lower()
if word.endswith("ге"):
    base = word.removesuffix("ге")
    case = "барыс"
elif word.endswith("де"):
    base = word.removesuffix("де")
    case = "жатыс"
else:
    base = ""
    case = ""
if base in known:
    print(known[base], "|", case)
else:
    print("білмеймін")

Готовый файл шага содержит этот же код. Сначала пройдите объяснение ниже.

endswith("ге") спрашивает, заканчивается ли строка именно этими буквами; результат — «да» или «нет». removesuffix("ге") возвращает новую строку без проверенного конца. Сначала проверяем конец, затем снимаем его: так пустой или чужой конец не выдаётся за известный. elif означает «иначе, если»; он проверяется, только когда первое условие не подошло. else собирает остальные случаи. Пустая строка "" означает, что подходящая часть не найдена. Имена base и case — переменные; case не специальная команда Python. В print запятые ставят пробелы между частями вывода, а символ | — видимая граница учебного разбора, не часть казахского слова.

Мы подтверждаем только две основы со значением «наши …» и две последние части. Программа не проверяет все формы языка и не принимает үйімізге, мектептерімізге? с вопросительным знаком или другие окончания. Отказ означает границу таблицы, а не утверждение, что слово неверно.

Опорная карта

Введённое слово → проверить конец ге/де → снять его → проверить оставшееся по словарю → назвать направление/место либо сказать білмеймін.

Вспомните и проверьте

Закройте код. По карте объясните, почему нельзя сразу принимать любое слово с концом ге. Затем запустите программу с үйлерімізге, мектептерімізде, үйімізге, үйлерімізді по отдельности.

Задание: до запуска предскажите вывод для МЕКТЕПТЕРІМІЗГЕ и үйлерімізде. Подсказка: lower() уменьшит буквы; после снятия конца должна остаться запись из known. Эталон: мектеп | тер | іміз | барыс и үй | лер | іміз | жатыс. Для үйімізге и үйлерімізді получится білмеймін. Частая ошибка: снять две последние буквы до проверки: это похоже на отрезание края билета без чтения его назначения.

Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом

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

Пока нет комментариев. Будьте первым.