Лекция
Привет, мой друг, тебе интересно узнать все про моделирование поиска пути , тогда с вдохновением прочти до конца. Для того чтобы лучше понимать что такое моделирование поиска пути , настоятельно рекомендую прочитать все из категории Моделирование мыслительных процессов на естественном языке и Символьное моделирование.
Поиск пути (англ. Pathfinding) — термин в информатике и искусственном интеллекте, который означает определение компьютерной программой наилучшего, оптимального маршрута между двумя точками.
(ЛЕВ)->[ЕСТ]->?->(КОШКА) Лев ест кошку?
То есть наша задача проверить:
1) Наличие такой связи в БД.
2) Убедится в том, что связь положительна.
3) Выдать результат в качестве ответа (Да/Нет)
4. Если такой связи нет, то построить такую связь (если возможно)
Мы лезем в БД и видим, что связи:
(ЛЕВ)->[ЕСТ]->ДА->(КОШКА) у нас нет.
(ЛЕВ)->[ЕСТ]->НЕТ->(КОШКА) у нас тоже нет.
Значит если нет отрицательной связи (тупик, конец пути), то значит связь может быть положительной.
А раз так, то надо искать путь.
А дальше мы на основании имеющихся у нас данных ищем соответствие.
>Что значит "лев"?
Смотрим "описание" (понятие ЧТО) и ПОНИМАНИЕ.
ПОНИМАНИЕ это "описание" но записанное на внутреннем языке. Оперировать с "описанием" сложно
это текстовая инфа, она не является мыслью. Нам нужна мысль. А мысль это связи.
ПОНИМАНИЕ это те самые связи типа (ЛЕВ)->[ЕСТ]->ДА->(КОШКА) полученные из слов и хранящиеся в БД.
Называется: "гроздь".
Не запутался? Тогда дальше:
Строим путь. Ты правильно заметил, начинаем с процесса, так как он тут главный.
Со словом лев может быть дофига и больше связей. А вот "ест" повязанное с "Лев" усечет нашу "гроздь" до минимума. То есть до возможного решения задачи. Об этом говорит сайт https://intellect.icu .
И так: "ест".
(ЛЕВ)->[ЕСТ]->?->(КОШКА) Лев ест кошку?
неизвестно.
(ЛЕВ)->[ЕСТ]->ДА->(?)
Что вообще ест лев?
Смотрим по БД. Если есть такая связь (ветвление)
Например:
(ЛЕВ)->[ЕСТ]->ДА->(ЖИВОТНЫХ)
значит у нас уже наметился "путь": Лев ест животных. Проверяем подстановкой:
(Х)->[ЕСТ]->ДА->(ЖИВОТНОЕ) Заменяем на переменную (то есть лев=Х=животное)
Соответствует ли переменная условию?
(КОШКА)->[ЭТО]->?->(ЖИВОТНОЕ)
Если такая запись есть (ветвление)
(КОШКА)->[ЭТО]->ДА->(ЖИВОТНОЕ)
То подставляем вместо Х (ЛЕВ)->[ЕСТ]->ДА->(КОШКА) Задача решена.
Если такой записи нет: Плохо дело, мы не знаем животное ли кошка.
ЧТО у нас вообще кошка? Смотрим связи поочередно и проверяем.
Допустим: кошка-млекопитающее. Лев ест млекопитающих? И т.п.
Нифига ничего не нашли. Тогда идем с другого конца:
(?)->[ЕСТ]->ДА->(КОШКА)
Кто питается кошками?
Допустим есть запись:
(СОБАКА)->[ЕСТ]->ДА->(КОШКА)
меняем на Х (то есть собака=Х=лев)
(Х)->[ЕСТ]->ДА->(КОШКА)
Проверяем подстановку:
(ЛЕВ)->[ЭТО]->?->(СОБАКА)
Лев это собака? Ответ нет. (сверяются понятия ЧТО)
Плохо. Задача не решена.
Смотрим кто ЕЩЕ питается кошками (поочередно)
/это называется вглубь/
Ни фига не нашли. Плохо.
Смотрим еще раз "ест". КАК ест? То есть вытаскиваем описание процесса.
>Что значит "ест"?
Вот теперь мы строим связь удовлетворяющую условию.
То есть:
(?)->[ЕСТ]->ДА->(?) Кто кого вообще ест?
Например:
(ЖИВОТНОЕ)->[ЕСТ]->ДА->(ЖИВОТНОЕ)
Аналогично с заменой на Х и на Y и проверкой является ли ЛЕВ и КОШКА искомыми Х и Y
Если и теперь не нашли.
/уходим в сторону/
Смотрим "описание процесса"
>понятие "ест" - это когда пищеварительный процесс и все такое...
и далее аналогично предыдущему примеру:
[ЕСТ]->[ЭТО]->ДА->[?]
или так [ЕСТ]=[?] поиск синонимов (с условием, например "наличие пищеварительного тракта" или без, например КУШАТЬ)
(?)->[Х]->ДА->(?)
И подстановкой вместо Х, например: (ЛЕВ)->[КУШАТЬ]->ДА->(КОШКА) ищем совпадения.
Допустим тупик.
Тогда последний вариант. Строим временную связь:
(ЛЕВ)->[ЕСТ]->ДОПУСТИМ->(КОШКА)
и начинаем проверять:
Лев мог бы есть кошек? Раз мы сюда дошли, значит прямой записи у нас нет, и проверять заново, смысла нет. Но у нас есть "связи через связи", которые мы пока не проверяли...
Дальше пока писать нет смысла.
Вопрос: Понятно хоть что-то?
Если я не полностью рассказал про моделирование поиска пути ? Напиши в комментариях Надеюсь, что теперь ты понял что такое моделирование поиска пути и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Моделирование мыслительных процессов на естественном языке и Символьное моделирование
Из статьи мы узнали кратко, но содержательно про моделирование поиска пути
Комментарии
Оставить комментарий
Моделирование мыслительных процессов на естественном языке и Символьное моделирование
Термины: Моделирование мыслительных процессов на естественном языке и Символьное моделирование