Lord_of_Rings
@Lord_of_Rings
Python developer

Классификация вопросов?

Всем добрый день! Пишу программу, которая принимает вопрос от пользователя, определяет к какой категории он относится и даёт ответ. Например на вопросы "Сколько времени?", "Какой час?", "Время" программа должна ответить текущим временем, а на вопросы "Как тебя зовут?", "Как твоё имя?" и др., напечатать "Меня зовут Python". Подскажите, как это можно реализовать?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@o5a
Если не нужна какая-то продвинутая система, которая анализирует разные формы слов и т.п., то самое простое - забить нужные ключевые слова или части слов, и проверять их на вхождение в строку вопроса. Например, так через regexp (проще комбинировать варианты)
import re

categories = {
    r"(время|времени|час)": "время",
    r"(зовут|имя)": "имя",
}

# тестовые вопросы
questions = ["Сколько времени?", "Какой час?", "Время", "Как тебя зовут?", "Как твоё имя?"]

for question in questions:
    for pattern, category in categories.items():
        if re.search(pattern, question, re.I):
            print(f"{question} = {category}")

Это для примера, структуру для шаблонов можно потом уже выбрать с учетом специфики задачи.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rPman
самое простое - забить в программу все возможные варианты и проверять по условию

причем буквально сравнением, удалив из строки с вопросом лишние символы (лишние пробелы, знаки препинания если конечно не дойдешь до фраз типа 'казнить нельзя помиловать' и т.п)

правильное решение как ни странно существует, но оно не подъемно для задающих такие вопросы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы