Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/173: Рейтинг темы: голосов - 173, средняя оценка - 4.53
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317

Алгоритм работы чат-бота

14.02.2010, 22:11. Показов 33200. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задумал создать чат бота.
Кюрю доки и хотелось юы услышать советы умных людей.
Пока я сдел альфу альфа.
и недоволен результатом совсем.
у меня сейчас только одна таблица. аля
------------------
привет | прив/ку/хай | приветствие
как тя звать?/ты кто?| я бот | Знакомство
------------------
последний столбец тема разговора.

тоесть поддержка синонимов не более.
читал что мона искать сначала по всех фразе потом по частям фразы...
еще хочется чтоб бот тему держал.
пример юзер сказал слово про компы .бот узнал из базы что слова это относиться к компам и будет говриь про компы с юзером...

но все ранво получается что юзер спршивает - бот отвечате и все...
или может парсить строку на наличие ? еслинет значти юзер чтото сказал - смотрим в бд к каой теме относиться это и спрпшивае юзера чтонить про эту тему или тож фразу говрим.

кактотак)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2010, 22:11
Ответы с готовыми решениями:

Обсуждение идеи алгоритма чат-бота
Все привет. Вот все думаю на тему,как реализовать нормальную систему хм.. AI для чата(тупо болтовня не о чем) Есть идея. Смысл вот в...

Алгоритм создания самообучающегося бота для какой-то простой игры
Интересует алгоритм создания самообучающегося бота для какой-то простой игры. Нашел алгоритм обучения без учителя Хебба и Кохонена, но...

Алгоритм обработки запроса. Чат. Client+server+mysql bd
Доброго времени суток. Пишу чат. Написал клиент, сервер. На локальном хосте создал бд. Нужно реализовать правильную авторизацию...

53
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
20.02.2010, 21:47
Студворк — интернет-сервис помощи студентам
2 Krist_ALL. Хех, ну я же вам дал PHP код. Или вы не на нем делаете? Смысл сначала разделить в массив по разделителю "пробел" а потом тримить)

"привет, бот! ты - просто чудо..."
=> explode(' ')
=> {"привет,", "бот!", "ты", "-", "просто", "чудо..." }
=> trim()
=> {"привет", "бот", "ты", "", "просто", "чудо" }

Не помню как там в PHP с тримом, но смысл функции трим в удалении лишних символов в начале и конце строки
0
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
20.02.2010, 23:44  [ТС]
С пробелами разобрался)
Теперь проблема с -
может быть так:
человек:жизнь-сплошная скука
тогда делим по пробелу
1 ->жизнь-сплошная
2 ->скука

если удалим - то будет жизньсплошная


а вот если молоко - еда
то да, норм будет, а как быть в первом слкчаи - мож парсит на наличие других букв в элементе массива, если тру то делить эесплоде -...
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
21.02.2010, 00:17
Теоретически можно сделать под другому... сначало заменить в строке все символы типа "-" "\t" "," на пробелы. Потом убрать лишние пробелы и разделить по словам. Но я не знаю даст ли это нужный результат
0
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
21.02.2010, 00:20  [ТС]
с пробелами новая трабла - известная проблема в пхп - ядовитый ноль...
пример привет (3 пробела например) бот (4) ура
будет привет бот
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
21.02.2010, 00:29
Вам нужно регулярными выражениями вырезать пробелы. Тема эта сложная и сходу я так не могу дать решение, однако если завтра руки дойдут выложу. Но может сами разберетесь если с регулярными выражениями умеете работать?

Вот мануальчик, вроде по нему начинал http://php.su/lessons/?lesson_17
0
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
21.02.2010, 14:39  [ТС]
умею с регулярками работать)
чувтсвую тема будет на 500 страниц)

Добавлено через 13 часов 51 минуту
Ура! сделал)
корректо обрабатывается все фразы
привет-бот
привет -бот
привет,бот
и когда несколько пробелов тож все норм)
теперь...буду бд мучить
0
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
22.02.2010, 19:41  [ТС]
Сделал пока поиск фраз по точному совпадению..
буду улучшать.

вопрос:как определить ключевые слова если фраза
я хотел бы у тебя спросить как у тебя дела?
мусор в начале фразы может сбить бота...

+ я не знаю как наполнять базу.
каконйтиь словарб чтоли или фразы какнить загать..
руками тупо заносить не айс как-то.


+ бот алиса может спрашивать вопросы связанные друг с другом...
например
какие ты языки знаешь?
рашан
а можешь меня обучить?
да
как будет на руском слово хрень?

как то так.мона канешно в сессию затолкать...
вообщем мнго интересных моментов.

Можно сделать хорошего бота если у него гипер база или гипер алгоритмы.
я хочу сделать второе.


прочитал гдето что есть боыт которые анализируют фразу целиком?
эт реально?
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
23.02.2010, 00:21
Цитата Сообщение от Krist_ALL Посмотреть сообщение
+ я не знаю как наполнять базу.
Вроде у "Болтуна" была база открытая большая. Конвертер в ваш формат думаю написать будет не сложно
Цитата Сообщение от Krist_ALL Посмотреть сообщение
вопрос:как определить ключевые слова если фраза
такая кривая фраза может сбить с толку даже человека)) не ожидайте от бота много...
кроме того уже сама платформа - веб - дает многие ограничения.
Цитата Сообщение от Krist_ALL Посмотреть сообщение
+ бот алиса может спрашивать вопросы связанные друг с другом...
темой можно назвать только существительное. в приведенном примере - "языки". фраза "ты играешь в футбол" - выбирается "футбол", "как твои дела" - "дела". Хотя как детектировать существительное я пожалуй не скажу. Однако если это сделать то потом из выборки можно делать больший приоритет тем ответам где встретилось слово-тема

Цитата Сообщение от Krist_ALL Посмотреть сообщение
Можно сделать хорошего бота если у него гипер база или гипер алгоритмы.
я хочу сделать второе.
Второе сводится к написанию ИИ С учетом платформы... нет, я бы не советовал... гипер база тоже не покатит. Никому не захочется ждать три часа ответа от бота На практике придется ограничиться умным алгоритмом (если мудрить то задолбаться можно и забить, или запутаться и сделать криво-систему) и средней базой

Цитата Сообщение от Krist_ALL Посмотреть сообщение
прочитал гдето что есть боыт которые анализируют фразу целиком?
Я почти что на 100% уверен что под этим имелось ввиду умное детектирование триггеров из базы по фразе юзера с приоритетами, темами и другими фишками. Иначе получается что кто то уже изобрел ИИ...
0
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
24.02.2010, 15:50  [ТС]
кроме того уже сама платформа - веб - дает многие ограничения.
какие например?
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
24.02.2010, 15:54
Конечно же ограничения по выборке. Дергать из базы данных по фразе для проверки - дорого, а загрузить все сразу - памяти не хватит Имхо гибкости запросов не хватит для той системы которую я описывал, т.к. тут нужно оперировать с массивами данных. Кстати говоря чтобы сравнивать можно упорядочить слова в строке по алфавиту и сравнивать тоже с упорядоченной фразой. Этим решится проблема многообразия словестных перестановок которые разрешает русский язык))
0
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
24.02.2010, 16:13  [ТС]
Человек:интересно как у тебя дела?

Поиск интересно как тебя дела - FALSE
поиск дела тебя как интересно - FALSE
поиск интересно как - FALSE
поиск как тебя - FALSE
поиск тебя дела - FALSE
поиск интересно тебя - FALSE
поиск как дела - TRUE!

или фигня?
попробую or юзать.
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
24.02.2010, 16:30
Поиск интересно как тебя дела - FALSE
поиск дела тебя как интересно - FALSE
Я же выше писал)) От перестановок спасает упорядочивание в строке слов по алфавиту Окончания вырезаем, малоинформативные слова вырезаем... уже не так много вариантов для сравнения останется)
0
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
24.02.2010, 16:33  [ТС]
как дела ->по алфавиту ->дела как ->select ... from.. where word like '%дела как%' -FALSE
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
24.02.2010, 16:48
Нууу... В базу все тоже должно записываться в упорядоченном виде...
0
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
24.02.2010, 18:47  [ТС]
а не кажется тебе что если сортировать слвоа во фразе по алфавиту то может потеряться смысл фразы?
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
24.02.2010, 18:51
Да, так и есть) Однако распознование которое я выше описывал ведется по массиву слов которые образуют триггер - фразы нет. Для бота фразы нет Зато можно укоротить базу в разы, особых потерь для бота я не вижу. Хотя конечно если писать ИИ то такого делать не стоит)
0
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
24.02.2010, 21:06  [ТС]
SELECT * FROM `dictionary` WHERE q like '%твое%' or q like '%имя%' or q like '%gfgdgdg%'

выводит нормальный ответ. норм запрос?
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
24.02.2010, 21:26
SELECT * FROM `dictionary` WHERE q like '%твое%' or q like '%имя%' or q like '%gfgdgdg%'

выводит нормальный ответ. норм запрос?
Технически - нет:
Анатолий Мотев 'Уроки MySQL'
Постарайтесь по возможности избегать шаблонов, начинающихся с символа '%'. СУБД тратит довольно много времени на поиск значений, соответствующих такому шаблону

Логически - нет: сработает даже по 1 слову. Так каши не сваришь. В итоге смысл базы сведется что к каждому слову есть своя фраза. Оно вам надо?

А я ведь говорил про ограничения платформы

ЗЫ. Единственная не банальная реализация которую я вижу - забирать из базы по N строк те строки которые начинаются с первого слова триггера. Эти N строк обрабатываются и упорядочиваются по % совпадения. Если N = 0 -> удаляем первое слово юзера из фразы и снова пытаемся взять N строк. Все вышеописанное тоже накладно, но по крайне мере будет отлично выполнять свою работу. N ограниченно выделенной для PHP памятью
0
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
24.02.2010, 22:11  [ТС]
привет приветствую хай ку прив здорово - прив;привет;здорово;приветствую;хай;ку - welcome
твое имя тебя зовут звать - бот - welcome
твой возраст тебе лет твое - 1 - welcome

вот такая база сейчас. на данный момент бот отвечает превосходно.
я понимаю что логичемски запрос ваще ппц но...
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
24.02.2010, 23:25
ЮЗЕР: Кто тебя разработал?
-> реакция на "твое имя тебя зовут звать"
БОТ: бот
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2010, 23:25
Помогаю со студенческими работами здесь

Создание чат бота
с чего начать? нужен бот для психологического форума, делающий какие то прогнозы на основе информации которую человек понаписал. ...

Файл: Реализовать алгоритм работы чат-бота...
Всем привет! Задача такова: - Пользователя просят написать слово, например "Привет" - программа ищет в текстовом файле с кучей...

Написать чат бота
Задача следующая: Есть игровой клиент ip адрес коннекта я заснифферил. Хотелось бы что-бы прога коннектилась к клиенту заходила на сервак и...

Обучение чат бота
Всем привет. Написал простейший чат бот. Нужен архив диалогов типа вопрос - ответ для его обучения. Возможно у кого то завалялся...

создание чат-бота
Здравствуйте. Как создать чат-бота на какое-либо устройство? Какой язык лучше всего? По какому алгоритму это делается вообще? Заранее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru