Хабрахабр

Курс инфопоиска на Зимней Пущинской Школе: учим старшеклассников создавать поисковые системы

Но многие этим не ограничиваются и проводят мастер-классы, курсы и лекции и на других образовательных платформах. В наших технопроектах преподают более 200 коллег. Под его руководством всего за шесть занятий школьники 7-11 классов (!) написали свой поисковик и защитили проект. Один из таких энтузиастов — Роман Васильев, который этой весной провел курс по инфопоиску в Зимней Пущинской Школе. Как им это удалось, что это за поисковик и для чего проводится ЗПШ — в философской, вдумчивой, легкой, с изрядной долей юмора статье Романа Васильева.

Вступление. Куда идет наше образование, und was können wir dagegen tun?

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

Часто родители обязаны провожать детей в школу и забирать обратно, ученики теперь как на привязи. А теперь что? Да неужели? Говорят, что времена другие стали. Вводится все больше и больше средств контроля и измерения уровня успеваемости: электронные дневники, экзамены нового типа. Спорю, какими были люди, такими по сути и остались, маньяков больше не стало, и волков бояться — в лес не ходить. Этим я хочу выразить свою точку зрения, что упор необходимо делать на то, как передать ученикам знания, а не проверить имеющиеся, и самое главное — привить им способность думать, критически мыслить и находить решения в нестандартных ситуациях. Но как говорит мой учитель физики Алексей Иннокентьевич, если ты с утра не положил копейку в карман, то, как ни крути, в обед у тебя ее там не окажется.

Да-да, вот приходит ко мне группа студентов-геологов, мне нужно учить их информатике, а уровень знаний у них у всех "как повезет", при этом очень трудно адаптировать курс. На деле я часто слышу от учителей о том, что ученики просто не хотят учиться, а от учеников — что иногда выпадают целые дисциплины, например, программирования в некоторых школах не было как такового. Понимают ли учителя свой предмет досконально, интересуются ли им искренне? Или, например, расхожее явление, что на уроках литературы ученикам снижают отметки лишь за то, что они не согласны с мнением учителя и отражают это в своих сочинениях. И неудивительно, если учесть, что старшее поколение учителей неизбежно уходит из жизни, а после распада СССР жизнь учителя стала скорее выживанием, в результате сильные абитуриенты просто обходили педагогические вузы стороной. Увы, не все. Разве можно заинтересовать ребенка чем-то, когда сам этим не "горишь"?

Захочешь ли тут учиться? А уж если говорить о том, что в школах иногда складываются нездоровые взаимоотношения как внутри класса, так и между учителем и учеником, так вообще грустно становится. Так как же быть, если тебе не фортануло, и денег на частную школу и репетиторов у твоих родителей нет? Многое зависит от того, в какую школу попадешь. По себе знаю, что для этих детей социализация может стать проблемой, например, сверстники завидуют им и не понимают их. А ведь часто именно в таких, самых обычных школах у нас учатся одаренные дети, олимпиадники. Как дать ребенку почувствовать пьянящий вкус познания, овладения новым материалом? А что, если таких детей у нас больше, чем кажется, но их таланты зарываются в землю, не очень-то плодородную? Поместить его в тот коллектив, где он будет чувствовать себя свободно и естественно, как рыба в воде, где он встретит единомышленников, друзей, свою любовь, наконец?

ЗПШ. Идея

Это Зимняя Пущинская Школа. Оказывается, есть остров, где мир знаний играет всеми красками, где уроки — это общение и сотворчество, куда ученики приезжают даже издалека и проводят там каникулы. Расположенная в небольшом городе Пущино, на берегу Оки и неподалеку от Серпухова, она существует с 1990-го года. Ах, знать бы мне о ней 15 лет назад! Одна из основных целей школы — дать возможность ученикам взглянуть на учебный процесс под другим углом, погрузить их в другую атмосферу, предоставить им самим выбирать то, что интересно. В конце марта прошел ее 28-ой сезон. ф.-м. Более 15 лет общее руководство проектом осуществлял Михаил Абрамович Ройтберг, д. К сожалению, прошлым летом он ушел из жизни, и сейчас руководство школы коллегиальное, в оргкомитет входят, в основном, ученые и преподаватели ВУЗов. н., заведующий лабораторией прикладной математики ИМПБ РАН, заведующий кафедрой алгоритмов и теории программирования ФИВТ МФТИ.

Более ста добровольцев, желающих зажечь школьников любовью к науке и к своему делу. Преподаватели — молодые учителя, студенты-энтузиасты, аспиранты, выпускники лучших университетов России. Без колебаний я решил использовать эту возможность рассказать о том, что интересно, актуально и чего не преподают ни в одной школе.

Cтруктура школы. Активности

Свобода как выбора темы курса, так и способа подачи материала не ограничена практически ничем, кроме размеров аудитории и наличием тех или иных технических средств. В ЗПШ, как в Хогвартсе, есть четыре департамента: точный, естественный, гуманитарный и психологический. Это время можно как угодно распределять на лекции и практикумы, мастер-классы. В каждый из пяти дней проходит три ленты курсов, по часу каждая. Этот формат идеально подходит для занятий искусством, тренингов, где создается творческая атмосфера. А вечером проходят студии. Каждый курс должен иметь некий итог, который его участники представляют в виде плаката на конференции в конце недели. На ЗПШ можно, к примеру, провести как курс по ядерной физике, так и студию по изготовлению оригами-цветов или игре на укулеле. А потому важно продумать план занятий так, чтобы было логическое завершение и видимый результат.

преподавателя, нужно примерно за месяц, указав, по возможности, два варианта названия курса — стандартное и поэтическое. Регистрироваться в школе в качестве сотрудника, т.е. Еще каждый курс должен иметь аннотацию, которая печатается в буклете, и афишу. Есть возможность выбрать, на учащихся каких классов рассчитан курс, и ограничить размер аудитории слушателей. После завершения регистрации новые сотрудники приезжают в гимназию «Интеллектуал», где делают небольшой доклад минут на десять о своем курсе. Быть при этом художником не обязательно, большинство преподавателей присылают изображения и наброски, которые организаторы доводят до ума. Оргкомитет принимает решение о проведении курса (как правило, положительное) и может дать рекомендации.

Всем сотрудникам компенсируется проезд и проживание в Пущино. Поскольку Школа чем-то напоминает лагерь, куда дети приезжают чуть более, чем на неделю, есть возможность быть вожатым. Было довольно тяжело: в 9 часов утра выдвигался, к полудню успевал на третью ленту, проводил занятие, обедал и возвращался в Москву, в офисе оказывался примерно в половине пятого. Мне приходилось ездить туда на автобусе 6 дней подряд, потому что работу никто не отменял. В следующем году, наверное, возьму отпуск, к тому же сам бы посетил некоторые курсы, особенно по психологии, а вставать в 5:30 утра к первой ленте — это просто убийство. Работал, сколько было сил, после полуночи возвращался домой и перед сном готовился к следующему занятию.

Мои первые впечатления. Место, атмосфера, люди

Воскресенье, утро, через заснеженные поля и лес автобус приносит меня в Пущино. Да, это длится всего неделю, но заряда, который там получаешь, хватает надолго. В здании из красного кирпича, раскинувшемся буквой «П», все были приглашены в Красный зал на торжественное открытие Школы. Гимназия расположена на въезде в город, в микрорайоне с загадочным названием «АБ». Только на этот раз я был в другом качестве, когда не нужно решать задачи и соревноваться. Когда я там оказался, взглянул на лица людей вокруг, на меня накатила ностальгия: я вспомнил, как ездил на олимпиады по математике и физике.

В коридорах повсюду были развешаны афиши, занятия проводились везде: не только в кабинетах, но и в рекреациях. Теперь главная задача — заинтересовать ребят, потому что в воскресенье проходит представление курсов. Формализм был сведен к минимуму, всё было направлено на то, чтобы дать волю фантазии и никак не ограничивать в творчестве ни учеников, ни сотрудников. Вообще, атмосфера, которая царит в ЗПШ, пропитана добротой, заботой и доверием. Например, эта белка стала не только всеобщей любимицей, но и… полноправной участницей Школы.

На первом этаже рядом со штабом было оборудовано «Африканское кафе», где всегда можно было выпить чаю, кофе и полакомиться фруктами.

В конце дня ученики делают свой выбор. Три раза ровно по 10 минут ты рассказываешь о курсе. Курсы по анализу данных и нейросетям, как я посмотрел, оказались популярнее, а ко мне на информационный поиск записалось 6 человек. Всего около 200-300 школьников выбирают для себя по 3 курса из нескольких десятков. Боялся, что будет меньше. Надо сказать, это хорошо: не слишком мало, и не слишком много, удобно вести диалог.

Кстати, сам план построения курсов повторяет работу ученого, которая совмещает исследования и общение на конференциях, публикацию полученных результатов. Жемчужиной ЗПШ являются лекции так называемых мамонтов — крупных ученых, которые посещают Школу и вселяют интерес к науке.

Мне достался кабинет русской словесности. Одна из проблем ЗПШ — нехватка компьютерных классов. Ноутбуки были не у всех, и я брал с собой два: с одного — показывал презентацию, другой — отдавал для практикумов. Проектор нашелся, WiFi в том месте ловил так-сяк, пришлось использовать мобильный.

Дни занятий. Как выстроился курс инфопоиска: темы, учебный процесс

Я убежден, что в школах не хватает наставничества, личного участия и глубокого погружения в учебный процесс. Итак, я поставил перед собой задачу создать курс информационного поиска, который будет одновременно интересным, доступным и интерактивным. И ни в коем случае курс не должен походить на нудное выступление партийного чиновника на съезде КПСС. Мне хотелось, чтобы курс был похож на увлекательное путешествие, куда я поведу ребят, зная все тропы, как опытный лесничий. Значит, одними лекциями тут не отделаешься.

В большинстве своем они хорошо знали Python и хотели — если не страстно желали — писать код. На первом занятии я сразу же понял настроения ребят. Такое желание заразительно, и я решил, что не создать поисковик по итогам курса — значит сдаться. Более того, всем хотелось написать целый поисковик, пусть и маленький. Встала большая проблема: времени всего 5 часов плюс еще какое-то время в пятницу, которое отводится на подготовку к конференции. А сдаться — это не про нас, мы не из таких! И поскольку написать проект с нуля за такое время практически невозможно, я решил принести заготовки и отдельные части, в которых следовало разобраться, доработать их и собрать воедино. Поэтому я решил рассказать сначала о тех частях, без которых поисковая система немыслима, и попутно писать код, а там — как пойдет. Это уже посильная задача.

Материалы, по которым можно было быстро и легко подготовиться, я позаимствовал у своих коллег, за что им большое спасибо. Так вышло, что в курсе было две лекции, три смешанных занятия и хакатон. Еще удобно то, что любопытных и интересующихся можно отправлять на наш канал Технострим, где все те же темы освещены подробнее.

Ко второму занятию я ночью набросал какой-никакой, а краулер, запустил его и выкачал 2000 страниц с портала lenta.ru. На первом занятии я рассказал об общей архитектуре поисковых систем, о проблемах, с которыми мы сталкиваемся, и как их решаем. Мы вместе выявили недочеты, которые я физически не успел устранить (спать когда-то надо), и на третий день мне принесли дополненную версию, уже на Python 3. Сначала рассказал ребятам о том, как устроен паук, а в конце занятия дал им заготовленный код. Конечно же, нельзя обойтись без анализатора запроса и индекса, и, как бы это ни было трудоемко, разобраться в методах бинарного представления индекса и словаря. О приоритезации краулера я упомянул только в том духе, что она есть и базируется на кликовой информации. Это вошло в курс и стало темой третьего и четвертого занятия.

К этому времени парни уже запилили красивый веб-интерфейс для поисковика, который только и ждал, пока его прикрутят к бэкенду. Насколько успели, разобрали код индексатора. На последнем занятии по просьбам радиослушателей я рассказывал о методах поиска дубликатов. На четвертый день после занятия мы с Даней (один из моих учеников) нарисовали эмблему курса. А с алгоритмом Бродера проблем не возникло, потому что на курсе по обработке больших объемов данных объяснили, как работает MapReduce. Ребята узнали, что такое шинглы, как работает алгоритм Minshingle. И под конец — небольшой хакатон, где мы настроили индексатор на те данные, что нам навыкачивал краулер, и самым топорным способом реализовали генерацию сниппетов.

Это был успех! Часам к шести вечера все критические баги пофиксили, web-интерфейс прикрутили, и на конференцию вышли с каким-никаким, а работающим поисковиком. На следующий день спокойно отсыпался, будучи уверенным, что мои ученики обязательно справятся. Страшно уставший, но счастливый, я поехал в Москву.

Герои курса. Пара слов от меня, интервью с ребятами: Даня Горлов, Артем Брустовецкий, Катя Хватова

"If we can't get it all, then nobody will." А как же им-то — и не втащить?

А выучил я, ни много ни мало, пять групп геологов-горючников в МГУ. Такой энергии, неукротимого энтузиазма, такого сияния талантов я не видел еще ни в одной аудитории, где мне доводилось ранее преподавать. Здесь мне хочется сказать многое, и я сталкиваюсь с той трудностью, что можно точно передать мысль словами, но чувства не всегда поддаются. Как виделось с моей стороны, занятия были похожи на диалог, а если внимание и рассеивалось, то это означало, что все смотрят в код. Заняться тебе, что ли, больше нечем? Отец спросил меня в воскресенье: «И вот не лень тебе было мотаться каждый день за сто километров? Когда диссер, наконец, напишешь?»

Глядя на вас, самому вдвойне хочется развиваться, двигаться вперед и вверх. Ради вас, мои ученики, — не лень, пусть даже было бы не сто километров, а все двести. И мне было очень приятно под конец узнать, что курс понравился и получился удачным. Всегда буду рад пообщаться.

Кто же они — мои ученики?

Даниил Горлов

Обнинска, интересуется web-программированием, IT в целом и технологиями информационного поиска в частности. Учится в 7-ом классе школы-пансиона «Дубравушка» г. Система умеет считывать данные об уровне воды в баке, влажности и температуре воздуха, и осуществляет автоматический климат-контроль. И особенно — программированием микроконтроллеров, на базе которых он разработал систему управления теплицей через Интернет. Главной отличительной особенностью протокола является модульность и расширяемость. Еще один проект Дани — реализация сетевого протокола под Arduino, созданного в противовес HTTP, в том числе на низком уровне. В планах — освоить технологии обработки больших объемов данных, машинное обучение, deep learning. Его основной язык программирования — Python, в область интересов попадают фреймворк Flask, распределенные вычисления в парадигме MapReduce с помощью Hadoop. Уверен, у него получится. А затем создать операционную систему для нейроинтерфейса.

Артем Брустовецкий

Его выбор пал на курс по инфопоиску, поскольку эта дисциплина связана с web- и backend-разработкой, которыми он интересуется, а еще — потому что здесь была отличная возможность писать код. Ученик 11-го класса из Пущино, посещает ЗПШ уже шестой год подряд и безумно увлечен программированием. Самым лучшим и самым любимым языком программирования для Артема является Python, к написанию кода на нем он относится с особым тщанием и стремится довести его качество до совершенства. Опасения Артема по поводу понимания материала не оправдались, и под конец он научился программировать поисковые системы, чему был очень рад. Сейчас он создает игру на Unity, основной упор делает на реализацию серверной части и производительность при передаче данных. Больше всего Артему нравится сетевое программирование, многопоточность, сокеты и разработка игр. Одна из идей, которые ему хочется воплотить в жизнь, это преобразование Веба в децентрализованную систему, в которой каждый участник хранил бы свой кусочек данных. Планирует развиваться в таких отраслях, как машинное обучение, нейросети, и далее повышать свой уровень в web-разработке. Впечатления от Школы у Артема самые светлые, и всем школьникам он советует обязательно попасть сюда и погрузиться в эту неповторимую атмосферу.

А теперь дадим несколько слов Кате Хватовой, ученице 11-го класса из Москвы.

Выбрала этот курс, так как мне понравилась сама тема, я очень интересуюсь принципами работы поисковиков типа Поиска Mail.ru Для меня эти занятия были очень необычными и интересными за счет достаточной сложности. «Я оптимист по жизни, увлечения достаточно разнообразны, но основные — это биология и программирование. Несмотря на это, сами принципы работы мне стали понятны сразу, так как способ преподавания был очень удобен. Иногда было слишком сложно, ведь я пришла на курс, почти не зная языка. Я узнала очень многое — например, как можно давать более понятные для поисковика запросы, а это может очень помочь в будущем. Если смотреть со стороны, я была самым слабым программистом, но мне понравилось. Меня интересуют самые разные языки, но больше всего Java и C++, потому что в последнее время используются в основном они. У нас было достаточно мало практики, но мне это понравилось, ведь я больше хотела научиться не программированию (хотя и этому тоже), а самим принципам. Но, несмотря на это, в данный момент я использую Паскаль, на нем у меня есть несколько проектов. Также это одни из самых удобных языков. На самом деле я научилась всему, чему хотела, и очень радуюсь, что выбрала этот курс». Сам мир программирования очень разнообразен, для меня интересны отрасли, граничащие с биологией, например, нейросети и биоинформатика.

Итоги курса. Поисковик. Что получилось у ребят

А это, пусть небольшой и немного урезанный, но всё же работающий web-поисковик. И теперь настал самый торжественный момент: показать результаты того, что мы сделали в течение курса и еще двух недель после него. Вот его архитектура: Он сейчас развернут на сервере по адресу http://alphase.ru/, ссылка на исходники здесь.

Оранжевым — те, которые несут постоянную нагрузку и служат для обработки поисковых запросов в реальном времени. Зеленым цветом обозначены те компоненты, которые могут работать периодически для поддержания индекса в актуальном состоянии. Голубым цветом показана база web-документов, в нашей реализации они просто хранятся в файловой системе.

В настоящий момент получена небольшая коллекция веб-документов с портала habrahabr.ru. С одной стороны, краулер обходит Интернет-страницы, учитывая содержание файлов robots.txt и обрабатывая возможные ошибки протокола HTTP, скачивает их и сохраняет на диске. В результате остается только текстовый контент страниц без обвязки (header, footer), меню сайта и рекламы. Исходная HTML-разметка обрабатывается утилитой Boilerpipe, которая используется как внешняя система, «черный ящик». Для обнаружения дубликатов документов используется алгоритм Minshingle. Индексатор перед началом работы запускает утилиту удаления дубликатов, а затем обрабатывает текст документов и формирует индекс и словарь. Размер индекса на текущий момент небольшой, порядка нескольких десятков тысяч документов, но мало-помалу увеличивается за счет новых поступлений от краулера.

Оно передается серчеру, который обращается к словарю, находит в нем номера блоков, соответствующих всем термам в дереве. С другой стороны, на фронтенд поступает запрос от пользователя, он разбивается на отдельные слова — термы, и по ним строится дерево запроса. Для найденных документов генерируются сниппеты (в нашем случае — первые попавшиеся фрагменты документов, содержащие одно из ключевых слов запроса), определяются URLы — из этого, собственно, и состоит выдача. Далее серчер извлекает необходимые блоки из индекса и вычисляет пересечение множеств документов из каждого блока. Сам фронтенд был написан с использованием фреймворка Flask. Она передается фронтенду и отображается пользователю, который (мы надеемся) остается доволен результатом.

6, за исключением Boilerpipe, который использован в виде jar (Java-приложение). Все компоненты написаны на Python 3. В настоящий момент создается подсистема ранжирования результатов на основе простых текстовых признаков. Индекс и словарь представлены в бинарном виде для быстрого поиска в больших коллекциях.

В качестве небольшого дополнения мы добавили страницу с прогнозом погоды, которая обращается к публичным API для определения местоположения пользователя и загрузки актуальных данных о погоде для него.

И самое классное здесь вот что: оно работает!

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть