Эта тема на forum.dklab.ru


Сандра: поиск для бота-болтуна - как лучше сделать?
Суть проблемы:
есть бот , имитирующий разговор с ИИ. У него есть база , где он держит:
1) готовые фразы и ответами (для всякой попсы типа "а кто тебя сделал?")
2) наиболее частые комбинации из двух слов,каждое в своей колонке (например "как дела?")
3) ключевые слова (+к этому таблица с синонимами ключевых слов), по которым он может в случае чего ориентироваться (например "кофе")
ну и другие таблицы, скажем ,с отмазками и анкетами пользователей (чтобы в случае чего пройтись по их интересам)
Мне самой такая структура кажется мягко говоря странной. А дело в том, что таблицы придумывались по мере погружения в проблему эмуляции ИИ и придумывания новых функций. Теперь понадобилось делать бота уже серьезно , вот и задумалась ,а не переделать ли его окончательно.

А теперь вопросы:
1) из-за этой структуры я уже мозг себе вывихнула думать,как ему самому обучаться , а не через редактирование его базы. Стоит ли менять структуру базы? Может есть какие-нибудь рекомендации, как лучше хранить информацию для болтунов?
2) как организовать поиск по таблице, скажем , с готовыми фразами, чтобы не обращать внимания на порядок слов в предложении и чтобы в итоге выбиралась наиболее похожая фраза (возможность ранжирования по входящим словам из фразы? Беспокоит ,что могут говорить всякий бред типа "А скажи-ка родной, как у тебя там дела" вместо "как дела",а значит если считать процент - совсем даже не подходит вариант "как дела".
Пока вроде все. Заранее благодарна за любые советы.
az:

Суть проблемы:
есть бот , имитирующий разговор с ИИ.

Искусственный интеллект настолько разносторонняя тема, что просто так, взять и описать даже простейшую модель не получится.
Поэтому лучше задать конкретный вопрос, и получить на него конкретный ответ :)
Мне самой такая структура кажется мягко говоря странной.
Естественно. Представьте себе мозг человека. Неужто Вы видите там таблицы с "с отмазками и анкетами пользователей" :)а не переделать ли его окончательно
Вопрос лишь в том, чего Вы собственно от него хотите. Правильно заданный вопрос - это 50% ответа, а правильно сформулированная постановка задачи - 50% решения.
из-за этой структуры я уже мозг себе вывихнула думать,как ему самому обучаться , а не через редактирование его базы. Стоит ли менять структуру базы?
Несомненно.
Может есть какие-нибудь рекомендации, как лучше хранить информацию для болтунов?
Так все-таки для "болтунов" или "ИИ"? Рекомендации, конечно же, есть. В принципе, каждое слово (или понятие), находящееся в базе "болтуна", должно иметь ссылки на другие слова (понятия), при этом каждая ссылка должна иметь свой вес. Вот смотрите. Человеку дают понятия, а он говорит то, что первым пришло на ум. Скажем: Земля - круглая, Солнце - яркое, труба - горячая и т.д. Эти ассоциации у каждого человека свои. Почему? Подумайте сами. Итак, первый тест для болтуна – это игра в ассоциации. Когда он начинает более-менее нормально отвечать на ассоциации приходит время более сложного теста, скажем такого:
Ассоциации:
Земля – это шар.
Шар – круглый.
Земля круглая?
Да, – ответ «болтуна».
Учитывая то, что в данном случае используются слова с разными окончаниями, то необходимо было (изначально) разработать систему для извлечения корня слова. В этом Вам очень поможет следующая ссылка: http://forum.dklab.ru/php/advises/HeuristicWithoutTheDictionaryExtractionOfARootFromRussianWord.html
как ему самому обучаться
Он должен сам задавать Вам вопросы, по словам (понятиям) которые ему неизвестны (на примере реализации - не связаны с другими словами).
Беспокоит ,что могут говорить всякий бред типа "А скажи-ка родной, как у тебя там дела" вместо "как дела",а значит если считать процент - совсем даже не подходит вариант "как дела".
В данном случае, необходимо выделить слова (фразы), которые предваряют начало вопроса. Обратите внимание, на то, с чего обычно начинается вопрос: «Как дела?», «Где был?», «Чем занимаешься?», «Что делать будешь?», «Куда пойдешь?», «Куда положил?», «Куда собрался?»
На самом деле все не так сложно, как многие думают.
Сандра:
Спасибо огромное ,очень дельную идею подсказали - научить его распознавать шаблоны речи : т.е. приветствия,прощания,согласие,несогласие,обзывательство или еще чего. Сразу все яснее стало. И еще благодарю за "извлечение корня" - хорошо помогает.
saiko:
Мое сугубо субъективное, полностью теоретическое и наверно совершенно неправильное мнение на эту тему. Если строить хорошего бота, который по возможностям своим разговорным будет приближаться к человеку, пусть даже изрядно отсталому в психическом развитии, то нужно понять как работает сам мозг. Мне кажеться что там все устроено по очень простой схеме, но с использованием огромного количества памяти. Пусть бот знает 10000 образов, которые он может распознавать по корням слов. Что б он мог думать и умозаключать что-нибудь, эти образы нужно связать ассоциативными нитями. То есть, что бы при восприятии какого нибудь пускового образа бот мог проследить по нити или по нескольким нитям какую то связь с другим образом и выдать этот другой образ в красиво офформленой речи. Система на самом деле очень проста. Я не уверен что её так же просто реализовать. Это требует очень значительных ресурсов для запоминания огромного количества ассоциативных связей. У человека уходит где-то 3 года, при присутствии мощных органов восприятия и огромного запаса памяти. Комп это будет делать черт его знает сколько... И при том - если обучение пойдет не так как надо? Кому нужен бот-псих?) Хотя идея наверное хорошая - можно добавлять новые образы (извлекать новые слова из потока информации), привязывать их связями, пересматривать связи и на основе их строить новые... Наверное если написать кой-какую простую систему, скормить боту несколько книг и если что-то получится - можно вскоре ожидать создание разного рода супер-компьютеров, рождение терминаторов, падение цивилизации ... И зачем это вам?
berkut:
мне кажется, самый простой способ сделать достаточно адекватного бота - это записывать беседы из приватных комнат чатов, где разговаривают только двое, сделать простейшее разпознование "вопросов" и ответов, хотя это не так-уж и важно, и делать по этой базе релевантный поиск

Эта тема на forum.dklab.ru