Задать вопрос

Алгоритм поиска совпадений фраз по словарям. Как эффективно найти то, что имел ввиду пользователь?

Исходные данные:
Словарь A - фразы согласия (да / конечно / пожалуйста и т.д.)
Словарь B - фразы несогласия (нет / не нужно т.д.)
Словарь C - фразы занятости (нет времени, я занят, пожалуйста позже и т.д.)
Словарь D - фразы повтора (повторите, не расслышал и т.д.)

Словарь хранится в XML в соответствующих тегах. Сейчас алгоритм загружает XML и когда на вход подаётся фраза например "Пожалуйста позже" он вернёт совпадение из словаря А, потому что там есть фраза "пожалуйста", а должен был из словаря C. Иными словами возвращает первое попашееся совпадение слова из фразы. Вижу выход из ситуации с помощью подсчёта количества символов во фразе пришедшей на вход и в обнаруженных совпадениях и возвращать то, в чём больше символов, но словари тогда надо растить бесконечно. В них буквально должно быть максимум фраз.
  • Вопрос задан
  • 360 просмотров
Подписаться 3 Сложный 1 комментарий
Решения вопроса 1
Stalker_RED
@Stalker_RED
Ищите все подходящие варианты, назначайте им вес в зависимости от того, насколько полное совпадение с фразой. Затем по весу выбирайте один вариант. В идеале на вес еще и предыдущие сообщения могут влиять.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
LaRN
@LaRN
Senior Developer
Простого решения нет.
Вот неплохая статья, возможно она вам покажет путь решения задачи.
https://m.habr.com/ru/post/341148/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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