Үлкен тілдік үлгісіз ЖИ: қазақша мәтін үлгісі 15-сабақ (барлығы 20)
15-сабақ. Жорамалдың орнына нақтылау сұраймыз
Сатып алушы екі фильмді атап, қай көрсетілімге баратынын айтпаса, кассир билет бермей, таңдауын сұрайды. Үлгі де қай үйірме немесе қай мәлімет түрі керегін түсінбесе, тоқтауы тиіс. Мұндағы бас тарту «келесі қадамға жеткілікті тексерілген мәлімет жоқ» дегенді білдіреді; «сұрағыңыз жаман» дегенді білдірмейді.
Мәтін ИИ көмегімен аударылды.
Бұл не үшін керек?
Сатып алушы екі фильмді атап, қай көрсетілімге баратынын айтпаса, кассир билет бермей, таңдауын сұрайды. Үлгі де қай үйірме немесе қай мәлімет түрі керегін түсінбесе, тоқтауы тиіс. Мұндағы бас тарту «келесі қадамға жеткілікті тексерілген мәлімет жоқ» дегенді білдіреді; «сұрағыңыз жаман» дегенді білдірмейді.
Алдыңғы қадамдарды біріктіреміз
Кодқа дейін жаңа белгілерді түсінейік. text сұрақты кіші әріппен сақтайды, clean ? пен үтірді алып тастайды, words сөздерді сақтайды. entities табылған үйірме атауларын, intents сұрақ түрлерін сақтайтын тізім болады. len(тізім) мәндерді санайды. > 1 — «бірден артық». [0] бірінші мәнді алады, себебі Python орын санауды нөлден бастайды; бос тізімнен бұлай мән алуға болмайды. Сондықтан әуелі санап, тексереміз, содан кейін ғана мәнді аламыз.
Бұл сабақта уақыт не орын туралы жауап бермейміз: бекітілген деректер тізімін әлі жасаған жоқпыз. іздеу: шахмат уақыт деген «шахмат уақыты жөніндегі жазбаны іздеуге болады» деген белгі ғана; уақыт табылды деген сөз емес. 13-сабақтағы екі атауды және 14-сабақтағы екі сұрақ түрін қолданамыз. UTF-8 жазылымымен request.py файлын жасаңыз.
known = ["шахмат", "сурет"]
text = input("Сұрақ: ").lower()
clean = text.replace("?", "").replace(",", "")
words = clean.split()
entities = []
intents = []
for word in words:
if word in known:
entities.append(word)
if word == "қашан":
intents.append("уақыт")
if word == "қайда":
intents.append("орын")
if len(entities) == 0:
print("білмеймін: қай үйірме?")
elif len(entities) > 1:
print("нақтылаңыз: бір үйірмені атаңыз")
elif len(intents) == 0:
print("білмеймін: уақыт па, орын ба?")
elif len(intents) > 1:
print("нақтылаңыз: бір сұрақты таңдаңыз")
else:
print("іздеу:", entities[0], intents[0])
Қадам файлы мысалмен бірдей.
len(entities) тізімдегі мәндерді санайды; == 0 бірде-бір мән жоқ па деп тексереді. > — «артық»: > 1 бірнеше мәнді табады. elif тармақтары ретімен қаралады; сәйкес келген алғашқысы ғана орындалады. entities[0] тізімнің бірінші мәнін алады: Python орын санауды нөлден бастайды. Бұл жолға екі тізімде де дәл бір мән болғанда ғана жетеміз. intents[0] да солай. Бос тізімнен [0] алуға тырыссаңыз, бағдарлама қате береді; алдыңғы тексерулер содан қорғайды. == салыстырады, ал бір = мәнді сақтайды — 10-сабақты еске алыңыз.
Шахмат қашан? үшін іздеу: шахмат уақыт шығады. Робот қашан? үшін білмеймін: қай үйірме? шығады: ол атау әзірше сөздікте жоқ. Шахмат, сурет қайда? бір үйірмені атауды сұрайды. Шахмат қашан қайда? бір сұрақ түрін таңдауды сұрайды. Шахмат неге? үшін білмеймін: уақыт па, орын ба? шығады. Бір атау екі рет жазылса да, екі табылған мән деп саналады; бұл жағдайды кейін жақсартамыз, әзірше пайдаланушы сөздерін үнсіз өшірмейміз.
Тірек сызба
Сұрақ → белгілі атаулар + белгілі сұрақ түрлері → әрқайсысы дәл біреу ме? → іздеу кілті; болмаса → не жетіспейтінін не нені нақтылау керегін айту. Іздеу кілті → деректер (16-сабақтан бастап), дайын жауап емес.
Еске түсіріп, тексеріңіз
Кодты жауып, тоқтаудың төрт себебін қалпына келтіріңіз. Кейін жоғарыдағы мысалдарды іске қосып, әр хабарламаны өз себебімен салыстырыңыз.
Тапсырма: СУРЕТ қайда?, Сурет қашан қайда? және бос жол үшін нәтижені болжаңыз. Көмек: шарттарға өтпей тұрып, екі тізімдегі мәндерді санаңыз. Үлгі жауап: іздеу: сурет орын; нақтылаңыз: бір сұрақты таңдаңыз; білмеймін: қай үйірме?. Жиі қате: іздеу: жазуын орын туралы жауап деп қабылдау. Үлгі тек болашақ іздеудің екі кілтін анықтады; нақты деректі әлі тексерген жоқ.
Пікірлер (0)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.