ИИ без LLM: казахская модель с нуля Урок 14 из 20
Урок 14. Узнаём, что именно спрашивают
Просьба «Шахмат қашан?» («Когда шахматы?») и «Шахмат қайда?» («Где шахматы?») относится к одному занятию, но требует разных записей. Тип вопроса, или *намерение*, — какую информацию хочет человек: время или место. Это ещё не сама информация. Как на бланке заказа: графа «что нужно» не равна готовому товару.
Текст переведён с помощью ИИ.
Зачем это нужно
Просьба «Шахмат қашан?» («Когда шахматы?») и «Шахмат қайда?» («Где шахматы?») относится к одному занятию, но требует разных записей. Тип вопроса, или намерение, — какую информацию хочет человек: время или место. Это ещё не сама информация. Как на бланке заказа: графа «что нужно» не равна готовому товару.
Сначала целая программа
Создайте intent.py в UTF-8. Названия қашан («когда») и қайда («где») берём как точные учебные признаки. Для вопроса с обоими словами сохраним оба типа вместо выбора первого. text сохранит вопрос маленькими буквами, clean — без ? и ,, а words — список слов.
text = input("Сұрақ: ").lower()
clean = text.replace("?", "").replace(",", "")
words = clean.split()
intents = []
if "қашан" in words:
intents.append("уақыт")
if "қайда" in words:
intents.append("орын")
print(intents)
Готовый файл содержит ту же программу.
words — список после разбиения из урока 7. intents = [] — пустой список найденных типов. Два самостоятельных if проверяют два слова: второе условие проверяется даже тогда, когда первое уже подошло. append из урока 13 добавляет метку. уақыт означает «время», орын — «место»; это метки для поиска будущих записей, а не найденное время или место. Ввод Шахмат қашан? даёт ['уақыт'], Шахмат қайда? — ['орын'], Шахмат қашан, қайда? — ['уақыт', 'орын']. Оба знака ? и , удаляются уже знакомым replace, поэтому қашан, становится целым словом қашан. Другие знаки препинания пока остаются.
Для Шахмат неге? результат []: неге («почему?» или «к чему?» по контексту) не входит в два разрешённых типа. Пустой список не означает, что вопрос бессмысленен. Порядок слов и окончания здесь ещё не разбираются; совпадение должно быть целым словом после split().
Опорная карта
Вопрос → список слов → есть қашан? добавить «время» → есть қайда? добавить «место» → сохранить все найденные типы.
Вспомните и выполните
Скройте код и объясните, зачем здесь два if, а не if/elif. Запустите Сурет қашан?, Сурет қайда?, Сурет қашан қайда? и Сурет неге?.
Задание: предскажите вывод для ҚАЙДА? и пустой строки. Подсказка: lower() меняет регистр; список может остаться пустым. Эталон: ['орын'] и []. Частая ошибка: видеть ['уақыт'] и считать, что программа уже знает расписание. Она знает только вид нужного факта; сам факт появится в уроках 16–20.
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.