Shanraq.org Shanraq.org
IT

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 → сравнение корня и признаков → назвать границы обоих опытов.

Опорная схема урока 26

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

Закройте код и восстановите, какой вывод гарантирован без Rust: Оқу үлгісі: мектептерімізде → мектеп ['тер', 'іміз', 'де'] и сообщение о пропущенном сравнении. Подсказка: ветка len(sys.argv) == 1. Запустите затем с заведомо неверным путём: появится бағдарлама файлы табылмады. Частая ошибка: принимать совпадение корня за подтверждение расписания. Разбор слова и проверка факта — разные этапы.

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

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

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