Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Частичное совпадение во вложенном массиве
$umsg='Процитируй мне смешное знаменитое изречение';
Получаю сразу все ключи: anekdotaforszmcitata
Подскажите, как мне сделать, чтобы срабатывало только на одно ключевое слово?
И оцените, пожалуйста сам код. Может его можно улучшить?
И как этот массив правильно записать коротким синтаксисом? Что-то я в этих квадратных скобках запутался. Одни ошибки получаются...
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
LML пишет:
Здравствуйте!
Нужно по частичному совпадению слова из фразы выдать то ли анекдот, то ли афоризм, то ли цитату.
Я решил эту задачу ...
Добрый день!
Вы решили замахнуть на искусственный интеллект и если более конкретно на смысловой анализ текста.
Вы думаете, что решили эту задачи с помощью массива с ключевыми словами, но на самом деле всё намного сложнее.
Если у Вас есть желание действительно серьёзно заняться этой задачей, то советую
Вам начать с теории и определениия критериев для распознавания этих текстов.
Вспомнил старый анекдот.
Цитата:
Африканец умирает от жажды в пустыне.
Находит сосуд.
Из него вылетает джин.
Джин предлагает ему исполнить три желания.
И получает в ответ:
1.хочу быть белым
2.хочу всегда иметь много воды
3.хочу иметь много женщин
Джин исполнил его желания и превратил в фаянсовый
унитаз в женском туалете.
Попробуйте проверить с помощью массива с ключевыми словами чем является этот текст.
На мой взляд, это наглядный пример некорректно поставленной задачи,
в которой всего одно пропущенное слово привело к получению абсурдного результата.
Удачи!
LML
Отправлено: 11 Июня, 2021 - 07:13:38
Новичок
Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2021
Помог: 1 раз(а)
2 don.bidon Спасибо за помощь!
Пока я пытался решить проблему "в лоб", в голову пришло решение "в обход" - если мы получаем пару, или тройку массивов одновременно, просто переспрашиваем: "Из твоего вопроса я никак не могу понять, что ты хочешь прочитать - анекдот, афоризм, или цитату?"
2 Vladimir Kheifets Да. Вы угадали. Я пишу чат-бота. Даже не пишу, а модернизирую готовый плагин. На ИИ эта работа явно не тянет. И тех функций, что ему вкладываю - вполне достаточно, чтобы развлекать посетителей моего чата. То, что я пишу, даже в таком виде круче того, что было изначально, когда ответы на каждую реплику выбирались через if-else-strpos
Если интересно, все мои доработки бота описаны тут: https://netsearch[dot]club/threads/j[dot][dot][dot]page-2#post-9229
Да. Моих знаний php явно не достаточно, чтобы писать что-то сложнее массивов с ключевыми словами. Я ведь не программист, а вот так и изучаю php, модернизируя свой чат.
Кстати, что вы можете сказать по поводу решения ботом задач по арифметике?
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
LML пишет:
Кстати, что вы можете сказать по поводу решения ботом задач по арифметике?
То могу сказать, что это хорошая классическая учебная задача по программированию. Правильное направление - обратная польская запись, "Reverse Polish notation".
----- PostgreSQL DBA
Vladimir Kheifets
Отправлено: 11 Июня, 2021 - 11:45:43
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
LML пишет:
А, если кто больше слагаемых подставит? Как поступить тут?Или, хотя-бы ответить, что "Я такие длинные примеры не умею решать".
2 Vladimir KheifetsВстречал я подобные способы реализации. Но везде пишут - использовать только в обучающих программах! eval(), штука жутко нехорошая... А у меня кто угодно боту написать может.
Vladimir Kheifets
Отправлено: 11 Июня, 2021 - 13:39:13
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
LML пишет:
Встречал я подобные способы реализации. Но везде пишут - использовать только в обучающих программах! eval(), штука жутко нехорошая... А у меня кто угодно боту написать может.
с eval или без него необходимо убирать мусор из строки и оставлять только числа и знаки
Как Вы думаете, почему эта "жутко нехорошая штука" не исключена из PHP и из JS?
Просто нужно не допускать, чтобы туда подал вредоностный код и за тем, что бы там было
действительно арифметическое выражение, т.е. строка кода, которая не выдаст фотальную ошибку.
Для этого нужно ставить обработчик ошибок и определиться, как на них реагировать.
В Вашем случае, можно реализовать польскую запись самостоятельно или
использовать eval и PHP интерпетатор сделает это лучше и быстрее чем Вы.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.