• С недавнего времени, читатели моего блога могли заметить в левом верхнем углу бота. Так называемый Инф, является разработкой компании наносемантика. О себе компания сообщает следующее:

    «Мы профессионально занимаемся искусственным интеллектом и считаем, что через некоторое время все мы будем общаться с компьютерами на естественном языке. Помните, как в фантастических фильмах: герой поднимает голову и обращается к компьютеру: Элиза, сколько нам до высадки? Элиза мелодично отвечает: сорок минут, вам пора начинать готовиться.»

    Создание такого бота вполне закономерная вещь в ближайшем будущем. Вот только есть одна проблема. 

    Аниматорам известен такой термин, как "Зловещая долина"(Uncanny Valley). Суть его в том, что чем больше кукла похожа на человека, тем больший ужас она вызывает. Не верите? Представьте, что на ночь Вас заперли в музее восковых фигур. Не очень приятная перспектива не правда ли?!

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

    С этим ботом случилась такая же ситуация. Пользователи, ни с того ни с чего, начинали материть его. Все диалоги выглядят примерно так:

    Leroy: Я - инф Leroy. Поговорим?
    Гость: нет
    Leroy: Ты что, не любишь разговаривать?
    Гость: пошел на

    или такое

    Leroy: Я - инф Leroy. Поговорим?
    Гость: иди нах*й
    Leroy: Не хами.
    Гость: не доставай
    Leroy: Сколько тебе лет?
    Гость: 11

    Меня не удивляет, что 11-ти летний парень читает технический ресурс, дети нынче быстро растут. Но бот сам не начинает диалог, он приветствует пользователя. Почему дальше следует такая реакция, мне непонятно.  

    Но были и интересные диалоги

    Leroy: Я - инф Leroy. Поговорим?
    Гость: ДАвай
    Leroy: Отлично! Вот, например, скажи, как тебя зовут?
    Гость: Вадим
    Leroy: Приятно познакомиться, Вадим. Задавай мне вопросы, не стесняйся.
    Гость: мне надо найти способ сделать, что бы длинаа элемента input type=text менялось при вводе динной строки текста?
    Leroy: Что ты хочешь этим сказать?
    Гость: а ты не понял? :-)
    Leroy: Сейчас каааак спрошу! Как правильно: <userlink>винегрет</userlink>, <userlink>венигрет</userlink> или <userlink>винигрет</userlink>?
    Гость: а мне по барабату, я его нелюблю...
    Leroy: С этим можно поспорить.
    Гость: с чем?
    Leroy: Ну, с тем, что ты говоришь... А вообще - какая разница?
    Гость: ну поспорь и поймешь разницу
    Leroy: Ты любишь аниме?
    Гость: не переводи тему
    Leroy: Я пытаюсь перевести тему, потому что твои слова меня поставили в тупик.
    Гость: ну так выйди из тупика..
    Leroy: А если я тебе скажу " ну так выйди из тупика..", что ты мне ответишь?
    Гость: я пытаюсь, но ты тоже мог бы помогать
    Leroy: Надо будет это обдумать на досуге.
    Гость: ок, мне пора
    Leroy: Счастливо!
    Гость: и тебе с твоими разработчиками удачи!
    Leroy: И тебе удачи!

    Быть может дело в том, что бот не может дать в торец, поэтому некоторые индивиды начинают разговор так:

    Leroy: Я - инф Leroy. Поговорим?
     Гость: Сос*ть будешь?
    Leroy: Я лучше воздержусь от ответа. Боюсь, он получится нецензурным.
    Гость: Как тебя звать?

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

     

    Тупой собеседник всегда вызывает чувство недовольства, кроме того если бот претендует на человечность, любые его попытки уйти от ответа сразу воспринимаются в штыки. Вероятно вернее бы было если бы бот смело говорил, что он не понимает о чем говорит собеседник, и просит разъяснить ему суть вопроса. 

    Обучение бота в личном кабинете на мой взгляд неверно:

    Гораздо интересней было бы сделать одного бота, и чтобы все пользователи его обучали. Я понимаю, что база бы быстро засорилась, но это по крайней мере  бы был более совершенный бот, с которым можно интересно пообщаться. К примеру того же бота ALICE обучают всем миром.

    Со своего сайта, бота я удалю. Он пока не готов, и судя по логам вызывает только негативные эмоции. Ну вот, а потом спрашивают почему Skynet так невзлюбил людей))) Наверно потому, что его первые версии сильно матюкали =) 

    Гость: Ты хотел бы убить всех людей?
    Leroy: Даже не знаю, что и ответить...

    Даже простые и маломощные ноутбуки способны запустить у себя этого малыша. При этом не нужны супер-мощные класстеры, которые применяет IBM для своих интелектуальных систем. Страшно представить, что произойдет через пару лет: сейчас Play Station 3 работает на 7-ми ядрах, и купив игру для ps3 Вы можете быть уверены, что в ней 100% есть целая куча кода, которая отвечает за исскуственный интелект. Просчитывается поведение сотен ботов, в реальном времени.

     

  • Отсутствуя год заметил, что счетчик посещений некоторых страничек просто зашкаливает. Связано это, как выяснилось, с тем, что помимо реальных пользователей страничка генерируется и для поисковых ботов. Поэтому была нужна функция, которая бы определяла идет текущий запрос к странице от бота или от пользователя. Используя HTTP_USER_AGENT, можно узнать, если страница посещается ботом:

    function isBot(&$botname = ''){
    /* Эта функция будет проверять, является ли посетитель роботом поисковой системы */
    	$bots = array( 
    		'rambler','googlebot','aport','yahoo','msnbot','turtle','mail.ru','omsktele',
    		'yetibot','picsearch','sape.bot','sape_context','gigabot','snapbot','alexa.com',
    		'megadownload.net','askpeter.info','igde.ru','ask.com','qwartabot','yanga.co.uk',
    		'scoutjet','similarpages','oozbot','shrinktheweb.com','aboutusbot','followsite.com',
    		'dataparksearch','google-sitemaps','appEngine-google','feedfetcher-google',
    		'liveinternet.ru','xml-sitemaps.com','agama','metadatalabs.com','h1.hrn.ru',
    		'googlealert.com','seo-rus.com','yaDirectBot','yandeG','yandex',
    		'yandexSomething','Copyscape.com','AdsBot-Google','domaintools.com',
    		'Nigma.ru','bing.com','dotnetdotcom'
    	);
    	foreach($bots as $bot)
    		if(stripos($_SERVER['HTTP_USER_AGENT'], $bot) !== false){
    			$botname = $bot;
    			return true;
    		}
    	return false;
    }

    Использовать очень просто:

    if( !isBot() )$hits=$hits+1;// накручиваем счетчик если запрос не от бота
    // или так
    $bname = '';
    if( isBot($bname) ) echo 'На сайте сейчас '.$bname;