ГОЛУБЯТНЯ: Разные рыцари без страха и упрека

   Развеивая домыслы о структурном окостенении колонки, решительно ломаю сложившуюся традицию и наперед увертюры из культур-повидла анонсирую изумительную софтину — PlacesBar Editor. Пусть не смутит вас безграмотное название утилиты[По-хорошему, надо бы PlaceBar, а не PlacesBar] (все-таки ваял ее хацкер-шмацкер без роду и племени по кличке Matt Ginzton, он же MaDdoG Software): польза от PlacesBar Editor огромна, хотя навскидку программулина и делает-то всего ничего — настраивает панель шорткатов в стандартном диалоговом окне сохранения файлов.
   Помните эти бессмысленные картинки, оттяпывающие весь левый кусок диалогового окна File-Save (рис. 1)? Эти дурацкие «Недавние документы», «Рабочий стол», «Мои документы», «Мой компьютер» и «Сетевое окружение», которыми ни один здравомыслящий человек никогда не пользуется? Почему не пользуется? Да потому, что микрософтовская идея хранить пользовательские данные вперемешку с системными файлами на диске С изначально бредовая, ибо компрометирует сам принцип информационной безопасности. Случись чего (а это «чего» с Форточками случается регулярно), и порушившийся системный диск тащит за собой в могилу все ваши файлы, запрятанные в непредсказуемых поддиректориях на идиотской глубине (типа C:\Documents and Settings\User\Мои документы\Мои рисунки). По этой причине умные люди давным-давно хранят котлеты отдельно от тараканов: системные файлы — на диске С, пользовательскую информацию — на диске D (или какая там у вас следующая буква). Вот и получается, что шорткаты, намертво вмонтированные в диалоговое окно сохранения файлов аки аппендицит: пользы никакой, спасибо, что хоть не болит.
   Хакерская утилита PlacesBar Editor ставит точку в маразматической ситуации, позволяя заменять микрософтовские шорткаты линками на реальные места, где вы храните свою информацию. Скажем, на моих компьютерах бинарная руда, загружаемая из Интернета, поступает в папку D:\Incoming, общие документы обитают в папке D:\Docs, изображения — в D:\Arts, книги — в D:\Books и т. д. Единственная горькая пилюля: PlacesBar Editor не может изменить стандартные шорткаты диалогового окна сохранения файлов в пакете MS Office. Но тут уж ничего не попишешь: бастион врага глубоко эшелонирован, и, допустив прорыв на рубеже ОС, редмондский монстр тут же подстраховался, укрепив API своих офисных приложений (рис. 2, 3).
   В контексте обнаружения замечательнейшей PlacesBar Editor — мой искренний книксен Капитану Немо, чей сайт не так давно из скучного бакунианского портала превратился в цветущую греческую агору, где непрерывно вершится информационный обмен между десятками тысяч пользователей. Надо сказать, что прогрессивная идея кооперативного блога получила сегодня энергичное развитие на всех изысканных бакунианских площадках: у моего любимца Avax’а, набирающих обороты Medigo и Netz, аксакала NoName и помянутого выше Капитана Немо.
   Кооперативный блог — это движок сайта, позволяющий всем зарегистрированным пользователям вести открытый дневник и делиться с общественностью своими маленькими радостями: текстом прочитанной книги, рипом DVD-фильма, понравившимся MP3-альбомом и, конечно же, софтиной. Формат кооперативного блога стандартизирован: сначала идет пост участника агоры, в котором он (участник) подсознательно реализует ленинский принцип отражения[Тот, что про амебы и надписи «Здесь был Вася» на памятниках, охраняемых государством], затем — плата за право покрасоваться на трибуне в форме линка на умыкнутый информационный продукт, под занавес — комментарии благодарной публики типа: «Спасибо, крутой чувак, за полезную прогу!». Интересно наблюдать, как информационный обмен, изначально ограниченный варезом, все чаще и чаще замещается широкопрофильной дискуссией на общественно-культурные темы. Соответственно доля анонсов книг, музыки и кинофильмов в бакунианских кооперативных блогах сегодня на голову превышает анонсы новых компьютерных программ.
   Как бы то ни было, перед нами отличная инициатива по высвобождению и канализации энергии широких народных масс — chapeau![(фр.) Снимаю шляпу!] Особенно приятно, что на фоне этой искрящейся жизнью агоры тоскливые официальные софтоотстойники, закостеневшие от радикулитно-затяжного пребывания в услужливой позе «зю», смотрятся мучительным анахронизмом.
   Выхожу из книксена: информацию о PlacesBar Editor я почерпнул из поста Berdzeni на кооперативном блоге Капитана Немо, за что ему теплое merci от имени сотен тысяч читателей «Голубятни».
   Теперь с чистой совестью перехожу к непременному культур-повидлу! В одном из кинобезумств Монти Питона (то ли в «Св. Граале», то ли в «Смысле жизни») был такой эпизод: рыцарь без страха и упрека, защищая никому не нужный мост на лесной опушке, подвергается нападению и по ходу битвы ему отрубают левую руку. Миг замешательства — и яростный бой продолжается! Очередной взмах меча — и правой руки рыцаря как не бывало! Доблестный воин, однако, продолжает невозмутимо напирать грудью. Ему отрубают ногу — он скачет на другой. Лишившись, наконец, последней конечности, рыцарь отключается — не столько в изнеможении, сколько в недоумении.
   Если сублимировать средневековую кровожадность в гуманитарные реалии нашего просвещенного века, гэг Монти Питона идеально ложится на описание моего сегодняшнего дня. Все началось с того, что утром из-за дождя отключили электричество. Есть такая трогательная на Украине традиция — заботливо вырубать свет в сельской местности с первым раскатом грома. Оно и понятно: мандариновая доля пробрала население по самый рахунок[Вообще-то «рахунок» по-украински — это «счет» (надо так понимать, от немецкого Rechnung), но уж больно слово для русского уха выразительное!] — хатки-дачки пообтрухались, крыши прохудились, не ровен час разверзшиеся хляби небесные закоротят электропроводку! Короче говоря, света нет, а мне, значит, писать «Голубятню». Чешуя вопрос! Два с половиной часа беззаботно сажаю аккумулятор «Тошибы», надеясь, что электричество включат. Не включили. Ноутбук сдох. Так я ж упорный. Запускаю HP 4700, подсоединяю синезубую клавиатуру, работаю дальше. Через полчаса сдыхают аккумуляторы клавиатуры. Лезу в гараж под домом, подсоединяю HP 4700 к прикуривателю, тычу стилусом в экран, но через пять минут зарекаюсь: оказывается, творчество — процесс настолько своеобразный, что в гамаке и стоя — не получается. Либо стилус, либо идеи. А электричества все нет.
   «Ну что ж, — думаю, — значит, не судьба. Потестирую-ка лучше одну программку, а потом книжку почитаю». Как программка называется — не скажу: я ж не фашист какой отравитель. Ограничусь описанием: утилита позволяет (якобы) переносить DLL приложений из папки Windows, расположенной, как известно, в бесценной оперативной памяти наладонника, в другое место — например, в постоянную память (iPAQ File Store). Потестировал я, значит, перенес, после чего сразу же перестали запускаться все жизненно важные приложения — и Pocket Informant, и Pocket Breeze. Плюнул, удалил утилиту (будь она неладна!), вернул ручками DLL’ки обратно в папку Windows. 4700 ушел в глубокий ресет, перегрузился, открыл экран Today и … тут же снова ушел в ресет. Далее — по кругу до бесконечности. «Похоже, почитать тоже не получится», — осознал я глубину трагедии: ведь бэкап, необходимый для оживления наладонника, хранится на ноутбуке, а ноутбук, как вы понимаете, сдох. А электричества все нет.
   Тут я вспомнил, что все началось с «Голубятни», которую таки нужно написать, причем сегодня. Отправился клянчить тетрадку или альбом для рисования у сына. Сережка добрый, он мне даже фломастер дал. Сел я, значит, писать и… понял, что не занимался подобным рукоблудием лет десять! До того отвык, что уже и не знаю, как перо зажимать — в кулаке или между пальцами? Если между пальцами, то — какими? Короче, просидел над чистым листом бумаги еще три часа с перерывами — на пообедать, стрескать дыню и попить чаю. А тут как раз свет дали! Помчался на радостях восстанавливать наладонник. Пока восстанавливал, день трудовой и закончился. А результаты хреновые: ни мост не защитил, ни «Голубятню» не написал. Сижу вот сейчас, хорошо за полночь, со слипшимися глазами — ваяю нетленку.
   Теперь хочу отчитаться о более чем месячной работе с неограниченным тарифным планом «Киевстара». Как я и предполагал, сигнал «Киевстара» оказался гораздо мощнее, чем у UMC: даже на богом и цивилизацией забытом крымском мысе Тарханкут связь не прерывалась ни на мгновение. Если серьезно, то коммуникационное удобство неограниченной мобильной связи уникально. В первую очередь благодаря возможности почти дармового международного общения. Делается это с помощью старой доброй IP-телефонии от российской компании «Тарио». Вот каким образом.
   Оказывается, у «Тарио» есть два входных шлюза на Украине: в Одессе и Запорожье. С одесским шлюзом (+380 (48) 777-11-77, 234-80-34 730-91-06) я работал еще в прошлом году, однако впечатлился не очень: по вечерам дозвониться трудно, автоматические сервисные опции отключены. Будучи в Крыму, случайно обнаружил шлюз в Запорожье (+380 (612) 13-50-58 13-50-57) с мгновенным дозвоном и полноценной сервисной поддержкой, ну и зажил на широкую ногу. Прелесть в том, что неограниченный тариф «Киевстара» позволяет бесплатно звонить в любой город Украины, а тарифы международной связи по IP-каналу давно греют душу: 5—9 центов за минуту — меньше, чем местные звонки по мобильной бесконтрактной связи.
   Что касается карточек «Тарио», то здесь три варианта: заблаговременно привезти с собой из России (в Москве они продаются в каждом газетном киоске), либо купить в Одессе партнерский скретч от компании «Дельта», либо — самый оптимальный вариант — отовариться в онлайн-магазине Plati.ru, аффилированном с WebMoney.
   Месяц работы с киевстаровским GPRS тоже оставил наилучшие воспоминания. Конечно, трехсот мегабайт не хватило и пришлось перебирать еще столько же трафика. Для этого воспользовался, как и было запланировано, бесплатным и неограниченным трафиком GSM-Data, который хоть и медленно (9600 бит/с), но верно заливал за ночь 20—25 мегабайт информационной пищи. Скорость киевстаровского GPRS на образцовой высоте — скриншот говорит сам за себя (рис. 4).
   По доброй традиции — ложка дегтя: помните правило «6 к 1» (из шести попыток соединения пять непременно срываются)? Опыт показал, что в часы пик (после шести вечера) оно плавно трансформируется в «15 к 1», а то и «20 к 1». Зато по утрам летает аки «Стрим».
   Мораль: неограниченный тарифный план «Киевстара» на сегодняшний день — абсолютно лучшее решение мобильных коммуникационных задач на украинских незалежностях. Поглядим, каков будет ответ UMC в следующем году!
   Линки, помянутые в «Голубятне», вы найдете на домашней странице internettrading.net/guru.

ТЕХНОЛОГИИ: Гадания на поисковых образах

   В редакции «КТ» стоит огромный шкаф, две полки которого отведены под подшивки журнала за несколько лет. Если распечатать в том же формате содержимое сайта «КТ», то потребуется уже три шкафа. По оценке Nigma.ru, в Интернете хранится больше 1 млрд. русскоязычных документов (оценка очень приблизительная, но других — более точных — извините, нет). Если предположить, что каждый документ содержит в среднем 5 килобайт текста, то для их офлайнового хранения потребовалось бы 17500 шкафов, для размещения которых необходимо помещение, чья суммарная площадь примерно равна площади двух футбольных полей. Причем практически сразу же нам потребовалось бы еще одно футбольное поле — для новых документов, которые ежедневно появляются тысячами.
   Разумеется, ориентироваться в миллиардах документов без поисковых сервисов невозможно. Но так ли хороши современные средства поиска в текстовых документах и нельзя ли их радикально улучшить?
   Прежде чем попытаться ответить на этот вопрос, давайте определимся, что же нужно пользователю поискового сервиса и что могут ему предложить современные поисковые системы. В обоих случаях речь идет об информации, но информация — это сложное понятие, и очевидно, что пользователи и поисковые системы понимают под информацией несколько разные вещи. Собственно говоря, предполагать, что всем пользователям нужно примерно одно и то же, также неверно. Одним требуется фактологическая информация, другим — описания реальных процессов (информационные образы), третьим — метаинформация, а четвертым, наоборот, нужно удостовериться в отсутствии тех или иных данных (например, при проверке изобретения на новизну).
   Поисковая система работает с материальными носителями информационных образов — документами, оценивая каждый из них согласно качеству содержащейся в нем информации. Разумеется, оценка эта производится динамически — говорить о ценности информации вне контекста информационного запроса бессмысленно. Так, для механика, который ищет схему нужного узла, не имеет никакой ценности информация о правлении Карла I, тогда как историку совершенно не нужны необходимые механику схемы.
   Качество работы поисковой системы напрямую зависит от качества основных моделей, положенных в основу поисковых алгоритмов (технических нюансов, связанных с работой серверов, активностью роботов и т. д., мы касаться не будем). Структура документа, в общем случае, крайне неоднородна и сложна. Это может навести на мысль, что и модель документа тоже является, скажем так, непростой. На самом деле, в существующих поисковых системах используются предельно упрощенные модели документа. Максимально простой в системном анализе является модель «черного ящика», то есть автономной системы, обособленной от внешней среды, с входами и выходами. В нашем случае на входе — текст, на выходе — список всех слов текста, не входящих в стоп-лист. Вот и вся модель. Понятно, что и функциональные потенции такого модельного описания тоже достаточно ограничены.
   Объект, в который воплощена модель документа, называется поисковым образом документа. Для модели «черного» ящика — это тот же список ключевых слов, или вектор, если использовать понятия векторной алгебры. Размерность такого вектора, естественно, совпадает с числом ключевых слов (терминов), представляющих документ. Если значимость разных терминов считается различной, то им приписываются соответствующие веса. Принцип здесь простой: чем большей считается значимость термина, тем больший вес ему приписывается. Само же вычисление веса опирается на достаточно произвольные эмпирические конструкции, выбор которых остается за разработчиком. Как строится поисковый индекс, когда документ моделируется «черным ящиком», в общем-то очевидно: каждому документу, до которого может «дотянуться» сервис, ставится в соответствие его поисковый образ. Полученное таким образом множество векторов вместе с адресной информацией и составляют основу индекса поисковой системы.
   Назначение модели запроса — учесть интересы пользователя, который и является источником входных данных для этой модели. Выходные данные должны допускать возможность непосредственного обращения к индексному файлу, то есть в нашем случае это список терминов, экстрагированных из запроса. Пользователи могут иметь разные потребности в описании искомых информационных образов, но усложнять модель запроса имеет смысл лишь до некоторых пределов. Эти пределы определяются точностью моделирования документа. Образно говоря, вырази пользователь свои потребности хоть поэмой, все равно в работу пошли бы только некоторые слова из нее, поскольку другой вид запроса был бы превышением точности.
   Без превышения точности усложнение модели запроса может производиться путем конструирования логических выражений из ключевых слов и булевых операторов, что соответствует введению некоторого информационно-поискового языка. Такой язык позволяет указывать на обязательность наличия (отсутствия) некоторых терминов в поисковом образе документа, их комбинаций и т. п. Это позволяет в какой-то мере масштабировать получаемые выборки.
   Найденные по запросу документы необходимо отсортировать. Идеальный вариант сортировки — помещать более значимые для пользователя документы в начало списка. Сегодня разработчики используют для ранжирования некую эмпирическую меру (релевантность), зависящую от параметров запроса и поисковых образов найденных документов. Однако мы, люди, в той же ситуации поступаем совершенно иначе. Мы анализируем текст документа и, поняв его суть, оцениваем, насколько он нам подходит. Может ли поисковая система понять цели пользователя и оперативно анализировать смысл найденных документов? Или хотя бы дополнять запрос пользователя, дабы повысить качество выборки?
Дополнение выборки
   Работа с текстом всегда требует определенного языкового обеспечения. В частности, при поиске в русском тексте к безусловно необходимым относится словоизменительный словарь, позволяющий учесть различные морфологические формы известных слов и генерировать гипотезы для слов, не вошедших в словарь. Классический труд Андрея Анатолиевича Зализняка[Зализняк А. А. Грамматический словарь русского языка: Словоизменение. Ок. 110 000 тыс. слов. — 4-е изд., испр. и доп. — М.: «Русские словари», 2003] в полной мере удовлетворяет эти потребности. Определенную пользу может принести и фразеологический словарь. Иногда применяются и словари синонимов. Однако этого недостаточно.
   То обстоятельство, что вместо поиска информационных объектов (образов) приходится довольствоваться поиском слов, не могло не вызвать ответную реакцию в виде многочисленных попыток компенсировать «ущербность» такого подхода. Их общее название — «интеллектуализация» традиционного поиска (не путать с собственно интеллектуальным поиском, то есть поиском по смыслу содержащейся в документе информации).
 
   Предлагаемый «интеллектуальный» поиск вряд ли является жизнеспособным. Основная причина — пользователи не хотят делать запросы естественным языком, им гораздо ближе сокращенный «командный» язык с перечислением терминов (своеобразный «телеграфный стиль»).
   В этом легко убедиться, посмотрев на wordstat.yandex.ru, какие запросы делают Яндексу.
   «Естественный» запрос: +как работает фотошоп — 189 показов в месяц.
   «Командный» запрос: уроки фотошоп — 3469 показов в месяц; учебник фотошоп — 673 показа в месяц и т. д.
   «Естественный» запрос: +как проехать +в шереметьево — 106 показов в месяц.
   «Командный» запрос: шереметьево проезд — 546 показов в месяц; шереметьево добраться — 470 показов в месяц; шереметьево доехать — 409 показов в месяц и т. д.
   Даже в поисковой системе Ask Jeeves, изначально позиционировавшей себя как искалка, которая понимает запросы на естественном языке, доля коротких запросов на «командном» языке недавно превысила долю запросов на естественном языке. Вторая причина — ориентация «интеллектуального» поиска на грамотный русский язык. Веб — социальное, а не лингвистическое явление, и для общения в Сети вместо естественного русского языка часто используется жаргон, короткие предложения, ссылки вместо цитат и т. д., что не может учесть ни один словарь, даже во 2-м исправленном издании.
   Но не строит думать, будто все наработки филологов бесполезны в веб-поиске. Конечно, это не так. Например, Яндекс делает синтаксический анализ запроса, чтобы определить, какие слова связаны между собой, и задать требования к расстоянию между словами. Знание словарной формы слов позволяет лучше исправлять опечатки, а учет морфологии улучшает полноту результатов поиска.
   Александр Садовский,
   руководитель отдела веб-поиска компании «Яндекс»
Интеллектуализация поиска
   На практике «интеллектуализация» поиска (ИП) означает использование дополнительных, по отношению к запросу пользователя, данных: тезаурусов, синонимов, сведений из различных предметных областей и т. п. Здесь требуется известная осторожность, так как порой случается, что «интеллектуализация», основанная на самой верной логике, тем не менее ведет к ухудшениям.
   Пример из этой серии — автоматическое включение в запрос синонимов некоторых поисковых слов. Вроде бы — шаг к ИП. На практике же при поиске по слову «господа», которое имеет высокую частоту в значении обращения (вместо прежнего «товарищи») и является помехой для другого своего значения (в смысле баре — собирательного от барина, барыни, барчат и т. п.), автоматически предусмотрена замена «господ» на синонимическое «баре». Но «баре» в родительном имеют омоформу, совпадающую с «баром» (где наливают). Вот так по запросу «господа» появлялся ворох ссылок на многочисленные бары. По крайней мере, на Яндексе еще в начале августа было именно так.
   Имеют место случаи и точечной ИП. Пример такого рода — исключение из поискового образа слов, занимающих атрибутивные именные позиции. Это когда по запросу «Баня» отыскивались совсем другие учреждения, по той простой причине, что в их адресной информации была указана остановка «Баня».
   Кстати, это реальный факт из практики авторов, имевший место при отладке поискового сервиса для абонентов оператора мобильной связи. Случаев, когда традиционный поиск подправляется, немало, так что не исключено, что со временем количество частично перейдет в качество.
   Вообще-то, самым известным и нашедшим широкое применение фактом «интеллектуализации» сервиса, призванного удовлетворять поисково-информационные запросы пользователей, является организация каталогов. Интеллектуализация здесь происходит в момент наложения классификационного фильтра при внесении документа в каталог. Делать это должны специалисты, принципиальной автоматизации здесь в обозримом будущем не предвидится, так что трудоемкость подхода гарантирована. Сюда же надо добавить случаи, когда сами документы плохо подпадают под имеющиеся рубрики, отсутствие возможностей учесть индивидуальные пожелания и др. Очевидно, что с этой стороны угроз собственно поиску нет.
Интеллектуальный поиск
   Идея опоры поискового сервиса на предварительное смысловое описание документов весьма популярна, примером чему может быть инициатива Semantic Web консорциума W3C, но встает вопрос о массовой организации такого описания. Для научного сегмента Сети это, может, и будет сделано, но говорить о больших шансах на массовое внедрение инициативы было бы преждевременно. Более вероятно скорое появление промежуточных решений.
   Принципиальные подвижки в поисковом сервисе большинство специалистов связывает с реализацией поисковых алгоритмов, основанных на работе со смыслом содержащейся в документе информации, — «интеллектуальным» поиском.
   Конструирование алгоритмов и поддержка такого поиска требует несравненно более основательного языкового обеспечения. Основная проблема здесь — в понимании смысла языкового сообщения. Понимание или интерпретация языкового знака (а значит, и всего текста) эквивалентны тому, что его значение возможно установить. Это реально, если есть критерии опознания в предложении компонент, несущих элементарный смысл. Но необходимы описания этих смысловых компонент, их связей, соответствующие словари и т. п. Как оказалось, ситуация здесь достаточно благоприятная. Функциональное описание перечня всех (!) конструктивно-смысловых единиц и типов связи русского предложения приведено в Синтаксическом словаре[Золотова Г.А. Синтаксический словарь: Репертуар элементарных единиц русского синтаксиса. Изд. 2-е, испр. — 440 с] Галины Александровны Золотовой. Правда, необходимы еще и электронные словари с соответствующим лексическим материалом, а это хоть и понятная, но очень ресурсоемкая работа.
   Для наглядности приведем примеры некоторых элементарных структурно-смысловых компонент (синтаксем). Компонента со смыслом местонахождения или местопребывания, называемая в Словаре локативом, имеет форму предлога и имени места в соответствующем падеже (форму предлог + падеж имеют все именные синтаксемы): для родительного это предлоги между (скал, двух сосен, ухабов), против (клумбы, памятника, парадного), среди (двора, улицы), у (входа); для творительного — за (поворотом), между (двумя горами), над ( рестораном), перед (домом), под (Москвой); для предложного — в (доме), на (берегу), при (дороге). Как видно, компонента местонахождения имеет известную и «закрепленную» за нею конструкцию, общую для разных лексических примеров, и, таким образом, вполне может быть опознана в тексте.
   Компонента со смыслом орудия действия (инструментив) имеет форму: имен., из + род., с +род., в + вин., на + вин., твор., на + пред. Вот несколько лексических примеров для этой компоненты: мяч, который разбил окно; напильником, которым обрабатывают; на скрипке и т. п. Таких элементарных конструктивно-смысловых компонент для русского предложения насчитывается несколько сотен, и у каждой из них своя морфологическая форма. В результате любую грамматическую конструкцию, которую можно представить в виде комбинации связанных между собой синтаксем, в дальнейшем можно факторизовать (разделить) на данные (слова) и сущности (названия компонент), а также указать схему связей между сущностями (подобие полного синтаксического дерева предложения). По сути, это означает, что любой связный текст может быть представлен в виде иерархической БД. Возможность факторизации текста на естественном языке имеет далеко идущие последствия и для развития других технологий, работающих с текстом как с данными, — в частности, для машинного перевода , text mining, контекстного анализа и пр.