Введение в информационный поиск

Близится к завершению чтение моей старой мечты - книжки "Introduction to Information Retrieval" авторы которой Кристофер Д. Маннинг, Прабхакар Рагхаван, Хайнрих Шютце (ISBN 978-5-8459-1623-5, 978-0-5218-6571-5). Переведенная Яндексом на русский язык и вышедшая в издательстве "Вильямс" тиражом всего-лишь в 1000 экземпляров (!) и быстренько разошлась по коллекционерам и сотрудникам Яндекса (которых вообще больше 2500). Я даже нашел одного, у кого есть, но он сказал, что электронной версии нет, а заставлять фотать было бы неуважительно. По старой доброй Русской традиции PDF или любую другую электронную версию никто делать не собирался даже при таком "огромном" тираже. Соответственно найти ее было почти не реально, в отличии от оригинальной версии, которая всю жизнь была доступна на соответствующем сайте: http://nlp.stanford.edu/IR-book/. Стенфорд как-то никогда не парится по поводу своих материалов (чего только стоит их канал в iTunes U), в отличии от наших, которым либо хотелось побольше заработать, либо мало заплатили. В итоге поиски книжки затянулись аж на пол года, я даже писал запросы на хабр в Q&A, где мне сначала никто ничего не подсказал, только кто-то нашел на сайте bookmate.ru.

С bookmate вообще отдельная история, вроде бы заботящийся о своем имидже и набирающий популярность среди гик-сообщества ресурс, допустил фейл, тупо не проверив книжку перед публикацией (за денюжки, естественно). В итоге мне в качестве демо дали прочитать первые 10 страниц и, наивно поверив в свое счастье, я оплатил подписку на месяц. Каково же было мое удивление, когда после уплаты всех денюжек мне дали... еще 10 страниц. А остальные 600? Может я что-то сделал не так? Может дал мало? Написав запрос в саппорт, а через сутки и в твиттер, я наконец-то получил ответ, мол мы извиняемся, но ничего сделать не можем. Книжку быстренько удалили, а мне посоветовали "провести оплаченное время с пользой" и почитать какую-нибудь "Анну Каренину". Хотя в моей ситуации "12 стульев" или "Золотой теленок" подошли бы куда лучше. В итоге денюжки я заплатил, а ресурс больше не посещал. Типовой пример бизнеса в этой стране, в Сколково их возьмут точно.

Шучу, говорят хороший сервис, это мне долбоебу как обычно не везет :(

Через месяц я получил ответ от кого-то близкого к издательству, мол сейчас допечатаем и можете купить на озоне, но с тех пор прошло еще 2 месяца, а воз и ныне там. На мое удивление однажды один из хабраюзеров написал мне в личку, что у него книжка эта имеется и он может сфотать мне страницы. Ну чтож, на безрыбье и рак рыба, будем читать по фоткам. Прозвучало предложение даже сделать из этого электронную версию, однако увидев качество и количество фоток я как-то замялся. Почти каждую страницу нужно было кропать, переворачивать, изменять перспективу (листы кривые), удалять пальцы фотографа, оптимизировать, а некоторые даже разрезать на две, и то это бы не решило проблем с читаемостью некоторых фрагментов из-за дефокуса. Просто залил их на iPad и читал с экрана, благо быстрый зум и скорость работы iBooks это позволяли.

В общем о самой книжке. Книжка, действительно, не для всех. Далеко не для всех. Ближе к середине книги концентрация матана на страницу текста начинает догонять учебник по квантовой физике, а небольшой размер самой книги (меньше 600 страниц) еще более усугубляет положение. "Просто так" читать не советую, только самым упоротым идеей информационного поиска.

А сама книжка шикарна. Такие действительно очень редки. Книжек по поисковикам вообще мало и их очень сложно найти, среди гор SEO-литературы, а те, что можно найти, в итоге от банальщин типа "формулируйте запросы правильно" и "прописывайте метатеги" скатываются в то же сраное SEO и читать становится противно. Это первая действительно инсайдерская книжка про поиск, которую я читал. В "Коллективном разуме", о котором я писал пол года назад, тоже есть небольшая глава, посвещенная поиску, я даже специально перечитал ее, но об этом позже. "Введение в информационный поиск" действительно глубоко описывает работу поисковиков как математических систем. Она описывает именно важные основы типа векторных пространств, стемминга, языковых моделей и всего остального. Естественно, каждая большая тема преисполнена матаном и читается не так уж и легко, если вдумываться.

Но есть и минусы. Например из-за небольшого объема книги и большого объема информации в ней, она показалась мне действительно всего-лишь "введением". Каждая глава лишь поверхностно описывает свою тему, приводит несколько теорем и моделей, а затем обрывается на "библиографии и рекомендациях по дальнейшему чтению". Тут я по своей наивности ожидал большего. При этом в некоторых главах таки даются псевдокоды (кстати в стиле Кормена и Седжвика), но простейших алгоритмов типа пересечения множеств. Не так сильно, но все же остается осадок "статей на хабре", когда автор подробно описывает то, в чем он осилил разобраться, а на сложный материал просто забивает, приводя пару определений и ссылаясь на более "умные" работы. Например так выглядит любая статья про сортировки. Но это уже сугубо субъективное мнение, оно и понятно, что за 600 страниц никто не сделает из вас эксперта по информационному поиску, а только даст направление куда дальше развиваться. И именно ссылки на библиографии являются самым ценным там.

Однако в темы вгрызаются действительно глубоко, некоторые я даже не осиливал с первого раза и приходилось перечитывать всю главу (например про использование векторных пространств я до сих пор планирую перечитать еще раз). "Коллективный разум" кажется просто методичкой по сравнению с этой кладезью теоретических сведений. Действительно, в "Коллективном разуме" дается достаточно мало теории и очень много кода, иногда даже без объяснений что конкретно делается. Мол, вот это паук, а вот эта функция выполняет поиск по индексу, а вот это рисунок нейронной сети. Как, где, куда? Сабж же наоборот, углубляется в теорию и вывод формул из наивного Байесовского классификатора без привязки к коду и как его конкретно применить к задаче (особенно эти грешат главы ближе к концу). Первая книжка явно написана для кодеров, а вторая для математиков. Золотой середины снова не найдено. Чтож, будем искать что-то еще по теме информационного поиска, ибо сам очень заинтересован.

Но сама книжка очень неплоха для тех, кому это действительно интересно. Очень рад, что нашел ее и прочитал. Довольно много интересных вещей вынес даже после первого прочтения и как программист, и как математик. Однако зная сколько много внезапно появляется людей старшего школьного возраста у меня в твиттере, читающих книжки за мной, я еще раз оговорюсь, что не советую ее читать всем и каждому. Про SEO тут нет, про PHP/Python тут нет, про программирование тут нет.

kuzon — 06.08.2011 - 18:47 [91.76.26.32] Windows
А практическую пользу из книги можно извлечь ?
SolidlSnake — 06.08.2011 - 19:02 [94.103.230.252] Windows
А почему ссылочку на фотографии не оставил?
V@s3K — 06.08.2011 - 19:04 [178.49.15.6] Linux
kuzon, смотря какую пользу считать практической. Но если грубо: нет, прочитав ее поисковик вы не напишете. Понадобятся уже прикладные знания. Ведро с первоклассными гайками вам дадут, но вот как из них собрать машину уже придется учиться где-то еще. Хотя с другой стороны без гаек машину тоже не собрать :)

SolidlSnake, там сильно дохуя, да и никому не надо оно.
SolidlSnake — 06.08.2011 - 19:05 [94.103.230.252] Windows
V@s3K, как минимум, может быть какой-нибудь хороший человек решится сделать PDF-файл.
А как максимум, я думаю найдется достаточно желающих почитать. :)
V@s3K — 06.08.2011 - 19:08 [178.49.15.6] Linux
SolidlSnake, PDF из этого собирать - это курам на смех. Все страницы кривые-косые, некоторые нечитаемы, где-то пальцы закрывают текст. Желающих всегда много находится, если кому-то уж очень приспичит, попросит лично для себя, контакты на главной все написаны. Но приспичит единицам. Всем не рекомендую.
SolidlSnake — 06.08.2011 - 19:09 [94.103.230.252] Windows
Это мы уже поняли из текста, ты это выделил столько раз, что я со счета сбился. :)
ReDetection — 06.08.2011 - 20:29 [89.189.191.13] Linux
Теперь тебя возьмут в яндекс!
V@s3K — 06.08.2011 - 20:58 [178.49.15.6] Mac OS
ReDetection, неа, я пока говно. Не возьмут. Но я буду стараться.
kuzon — 06.08.2011 - 22:30 [91.76.26.32] Windows
V@s3K, ясно. Почитав твой блог, я понял ( что для себя, не для заказов понятное дело ) ты перешел с РНР на питон-джанго, а затем уже на пайлонс ( который вроде написан по образу и подобию РоРа). А сам РОР смотрел ? Интересно твоё мнение
V@s3K — 06.08.2011 - 22:40 [178.49.15.6] Mac OS
kuzon, RoR не смотрел, но одобряю.

> для себя, не для заказов понятное дело
Почему это? Уже год точно у меня все заказы на Python.

И не, Pylons совсем не похож на RoR. Django похож, но Pylons - более низкий уровень.
kuzon — 07.08.2011 - 00:05 [91.76.26.32] Windows
> Почему это? Уже год точно у меня все заказы на Python.

Прикольно, времена значит таки меняются ))) Ну что ж это здорово конечно. А пайлонс да, посмотрев доки стало ясно - более низкий уровень и все плюсы минусы вытекающие из этого ( больше гибкости, лучше производительность и т.д - но при этом куда более высокий порог вхождения ). Ну тогда для меня, как для не опытного веб разработчика, которому надоел РНР и хочется для себя освоить что ни будь поприятнее, действительно пожалуй лучше РоРа не найти ( тем более есть уже несколько переводов док, что вполне неплохо ). Да и с MongoDB РоР вроде дружит, даже более того, для монго вроде выпустили уже ОРМ, и работать с ним также удобно, как и с роровским ОРМ по умолчанию. Неплохо, посмотрим, осилю лю

P.S. Твой блог написан на Pylons + Mongo ?
V@s3K — 07.08.2011 - 00:14 [178.49.15.6] Mac OS
> блог написан на Pylons + Mongo ?
Ага.

> более высокий порог вхождения
Ну это уже фреймворк для тех кому надо или на месте не сидится. Django хватает всем новичкам. Остальное приходит со временем. Вот щас пишу на werkzeug, там вообще просто надстройка над голым WSGI. Нравится :3

> Да и с MongoDB РоР вроде дружит
Да все они как-то "дружат", только все равно такое впечатление, что для галочки писали. Может у RoR получше, не знаю.

> не опытного веб разработчика, которому надоел РНР
ПОХАПЕШНИК, НАЛЕТАЙ!
kuzon — 07.08.2011 - 22:29 [91.76.34.27] Windows
Ну это уже фреймворк для тех кому надо или на месте не сидится. Django хватает всем новичкам. Остальное приходит со временем. Вот щас пишу на werkzeug, там вообще просто надстройка над голым WSGI. Нравится :3

А зачем такие выкрутасы ? ))

Да все они как-то "дружат", только все равно такое впечатление, что для галочки писали. Может у RoR получше, не знаю.
Жаль РоР не на питоне написан ))) Как язык мне питон больше чем руби нравится, но на питоне нет РоРа )) А джанго все таки не так понравилась. Очень забавное ты сравнение ей дал - куча негров с цепями, которые говорят что нельзя делать.
V@s3K — 07.08.2011 - 22:45 [178.49.15.6] Mac OS
> А зачем такие выкрутасы ? ))
Ну как приспичит - поймешь. Когда мне надо простой API накидать со своей БД (той же монго), мне смысла нет тащить за собой весь django с его миддлварями, я могу с нуля все написать. Например там простой запрос-ответ в JSON для какой-нибудь клиентской аппликухи. Поэтому и быстрее работает, потому что прослоек меньше.

И ставь значек ">" перед цитированием :(
kuzon — 07.08.2011 - 22:55 [91.76.34.27] Windows
Ясно. А как устроены связи в NOSQL решениях, например в той же монго ? Если скажем разобрать простейший пример - новости - категории . Для sql все ясно, это либо связь один ко многим при помощи внешнего ключа ( у каждой новости 1 категория, у категории много новостей ) , либо более сложная многие ко многим, у каждой новости много категорий, у категорий много новостей, делается через промежуточную 3-ю таблицу. А как реализовать подобную штуку на монго ?
V@s3K — 07.08.2011 - 23:04 [178.49.15.6] Mac OS
kuzon, почитай где-нибудь про матчасть. Может даже я ссылки давал по которым учился в посте про монго. Несколько способов есть, в том числе relations тоже в монге есть. Но я не юзал, я делал простой список ID-шников категорий и все. Мне так проще было. Там же простой JSON, делай как удобно.
V@s3K — 07.08.2011 - 23:07 [178.49.15.6] Mac OS
Нет, даже не так, я делал список пар типа id-name и все. Таблица категорий вообще никак не привязана и используется редко. Мне редко надо удалять категории, но часто получать список, так что это ниибаться быстро и без лишних запросов. Каждое решение должно быть таким, какое в твоем случае быстрее, тут нет одного рецепта на всех как в SQL. Это и называется гибкость. И приходится включать мозг.
kuzon — 07.08.2011 - 23:18 [91.76.34.27] Windows
Прикольно. Надо будет посмотреть на этот ОРМ для монго. Как вообще для носкл может быть ОРМ, вот что забавно ))
kuzon — 09.08.2011 - 17:58 [91.76.19.188] Windows
А почему все так любят системы управления версиями ? Ща решил поучавствовать в разработка одного проекта на Роре ( для набивки руки ). Так первым делом меня заставил учить гит ( и соотвественно линукс ставить ). Неужели без гита нет жизни ( или аналогии вроде субреверсии ) ?
werehuman — 10.08.2011 - 14:41 [178.49.21.200] Windows
> А почему все так любят системы управления версиями ? Ща решил поучавствовать в разработка одного проекта на Роре ( для набивки руки ). Так первым делом меня заставил учить гит ( и соотвественно линукс ставить ). Неужели без гита нет жизни ( или аналогии вроде субреверсии ) ?
Не просто любят - без них вообще невозможно работать. И вообще правильно тебя учат.
kuzon — 10.08.2011 - 18:05 [91.76.0.133] Windows
Ну если учат правильно то хорошо ))) Еще интересно, что они не юзают стандарный ОРМ RoR"а, а юзают ОРМ для монго http://mongoid.org/ . Я исходники посмотрел клонированного проекта. В принципе тоже самое в моделях, да и в контроллерах тот же, различий почти нету.

А линукс меня потряс. Поставил убунту себе в виртуалку последнию. Как все удобно и по человечески... Но больше всего потрясла скорость инета. У меня заявлено 3 мегабита, на винде максимум получается 280 килобит в секунду скорости, на линуксе - 330-340 )))
V@s3K — 10.08.2011 - 21:21 [178.49.15.6] Mac OS
> потрясла скорость инета
У нас байты круглые, по каналам быстрее летят.

> максимум получается 280 килобит в секунду
Это килобайты :(
ReDetection — 11.08.2011 - 06:50 [89.189.191.13] Linux
Sad story, bro
kuzon — 12.08.2011 - 02:42 [91.76.27.68] Windows
Ага килобайты, опечатался. А на РНР ты программишь еще, или вообще забил ?
V@s3K — 12.08.2011 - 11:22 [178.49.15.6] Mac OS
kuzon, вообще забил
JasonX — 12.08.2011 - 18:58 [89.189.191.12] Windows
kuzon, ставь генту, там байты ещё круглее ))
kuzon — 12.08.2011 - 19:28 [91.76.27.68] Windows
Ну брать ось ради килобайт смешно.
Bright — 01.09.2011 - 23:55 [213.210.93.214] Windows
Судя по сайту букс.ру, у книжки вышел дополнительный тираж: http://old.books.ru/shop/books/806535
refresh

(не заполняйте это поле)

i