AI без LLM: создаем свою модель ИИ Урок 26 из 30
Урок 26. Сравниваем учебный разбор с Adam FST
Два мастера могут разобрать один велосипед: новичок отмечает три знакомые детали, мастерская фиксирует ещё состояние каждого узла. Сравнивать полезно только совпадающие части работы. Наш урок 11 узнаёт две заранее заданные формы; adam_fst — отдельный инструмент на Rust, который разбирает казахское слово на корень и грамматические признаки. Он не является источником расписания кружка.
Зачем это нужно
Два мастера могут разобрать один велосипед: новичок отмечает три знакомые детали, мастерская фиксирует ещё состояние каждого узла. Сравнивать полезно только совпадающие части работы. Наш урок 11 узнаёт две заранее заданные формы; adam_fst — отдельный инструмент на Rust, который разбирает казахское слово на корень и грамматические признаки. Он не является источником расписания кружка.
Перед кодом
Программа всегда показывает учебный разбор мектептерімізде → мектеп + тер + іміз + де. Второй опыт необязателен. sys.argv — список слов команды: первый элемент обозначает программу, следующий может быть путём к исполняемому файлу adam_fst. Path(...).resolve() превращает его в полный путь, а is_file() проверяет существование файла. subprocess.run запускает внешнюю программу; список аргументов передаётся без оболочки. cwd временно выбирает корень Adam, потому что инструмент читает словарь из его каталога data. capture_output=True сохраняет вывод, text=True делает его текстом, check=False оставляет проверку ошибки нам. timeout=10 ограничивает ожидание, а returncode сообщает об успехе. Если Rust-проект не установлен, первый опыт полностью работает сам.
Исходный проект Adam. Морфологическая CLI находится в модуле adam-kernel-fst.
Из корня проекта перейдите в папку шага и запустите программу:
cd course/kazakh-ai/step-26
python3 compare.py
В Windows замените python3 на py.
import subprocess
import sys
from pathlib import Path
word = "мектептерімізде"
ours = {"root": "мектеп", "parts": ["тер", "іміз", "де"]}
print("Оқу үлгісі:", word, "→", ours["root"], ours["parts"])
if len(sys.argv) == 1:
print("adam_fst: қосымша салыстыру іске қосылмады")
else:
binary = Path(sys.argv[1]).expanduser().resolve()
if not binary.is_file():
print("adam_fst: бағдарлама файлы табылмады")
else:
run = subprocess.run([str(binary), "analyse", word], cwd=binary.parents[2],
text=True, capture_output=True, timeout=10, check=False)
if run.returncode != 0:
print("adam_fst: іске қосу қатесі")
else:
print("adam_fst:", run.stdout.strip())
Что делает программа
Без второго аргумента программа сообщает, что дополнительное сравнение пропущено. Для опыта клонируйте публичный репозиторий Adam, выполните в нём cargo build --release -p adam-kernel-fst --bin adam_fst, а затем передайте нашей программе путь к оставшемуся внутри репозитория файлу target/release/adam_fst (в Windows — adam_fst.exe). Она запустит adam_fst analyse мектептерімізде из корня Adam и покажет ответ инструмента рядом с учебным разбором. Rust устанавливается отдельно; курс Python от него не зависит. Сравнивайте только найденный корень и признаки. Совпадение на одном слове не доказывает, что одна система «лучше», и не подтверждает расписание или источник факта.
Опорная карта
Одно слово → учебный разбор → по желанию CLI Adam FST → сравнение корня и признаков → назвать границы обоих опытов.
Вспомните и проверьте
Закройте код и восстановите, какой вывод гарантирован без Rust: Оқу үлгісі: мектептерімізде → мектеп ['тер', 'іміз', 'де'] и сообщение о пропущенном сравнении. Подсказка: ветка len(sys.argv) == 1. Запустите затем с заведомо неверным путём: появится бағдарлама файлы табылмады. Частая ошибка: принимать совпадение корня за подтверждение расписания. Разбор слова и проверка факта — разные этапы.
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.