Bash.org.ru IT Happens Истории ## 1201 – 1300
Шрифт:
— ИННАХ!
#1238: Элиза по-русски
13:00 10.09.2009, IT happens
Случилось это в то время, когда я только-только научился писать более-менее компилящиеся программы. Начитавшись различных околокомпьютерных изданий довольно низкого качества и геймерских форумов, я твёрдо решил, что напишу свой искусственный интеллект, с которым можно будет... ну, по крайней мере общаться в чате (хотя воображение, разумеется, шло гораздо дальше). Никакой специализированной литературы под руку мне тогда не попало, да и некогда было её читать — руки страшно чесались,
На глаза мне попалось описание «электронного поэта» Леонида Каганова, и в голове тотчас же родился алгоритм. Программа содержала базу слов, причём для каждого слова были заданы вероятности того, что оно начнёт или закончит фразу. Для каждой пары слов также присутствовало две числовых характеристики: вероятность того, что первое слово присутствует во фразе, отвечающей на содержащую второе слово, и вероятность того, что первое слово идёт в предложении после второго. В итоге ответ бота начинался с наиболее вероятного слова по сумме баллов «начало фразы» и «ответ на каждое из содержащихся в вопросе слов». Слова добавлялись в конец фразы до тех пор, пока вероятность конца фразы не превышала сумму баллов для следующего «хорошего» слова. О знаках препинания на этом этапе мечтать не приходилось.
Результаты были не слишком впечатляющими: загнав руками несколько десятков слов и неделю промучившись с коэффициентами в формулах, я смог добиться лишь адекватных ответов на фразы «привет» и «как дела». Поняв, что самому мне с этой задачей не совладать, я обратился к хорошему знакомому, который не брезговал отвечать на мои околопрограммистские вопросы. Знакомый заинтересовался моим проектом, в первую очередь из-за его простоты, и принялся за дело.
Отныне программа общалась с базой данных, содержавшей все необходимые таблицы. Поиск «наиболее вероятных» слов был переложен на движок базы; кроме того, в формулу добавилось слагаемое, экспоненциально уменьшающее вероятность появления нового слова с ростом длины фразы. Когда переписанная программа заработала на уже подобранных мною примерах, возник вопрос: чем заполнить базу? Очевидно, что лучшим кандидатом на базу для чат-бота является... правильно, база настоящего чата. У моего знакомого как раз оказался дамп одного такого ресурса, где сидели преимущественно старшеклассники. Отличительной особенностью этого чата, которой мы легкомысленно не придали должного значения, было полное отсутствие модерации. Мой знакомый занялся делом, и вот уже наскоро составленная «словокосилка» принялась переваривать дамп чата, нещадно запихивая новые данные в MySQL-таблицы.
Настал момент истины. Отяжелевшая база медленно ворочала файлами, а мигающий курсор так и подмывал задать первый вопрос новорождённому разуму. Начать разговор мой друг решил обычным образом:
> Привет
Новоявленный бот, задумавшись на пару секунд, выдал:
< пошел нах@й
Отсмеявшись, на следующий день скрипту мы скормили базу более «взрослого» чата, после чего от дурного воспитания бота не осталось и следа. Некоторое время мы продолжали совершенствовать бота, а затем, разумеется, забросили — как обычно и случается с подобными программами.
А мораль истории проста: за вводимыми данными надо тщательно следить — тем более, если эти данные вводишь не ты.
#1239: Официант, шампанского!
00:30 11.09.2009, IT happens
Работаю на заводе айтишником. Всё производство с недавнего времени переведено на компьютеризованный контроль; естественно, большая часть сотрудников старой закалки до сих пор не понимают, что такое компьютер и для чего он нужен.
Так вот, в одном из цехов шли работы, и управляющий компьютер надо было отнести подальше от опасности в целях сохранности железа. Вышло так, что компьютерный стол поставили между двух производственных агрегатов с повышенной теплоотдачей. Один умелец снял боковую крышку с системника, чтобы тот не перегрелся. На мой суровый вопрос «какого хрена?» умница-операторша с уверенностью ответила: «Мы крышку сняли, потому что монитор потеет!» Выйдя из ступора, я взглянул на дисплей. На матрице высыхали брызги то ли от воды, то ли ещё от какой жидкости...
#1240: Не съем, так понадкусываю
13:00 11.09.2009, IT happens
Скорее грустно, чем смешно. В питерском «Ашане» раздел электроники всегда славился возможностью «потыкать палочкой» в понравившийся экземпляр ноута или нетбука. Всё работало, светилось, пищало. Во время очередного визита я удивляюсь резкому повороту событий: всё железо выключено, а на ценниках появились какие-то приписки.
Оказалось, какой-то Данила-мастер не поленился поставить пароли на почти все портативные компьютеры. Теперь железо продают со скидкой, а на ценниках стыдливо подписано «стоит неизвестный пароль».
#1241: d-_-b
13:00 11.09.2009, IT happens
Дело было на первом курсе университета — тогда мы только-только начинали осваивать программирование на Паскале. Я зашёл к одногруппнику, который в это время бился с непростой программкой аж на 100 строк кода. В процесс отладки тут же был втянут и я — просмотрел код, сделал пару-тройку исправлений... Программа работает, компилится, но результаты выдаёт явно не те. Полчаса мы перечитывали код, подправляли, оптимизировали; абсолютно правильная «на бумаге» программа ни в какую не хотела выдавать верный результат.
Никогда не забуду выражение лица товарища, обнаружившего причину мучений. Оказалось, что я, в первый раз правя код, вместо переменной b в одном из операторов влепил d. С тех пор я стараюсь называть переменные осмысленно, а однобуквенных имён и вовсе избегать.
#1242: Серовики
13:00 11.09.2009, IT happens
Пятница, 18:05. Когда я уже одной ногой перешагивал порог офиса, меня отловил финансовый директор, потрясая распечатанным листом, поперёк которого шла жирная серая полоса. Как водяной знак — разве что слова «образец» не хватает. Документ, говорит, нужен кровь из носу прямо сейчас, а принтер выдает такие листы из всех программ.
Финдир — тётушка серьезная, в компьютерных настройках не ковыряется почём зря. Иду к принтеру, прикидывая, что в крайнем случае распечатаю файл у себя, потому что дельных мыслей никаких. Лезу в настройки — ничего похожего на опцию «Print grey line». Чтобы изобразить деятельность, даю команду «Очистка» — принтер пыхтит и выдаёт помятый листок с такой же серой полосой!
Вместо аккуратной стопочки белоснежной бумаги в лотке обнаруживается ворох «серо-полосатых» черновиков. Вечер пятницы удался.