Үлкен тілдік үлгісіз ЖИ: өз үлгімізді жасаймыз 26-сабақ (барлығы 30)
26-сабақ. Оқу талдауын qazaq-ir жүйесімен салыстырамыз
Екі адам бір велосипедті қарайды: үйренуші таныс үш бөлшекті атайды, ал шеберхана әр тораптың күйін де жазады. Екеуін тек ортақ әрекет бойынша салыстыру керек. Біздің 11-сабақ алдын ала берілген екі тұлғаны таниды; qazaq-ir — Rust тіліндегі бөлек жоба, ол түбірді, жалғаулар тізбегін және талдау күйін JSON түрінде қайтарады. Ол үйірме кестесінің дереккөзі емес.
Мәтін ИИ көмегімен аударылды.
Бұл не үшін керек?
Екі адам бір велосипедті қарайды: үйренуші таныс үш бөлшекті атайды, ал шеберхана әр тораптың күйін де жазады. Екеуін тек ортақ әрекет бойынша салыстыру керек. Біздің 11-сабақ алдын ала берілген екі тұлғаны таниды; qazaq-ir — Rust тіліндегі бөлек жоба, ол түбірді, жалғаулар тізбегін және талдау күйін JSON түрінде қайтарады. Ол үйірме кестесінің дереккөзі емес.
Кодқа дейін
Бағдарлама әрқашан мектептерімізде → мектеп + тер + іміз + де оқу талдауын көрсетеді. Екінші тәжірибе міндетті емес. sys.argv — пәрмендегі сөздер тізімі: бірінші мән бағдарлама атауы, келесісі qazaq-ir орындалатын файлының жолы болуы мүмкін. Path(...).is_file() файл барын тексереді. subprocess.run сыртқы бағдарламаны іске қосады; пәрмен бөліктерінің тізімі қабықша арқылы өтпейді. capture_output=True оның шығысын сақтайды, text=True оны мәтінге айналдырады, check=False қатені өзіміз тексеруге мүмкіндік береді. timeout=10 күтуді шектейді, returncode іске қосу нәтижесін көрсетеді. json.loads оның JSON мәтінін оқиды, tokens — талданған сөздер тізімі. Rust жобасы орнатылмаса да, алғашқы тәжірибе толық жұмыс істейді.
Жоба түбірінен қадам қалтасына өтіп, бағдарламаны іске қосыңыз:
cd course/kazakh-ai/step-26
python3 compare.py
Windows жүйесінде python3 орнына py жазыңыз.
import json
import subprocess
import sys
from pathlib import Path
word = "мектептерімізде"
ours = {"root": "мектеп", "parts": ["тер", "іміз", "де"]}
print("Оқу үлгісі:", word, "→", ours["root"], ours["parts"])
if len(sys.argv) == 1:
print("qazaq-ir: қосымша салыстыру іске қосылмады")
else:
binary = Path(sys.argv[1])
if not binary.is_file():
print("qazaq-ir: бағдарлама файлы табылмады")
else:
run = subprocess.run([str(binary), "analyze", "--format", "compact", word],
text=True, capture_output=True, timeout=10, check=False)
if run.returncode != 0:
print("qazaq-ir: іске қосу қатесі")
else:
result = json.loads(run.stdout)
for token in result["tokens"]:
print("qazaq-ir:", token["surface"], "→", token["root"],
token["analysis_status"])
Бағдарлама қалай жұмыс істейді?
Қосымша файл жолын бермесеңіз, бағдарлама qazaq-ir: қосымша салыстыру іске қосылмады деп жазады. Қосымша тәжірибе үшін жобаны cargo build --release -p qazaq-ir-cli пәрменімен құрастырып, алынған target/release/qazaq-ir файлының жолын беріңіз (Windows-та .exe). Rust орнату — бөлек жұмыс; Python курсы оған тәуелді емес. Жергілікті qazaq-ir 0.31.0 нұсқасын тексергенде бұл тұлға үшін root: мектеп және analysis_status: partial шықты: түбір табылды, бірақ толық талдау расталмады. Басқа нұсқада нәтиже өзгеруі мүмкін. Жоба JSON-ындағы root пен analysis_status мәндерін салыстырыңыз. Бір сөзге қарап «қай ЖИ жақсы» деп тұжырым жасамаңыз. Түбірлер сәйкес келсе де, бұл сұрақ жауабы мен дереккөздің дұрыстығын дәлелдемейді.
Тірек сызба
Бір сөз → оқу талдауы → қалауыңызша qazaq-ir CLI → түбір мен күйді салыстыру → екі тәжірибенің шегін айту.
Еске түсіріп, тексеріңіз
Кодты жауып, Rust болмаса да шығатын екі жолды еске түсіріңіз: Оқу үлгісі: мектептерімізде → мектеп ['тер', 'іміз', 'де'] және қосымша салыстырудың орындалмағаны туралы хабар. Көмек: len(sys.argv) == 1 тармағын қараңыз. Содан соң қате файл жолын беріңіз: бағдарлама файлы табылмады шығады. Жиі қате: түбірдің сәйкес келуін кесте дерегінің дәлелі деп санау. Сөзді талдау мен нақты деректі тексеру — екі бөлек қадам.
Пікірлер (0)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.