|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|
Алгоритм работы чат-бота14.02.2010, 22:11. Показов 33147. Ответов 53
Метки нет (Все метки)
Задумал создать чат бота.
Кюрю доки и хотелось юы услышать советы умных людей. Пока я сдел альфу альфа. и недоволен результатом совсем. у меня сейчас только одна таблица. аля ------------------ привет | прив/ку/хай | приветствие как тя звать?/ты кто?| я бот | Знакомство ------------------ последний столбец тема разговора. тоесть поддержка синонимов не более. читал что мона искать сначала по всех фразе потом по частям фразы... еще хочется чтоб бот тему держал. пример юзер сказал слово про компы .бот узнал из базы что слова это относиться к компам и будет говриь про компы с юзером... но все ранво получается что юзер спршивает - бот отвечате и все... или может парсить строку на наличие ? еслинет значти юзер чтото сказал - смотрим в бд к каой теме относиться это и спрпшивае юзера чтонить про эту тему или тож фразу говрим. кактотак)
0
|
|
| 14.02.2010, 22:11 | |
|
Ответы с готовыми решениями:
53
Обсуждение идеи алгоритма чат-бота Алгоритм создания самообучающегося бота для какой-то простой игры Алгоритм обработки запроса. Чат. Client+server+mysql bd |
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
| 14.02.2010, 22:29 | |
|
Эпичная тема, честное слово. Ничего типа искуственного интелекта у вас не получится конечно, но более менее сносного болтуна можно создать... По теме:
Поиск нужно производить по маске, т.е. анализировать строки. Для привета достаточно маски "прив.*" т.е прив и может быть ещё что то дальше. Ещё интересная идея - допустим боту пишут "Привет! Как дела!" Он анализирует строку и находит соот-ие по "прив.*", но на как дела он не ответит, а можно бы. Теоретически можно улавливать какую то фразу не по целой фразе а по составу. Допустим если боту говорят ту же "Привет бот как твои дела" то "как дела" уже не сработает, поэтому стоит делать список слов наличие который в фразе дает боту право ответить. Т.е. проверяем по списку и видим что из этого списка 100% слов были найдены (и "как" и "дела") значит нужно "прикрепить" этот ответ к конечной серии ответов. Конечно 100% можно регулировать. Задать порог в 80% например. Так же стоит ввести "настроение", т.е. сделать фразы которые понижают\повышают настроение, может из за этого он будет выбирать разные фразы. Насчет поддержки темы разговора - наврятли, это слишком тяжело... надо подумать
1
|
|
|
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
|
|
| 14.02.2010, 22:34 | |
|
Krist_ALL, посмотри, вот тут я отвечал уже, несколько ссылок полезных нашел. Если цель написать простенького бота, то очень неплохие там алгоритмы приводятся, а, главное, простые для понимания и реализации. Начать с них, а дальше усложнять по возможности.
https://www.cyberforum.ru/deve... post293766
1
|
|
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|
| 14.02.2010, 22:51 [ТС] | |
|
Phantom, я уже читал этот ман) Все равно спасибо!.
просто получается что либо человек спрагивает - бот отвечает либо наоборот. и даже пусть будет мега словарь - всеравно фигня будет. по поводу поддержки темы.... пример: Я:я люблю машины. Бот:какая у тя машинга? или у меня машина бмв. тоесть спрашивает или тоже фразу утвердительную говорит. поэтому и есть колонка тема. + можно вести учет того что юзер уже спрашивал и если он снова спросит то сказать ему об этом. а то все боты реагируют тока на повтор прямой тоесть када друг за другом фразы. напримр а а - они говрят типа повтор а 2 раза привет говорю или спрашиваю чтото им пофиг + можно еще у юзера спрашивать инфу об нем и помнить . а во время разговора вставлять данные его. напримр узнаем снаачала имя а потом обращаемся по имени и иногда чтоб было человекоподобнее.
0
|
|
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
| 14.02.2010, 23:09 | |
|
ну а в чем проблема? юзер скорее напишет свое имя с Большой буквы, вот его и запишем, к томуже можно подключить словарь имен и пробежаться по совподениям.
насчет повторов введи счетчик, вообще тут конечно надо хранить данные в памяти а ещё можно учесть такое... если бот раз за разом по какой то логике отвечает одинаково, после какого то раза фраза вообще вылетает... ps. Идей много можно напридумывать, каждая по своему сложна, код распухнет и будет давать сбои. Тут надо базу основательно продумать а то тяжело будет потом новые "фишки" внедрять
1
|
|
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
||||||||||||||||||||||||||||||||||||
| 15.02.2010, 12:32 [ТС] | ||||||||||||||||||||||||||||||||||||
|
Вообщем я думаю сделать так:
Человек:привет бот!
Человек:погода хорошая сегодня.
+ незнаю как сделать чтоб когда бот например говорит привет и сразу мог спрасить. напирмер привет. как у тя дела? вмеет хранить реплику с вопросом как то тупо наверное. вобще сама идея чтоб бот был активном в разговоре а не как остальные боты тока слушать могут и поодакивать типа как интересно! итд.
0
|
||||||||||||||||||||||||||||||||||||
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
| 15.02.2010, 15:00 | |
|
Так если вопрос идет о PHP тут и нельзя сделать чтобы бот сам реагировал, т.к. само PHP же не может реагировать оно только формирует страницу. Хотя можно с Ajax'ом поработать. С другой стороны вы можете отправлять фразу бота после ответа бота. Забейте базу разных вопросов бота и они имею разный приоритет, допустим приоритет "как тебя зовут?" высокий, т.к. это важная часть беседы, а чтобы бот спросил "какая у тебя машина?" это надо чтобы так выпало (скажем шанс 10%). Опять надо хранить "таблцу пользователя" в которой хранятся кому что бот отвечал (чтобы не задавал повторные вопросы и не отвечал повторно). Так же стоит ввести с десяток фраз которые могут как бы невзначай перевести разговор например "да ладно фиг с ним, давай лучше о погоде?" такие фразы будут использоваться когда бот не знает что сказать. И конечно они тоже не должны повторно вызываться.
1
|
|
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|
| 18.02.2010, 15:32 [ТС] | |
|
Еще несколько вопросов..
Как обучать бота? логи то он будет вести но хзапоминать все что вводит юзер тоже не выход. или нет фразы в бд и он спрашивает что это такое тоже бред... и главное бот может поглупеть от запоминания фраз.. и еще такой момент. юзер вводит: windows - хорошая вещь бот найдет 'хорошая вешь' а о винде забудет. как отличать самые важные слова во фразе? и еще вдруг так полчиться чел:привет бот:привет чел:как тебя зовут? бот:меня зовут БОТ. какачя хорошая погода. тоесть вторая фраза не втему совсем. и что хранить отделбьно вопросы отделбно фразы..както вот не пойму..
0
|
|
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|||
| 18.02.2010, 15:42 | |||
1
|
|||
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|||
| 18.02.2010, 16:13 [ТС] | |||
предположим мы укарачиваем 2 буквы тогла 'ты' совсем укаратится - мона длинну слвоа проверять например: человек: ты тупой бот скрипт: ----------------- ты - длинна <= 3(2) не укарачиваем тупой - длинна норм -> туп* бот - длинна <=3(2) не укарачиваем ----------------- ищем в бд ты туп% бот - есть а если ты тупое существо - нету в бд 100 процентного совпадения то тогда ищем по певым 2м словам ты туп% есть (ты тупой бот) так? ты тупое существо
0
|
|||
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||
| 18.02.2010, 16:28 | ||
|
1
|
||
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|
| 18.02.2010, 16:53 [ТС] | |
|
А если вот так:
как твои дела? как у тебя дела? тут отрезанием окончаний необойжешься..( + мона педлоги нах вырезать например у в на и какая база должна быть? вопрос - ответ? твое имя - бот тебе лет -10 такая? а как же бот тогдабудет спрашивать чтото у человека при такой структу ре бд? отдельно ворпсы хранить или как непойму.
0
|
|
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||||
| 18.02.2010, 16:59 | ||||
|
Вообще это ваше дело... вам проект лучше виднеется чем мне))тут стоит все продумать, а чужие советы по архитектуре приложения только помешают имхо Все равно толку от них не много для бота... хотя... ну тогда когда составляете триггерные списки учтите это и не пишите в БД предлогов
1
|
||||
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|
| 18.02.2010, 17:06 [ТС] | |
|
а когда тогда окончания отрезать?
мона искать по целой фразе - если false то по все слова -1 или мона искать 'как' + 'твои' + 'дела' или как твои дела, как твои, как тв% непойму(
0
|
|
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||||||
| 18.02.2010, 17:16 | ||||||
|
в PHP есть такая фишка
Как дальше с БД я что то щас не могу придумать, т.к давно этим не занимался Но смысл в том что нужно посчитать процент соответствия триггер (массива слов) триггеру из БД например для фразы "привет бот" выходной триггер будет { "привет", "бот" } если в БД есть тригер { "привет" } то процент соответствия будет 50% а если есть триггер { "привет", "бот" } то 100% Потом составив список возможных ответов по триггерам из БД можно выбрать максимальное совпадение или рандомно выбрать ps. PHP тоже давно не трогал, за кривокод не ругать
1
|
||||||
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|
| 18.02.2010, 18:56 [ТС] | |
|
а если юзер ввел типа
какая твоя лбимая книга? а бо тне знает о своей любимой книге ничего. что тогда делать? хочется прост овсе продумать заранее чтобы потом не переделывать большой оьъем работы .
0
|
|
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||
| 18.02.2010, 19:04 | ||
|
Т.к. в списке есть "как*", "твоя", "любим*" из фразы вырезается выделенное какая твоя любимая книга Остается книга, в ответе она заменяется на %cut% гм... только что делать с окончанием книги, нужно как то заменить "книга" на "книги" мб так {"как*", "твоя", "любим*"} = { "у меня нет любимой %cut%и" } а вырезаться будет из оставшегося слова тоже всякие окончания и т.д.
1
|
||
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|
| 18.02.2010, 19:50 [ТС] | |
|
а сам бот будет спрашивать только если в ответной реплике будет вопрос.
еще мона сделать в бд колонку типа.ответ на этов ворпос запомнить и занести втакуюту переменную
0
|
|
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
| 18.02.2010, 20:52 | |
|
Не совсем понял...
Типа ЮЗЕР: Какая книга тебе больше всего понравилась? -> Вопрос который бот не знает -> Ответить вопросом -> Приготовиться к добавлению в БД новых данных БОТ: Я пока не решил, а тебе? ЮЗЕР: Мне понравилась книга "Война и мир" -> ADD -> { "как*", "книг*", "теб*", "больше", "всего", "понравил*" } == { "Одна из моих любимых, это - %cut%" }
0
|
|
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|
| 20.02.2010, 20:45 [ТС] | |
|
Начал приступать к кодингу.
вопрос: как разделять фразу на слова? пробел?а если запятая или точка, а может запятая и точка. человек:привет, бот как быть?
0
|
|
| 20.02.2010, 20:45 | |
|
Помогаю со студенческими работами здесь
20
Создание чат бота Файл: Реализовать алгоритм работы чат-бота... Написать чат бота Обучение чат бота создание чат-бота Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|