ИИ без 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)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.