Я хочу написать чат бота уровня вопрос - ответ (100500 по счёту), столкнулся с следующей проблемой. Допустим есть набор слов из вопроса клиента:
слово1 слово2 слово3 слово4 слово5 слово6 слово7 слово8 слово9 слово10
Я хочу изначально использовать aiml, который по командам буду впоследствии значительно расширять. Сегодня у меня база 1 724 384 вопросов - ответов, есть возможность значительно увеличить её.
----------
Что я планирую сделать.
Первый вариант:
Я хочу разбить базу вопросов в моей базе по уникальным словам и выделить с них корни. Записать их в базу по принципу поле - коренное слово; поле - номер вопроса.
При поступлении запроса от клиента я разбиваю запрос на слова, выделяю корни, ищу максимальны процент похожести в БД. Соответственно нахожу наиболее релевантный - выдаю ответ по номеру.
----------
Второй вариант:
Всё то же самое, только статистически нахожу неделимые пассажи и их считаю за одно слово, придавая им приоритет в поиске. Начну с 4 слов и до одного.
зы
Что такое пассажи, например, 2 слова. Есть два вопроса: 1. Как печь пироги; 2. Какую печь выбрать.
Делим на пассажи: 1. как печь, печь пироги; 2. какую печь, печь выбрать. Статистически я буду более верно угадывать запрос клиента и выдавать ему релевантный ответ, то есть когда он спрашивает печь - глагол, то получит рецепты; а когда печь - существительное, то получит рекомендации.
***********
Плюсы моих способов: сразу можно начать; всё будет в БД; запросы в БД будут like, которые очень легко масштабируются; не важен входной и выходной язык запроса, лишь бы utf8; не имеет значения язык программирования для реализации.
Про неважно какой язык. По сути вся логика бота будет в БД. Таким образом надо написать веб (десктоп) морду, которая отправляет запрос в БД и собственно заполнить БД. Вот чем заполнять будем -- значения не имеет. Паскаль, пхп или джава. Главное, чтобы не мусором заполняли.
Будут няшки сразу типа оценка ответа и предложите свой вариант с блокировкой мата, экстремизма, религии, политики.
Уфф.....
Теперь вопрос:
В чём недостатки моего метода логики работы?
Как посоветуете улучшить логику?
Как бы сделали вы сами?
Ваще в чём я не прав?