zombieman
@zombieman

Как заставить питон реагировать а ключевые слова и из списка?

дан код бота ВК
мне нужно чтобы бот реагировал на указанные ключи в любом предложении что пишет пользователь
пример:
пользователь пишет 'Привет бот,сколько стоит доставка ?'
бот видит ключевое слово "доставка" и реагирует только на него

Данный код выводит только с точное совпадение с ключами

Я смог понять что предложения что пишет пользователь можно разбить с помощью .split
и по идее нужно прогнать результат сплита и сравнвить снова с ключами (все свои попытки циклов и тд я удалил что бы было начало того что работает)

заранее буду очень благодарен за помощь
if event.type == VkEventType.MESSAGE_NEW:
 if event.to_me:
            # ключевые слова для реакций бота
            delivery = ['Сколько стоит доставка', 'доставка', 'стоимость', 'Сколько стоит доставка?']
            helloWorld = ['Начать', 'начать', 'привет', 'Привет', 'Добрый день']

            # Сообщение от пользователя
            request = event.text
            words = request.split(" ")  # разбивает предлжение на строки
            print(words)
            # логика ответа
            if request in helloWorld == "Начать":
                write_msg(event.user_id, "Привет! Я - бот. Готов ответить на ваши вопросы.")
            elif request in delivery:
                write_msg(event.user_id, "Доставка до любой станции метро и МЦК стоит 350₽;")
            elif request in helloWorld:
                write_msg(event.user_id, "Привет! Я - бот. Готов ответить на ваши вопросы.")
            else:
                write_msg(event.user_id, "Затрудняюсь ответить на ваш вопрос.")
  • Вопрос задан
  • 857 просмотров
Решения вопроса 2
skipirich
@skipirich
проходил мимо
То что ты предлагаешь работать не будет. Я думаю минимально рабочий вариант можно было бы реализовать так:
1. Применить алгоритм стеминга для нахождения основы слова вот пример для python Стеммер Портера
2. Держать ключевые фразы для реакции бота в БД. Потому что как правило БД поддерживают полнотекстовый поиск, и после получения основы слова с помощью стеммера ты бы мог написать sql запрос для получения фразы. Разумеется если запрос к базе вернет несколько записей то надо как то определить вес каждой и вернуть с наибольшим весом.
Ответ написан
@o5a
Если я правильно понял вопрос, требуется проверить, что любое из заданных слов есть в предложении. Тогда можно сделать так:
if any(word in request for word in helloWorld):
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы