Фев 29 2008

Алгоритм выявления покупных ссылок. Часть 5. Документ алгоритма

Tag: web, web 2.0, поискivbeg @ 10:10 дп

Как и обещал публикую документ описания алгоритма.

Выявление групп платных ссылок  в сети Интернет

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

Исходный код, если будет, то позже – сейчас и описанных в документе критериев и алгоритма достаточно для его воспроизведения.

За этим мой интерес к явлению платных ссылок, на ближайшее время, минимизируется – есть много актуальной и интересной работы по другим темам.

P.S. По ссылке http://urlus.ru/linkcheck/ работает этот же алгоритм, но уже с некоторыми дополнительными критериями. Итоговый групповой вес блока ссылок который выдаёт урлус может существенно отличаться от описанного в документе, в то же время логика работы изменилась не сильно.


Фев 28 2008

Алгоритм выявления покупных ссылок. Часть 4. Вопросы

Tag: web, web 2.0, поискivbeg @ 3:25 пп

Размышляю о возможности раскрытия части алгоритма и исходного кода выявления платных ссылок о котором я писал ранее. Сам алгоритм состоит из двух частей – выявление ссылочных блоков и ранжирование найденных ссылок. В данном случае речь идёт о части с ранжированием.

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

Во-вторых хочеться услышать конструктивной критики читателей.

В-третьих алгоритм частично пересекается с публикацией Брайяна Дэвисона в 2000 году Recognizing nepotistic links in the Web.  Вообще попадись мне эта публикация раньше, было бы скучно возиться с этим самому, но нет, впервые я её увидел всего 3 дня назад и оказывается не зря я это делал – некоторые отличия, специфичные для Рунета, есть в моём алгоритме. Ещё больше отличий в его версии о которую я уже понимаю как сделать, но это, действительно, будет небыстрый процесс. 2-4 месяца.

И, наконец, в четвёртых алгоритм является весовым по принципу «обратного ранжирования», порог отсечения по которому поисковая машина принимает окончательное решение о том является ли ссылка платной или нет она может задать сама, алгоритм лишь укажет на наиболее вероятных кандидатов.

Окончательного решения у меня пока ещё нет и, в любом случае, какое-то время ещё займёт подготовка формализованного (научного) описания и извлечение исходного кода из контекста всего проекта, который к работе с платными ссылками никак не соотносился.

Вопросы:

1. Есть ли интерес  к подобным материалам у читателей?

2. Какую лицензию лучше выбрать для публикации, желательно с аргументами за?


Фев 28 2008

Вопросы построения семантического веба

Tag: web, web 2.0, поискivbeg @ 12:54 пп

Собираю вопросы по семантизации (структуризации) веба. На часть из них ответы у меня уже есть, хотя бы частичные, но многие всё ещё нераскрытые.

1. Как мотивировать создателей веб ресурсов и информационных банков делиться информацией через открытые API?

2.  Можно ли определить тип веб-ресурса (сайта) по его содержимому? Можно ли определить тип информационного блока (запись в блоге, комментарий, статья, закон, научное исследование) по его содержимому или происхождению?

3. Как представить онтологические модели в виде удобном для понимании простыми людьми, а не только учёными.

4. Должны ли онтологические сущности покрывать максимум классов и атрибутов информационных блоков или же они должны быть нацелены на максимальную гибкость и возможность расширения?

5.  Каковы должны быть принципы «семантического поиска» учитывая возможные последствия «атак на алгоритм» которые сейчас можно наблюдать в работе чёрных SEO против поисковиков вроде Google или Yandex? Если модели ссылочного рейтинга цитирования PageRank и иных в данном случае не применимы, так как ссылки могут и отсутствовать, то каким образом должен осуществляться поиск.

6. Как обеспечить локализуемость и адаптируемость онтологических моделей для различных языков и социо-культурных сред?

7. Как автоматизировать декомпозицию данных представленных в неизвестных форматах или текстах? Способны ли алгоритмы машинного обучения выявить модели аналогов и подбирать онтологические модели автоматически?

8. Как добиться чтобы всё вышеперечисленное работало с приемлимой производительностью?

9. Является ли исскуственный интеллект безусловно необходимым компонентом для смыслового распознавания  и декомпозиции текстов? В каких случаях возможен поиск подобий и аллегорий запросов не теряя смысла текстов?

10. Как обеспечить эффективное хранение извлекаемых метаданных исходя из триллионов пар «ключ-значение» ?  Ответ: MapReduce, Hadoop, SimpleDB, HBase, HyperTable

11. Как моделировать «жизненный путь» информационного блока (повода, объекта) от зарождения до дублирования? Пример, распространение новостной информации от одного или нескольких оригинальных источников на неограниченное их число.

12.  Как определить отношения между источниками информации? Ответ: частично алгоритмическим образом,  выявление покупных ссылок как один из примеров такого алгоритма.


Фев 28 2008

Yahoo и Hadoop

Tag: web, web 2.0, поискivbeg @ 12:25 дп

С интересом обнаружил для себя блог Yahoo! Hadoop, оказывается на сегодняшний день у них самый большой Hadoop кластер из имеющихся.

  • 10 тысяч процессоров;
  • 300 терабайт сжатых данных
  • 5 петабайт данных всего

Судя по тому что они пишут про использование данных собранных в Hadoop для поисковых запросов, не удивлюсь что они постепенно заменяют (или уже заменили?) им своего робота.

Кстати, некоторое понимание по Hadoop и культуре разработке Yahoo! можно вынести из видео с двумя индусами из команды Yahoo! Webmap. Английский у них отвратителен, но понимабелен.Единственно жаль что, скорее всего, эта затея будет похоронена в случае поглощения Yahoo! со стороны Microsoft.

Рекомендую также интересные обзоры Ивана Блинкова «Hadoop для разработчика» и «Hadoop«.


Фев 27 2008

О распределённых поисковых машинах, Enabot и HyperTable

Tag: google, web, web 2.0, поискivbeg @ 12:24 пп

Весьма интересное в загадочном боте EnaBot (http://www.enaball.com/crawler.html) – это то, откуда он приходит – ec2-67-202-55-112.compute-1.amazonaws.com

А это не что иное как Amason EC2, не удивлюсь если при таком раскладе и база хранится в Amazon S3 и Amazon SimpleDB, наверняка не скажешь, но по логике и производительности это должно быть быстрее чем держать свою распределённую базу. Мне вспомнилась одна из обзорных статей по Simple DB – несмотря на сильно упрощённые интерфейсы, это одна из наиболее сильных воплощённых идей. Я ещё раз хочу повторить своё предсказание что рано или поздно IBM купит Amazon. Это, однозначно, их актив.

Из других интересных поисковых технологий трудно не обратить внимание на Hypertable, реализацию аналога BigTable от Google в открытых исходных кодах и под GPL v3. Мне, правда, до сих пор не вполне ясно чем эта разработка превосходит HDFS (HaDoop File System), но думаю что отличия есть раз такая разработка появилась.

Чуть отвлекаясь от технических вопросов и переходя к бизнес модели стоит обратить внимание что не просто так BigTable была и есть закрытая разработка Google которую они и не планировали раскрывать. Это то что можно назвать ключевой технологией, конечно, одной из, но тем не менее важной. Простота и доступность аналогов значительно повышают возможности построения своих поисковых машин конкурентами. Если использовать связку Hadoop + Nutch + HyperTable или же адаптированный индексатор с бэкэндом на Amazon Simple DB, то планка вхождения новых игроков на рынок поиска значительно снижается.

Более того я подозреваю что рано или поздно конкуренция тут начнётся исключительно на алгоритмическом уровне и способности к применению алгоритмов семантического веба. Например, как это делают в немецком поисковике Semager , подробнее о нём можно прочитать в переводе на английский черезе Google Translate – http://urlus.ru/u/11

Другая, интересная идея в извлечении онтологической модели из выбранного текста. Например, в одном из планов Wikia было использование Text2Onto. Пример когда довольно сложные разработки по обработки текстов постепенно находят технологическую реализацию. В одном я точно согласен с авторами, семантизация должна обеспечиваться не людьми, а алгоритмами.

Ещё одна тенденция – это рост популярности распределённых поисковых роботов, работающих на принципах  P2P. У такого подхода есть свои ощутимые плюсы – возможность индексации даже тех сайтов которые этому всячески сопротивляются. Невозможно заблокировать индексацию по IP адресу, необходимы фильтры по числу обращений в период времени, а они есть не у всех сайтов.

Навскидку только те что я знаю.

  • Yacy.net - open source GPL2
  • Grub – open source, GPL, используется в Wikia Search
  • Majestic12 – как я понимаю разработка на C# с  приличным объёмом проиндексированных страниц. Весьма интересно как как они организуют хранение данных, ибо данных там огого. У них же интересная задумка – Majestic SEO, показ обратных ссылок, как раз того что ведущие поисковики сейчас блокируют.

Итого суммарно 3 тенденции:

  • упрощение создание своей поисковой системы с нуля – появление услуг обеспечения инфраструктуры для подобных систем;
  • внедрение семантических алгоритмов анализа текстов;
  • использование распределённых поисковых роботов;

И  один вывод – технологии популяризируются и меняются. Ситуация в которой сейчас находится Майкрософт, когда несмотря на понимание и желание выхода на рынок SaaS это желание сдерживается значительной инертностью текущей структуры доходов, в итоге им приходится идти на риск приобретения Yahoo.

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


Фев 26 2008

Открытые протоколы – хорошо, но поздно.

Tag: microsoftivbeg @ 11:43 пп

Читаю пресс-релиз MS об открытии документации по протоколам и внутренним форматам.

Хорошее начинание, нет честно, хорошее. Лет 7 назад оно было бы манной небесной, тогда активно решая проблемы увязки Linux и Windows систем лично мне нехватало очень многого. Полноценно работающего Samba сервера, Linux приложений способных работать с RDP в любых вариациях с и так далее и тому подобное.

Сейчас это, конечно, тоже важно, но информационной бомбы не чувствуется. Слишком многое умельцы за эти годы уже реконструировали в open source продуктах обратным восстановлением, а то что не реконструировали становится всё менее и менее актуальным.

Вообще же чувство юмора пресс-службы Майкрософт я оценил. Выкладывать прескрипт в анонса о _интероперерабилити_ виде формата .docx, читаемый не везде и не всеми. А видео в формате .wmv не читаемом по умолчанию многими если не большинством Linux дистрибутивов – это иначе как специфичным чувством юмора не назовёшь. Хорошо хоть сами документы спецификаций протоколов в виде .pdf, что после подобного анонса выглядит вдвойне странно.

Интересно почему нельзя было выложить видео в виде Flash или просто на YouTube как это сделали в публикации на InformationWeek.com ? Вопрос риторический.

А вот спецификации на бинарный формат ASP.NET ViewState я у них так и не нашёл. Что меня лично удивляет, так как в Mono его уже давно реконструировали и скрывать вроде(?) нечего. Не, я то умею читать Viewstate и глазами по байткоду, но со спецификацией это удобнее.


Фев 26 2008

Некоторые наблюдения за поисковыми машинами. Жизнь ссылки

Tag: google, web, web 2.0, поискivbeg @ 2:18 пп

В последнее время, нечто вроде хобби, в свободное время анализом того как работают поисковые машины и их применимости семантическому вебу. И, также, моделями распространения информации. Одно из наблюдений – это время реакции поисковой машины на появление новой информации.

Быстро сделанный для этих целей мини-проект – Урлус (urlus.ru) который работает укорачивателем ссылок по аналогии с TinyUrl за исключением того что позволяет отслеживать число обращений к ссылке за период времени. А чуть позже и смотреть детальную статистику, пока она закрыта, но ведётся.

Если описать жизнь типовой ссылки публикуемой через мой блог, то она выглядит так:

Continue reading «Некоторые наблюдения за поисковыми машинами. Жизнь ссылки»


Фев 21 2008

Практика минимизации ошибок

Tag: из жизниivbeg @ 11:19 пп

Человек лишающий себя права на ошибку,
рано или поздно сталкивается с тем что
это и есть его самая большая ошибка (c)

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

1. «Выполни и умри!» (Do and Die)

Это уже давно известный шаблон, который, тем не менее игнорируют постоянно. Смысл в том что приложение разделяется на несколько модулей – процессов или нитей (которые Thread) взаимодействующих друг с другом, но способных выживать независимо. Эти процессы делятся на центральный (диспетчек) и рабочие процессы выполняющие «грязную работу» перемалывания данных. В основном данный подход применим к серверным приложениям, что впрочем не отменяет его полезности для разного типа программ.

Наиболее классический пример Apache, его параметр MaxRequestsPerChild как раз обеспечивает гарантированную смерть процесса по достижению определённого числа запросов. Более радикальная вариация этого подхода, это гарантированное убийство процесса или потока немедленно выполнения задачи.

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

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

2. «Большой брат» (Big Brother)

Когда приложение является сложным, взаимоувяанным и разнесённым по разным серверам и географическим площадкам, то неизбежно возникают ситуации когда где-то запрос теряется, не принимается или же принимается некорректно. И хорошо ещё если это «one vendor solution» где все транзакции на виду, но куда чаще это интеграция нескольких приложений и слишком часто я лично наблюдал как создатели чешут затылок и часами выясняют в чём же проблема в их Web, Cache, SOAP, WSDL, Remoting, Corba монстроидальном приложении.

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

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

Как это касается непосредственно разработчиков? Не стоит ленится и всегда полезно создавать веб страницу статуса для веб приложения или же так или иначе экспортировать метрики приложения, на выбор:

- в файл;

- в таблицу в БД;

- публикуя показатели через SNMP;

- через proc, если Linux

- через веб страницу с возможностью машинной обработки

Continue reading «Практика минимизации ошибок»


Фев 21 2008

Стратегия минимизации ошибок

Tag: из жизниivbeg @ 1:18 пп

В своё время мне довелось слышать такую классификацию что разработчики деляться на группы:

  • неопытных – тех кто считает что всё надо делать идеально и входят в диссонанс при необходимости «некрасивых» решений;
  • опытных – тех кто знает что они могут ошибаться, как и люди вокруг них и стараются экономить своё время на избежании наиболее частых ошибок дабы потом не проводить часы в отладке;
  • гуру – убеждённых что программ без ошибок не бывает, главное это обеспечить чтобы программа работала несмотря на их наличие и позволяла их исправление несмотря ни на что. Также владеющих способностью предсказать где ошибки возникнут скорее всего и что с ними делать.

Классификация спорная, наверняка, её можно переформулировать и расширить, но главное в ней другое – понимание что чем сложнее разработка и конечный продукт тем его большую роль играют его недостатки и возможности их устранения. Это как если бы выбирать автомобиль – можно по фактуре и скорости, а можно по простоте и стоимости ремонта. Если автомобиль «для шика», то возможно что ремонт не так важен, а вот если он для бизнеса, то его роль выходит чуть ли не на первое место. Далее я затрону именно тему ошибок применительно к бизнесу.

Лично мне приходилось сталкиваться с этим не единожды. Вы когда нибудь видели приложения которые бы годами работали несмотря на то что внутренние компоненты сыпали исключениями, падали в Segmentation Fault и воскресали сразу же или по истечении короткого времени? Мне доводилось и не один раз. Причём эти приложения писали отнюдь не неопытные разработчики незнающие как ловить переполнение буферов, а как раз те кто понимал что они неизбежны и если не они так менее опытные разработчики вслед за ними обязательно такие ошибки наделают, а приложение должно жить в любом случае.

Простейший и наиболее очевидный пример – это веб сервера. В том же Apache уже сколько лет есть директива MaxRequestsPerChild, казалось бы, какой идиотизм, пусть все пишут правильный-чистый код, но нет, там есть опция при которой процесс принудительно умирает по принятию определённого числа запросов и причина банальна – минимизация ущерба от ошибок.

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

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

Люди ошибаются, случайно, из любопытства, вынужденно, под влиянием эмоций или обстоятельств, но это факт.

Поэтому идеального кода не существует, это фантастика. Если в нём нет хоть одной ошибки, он весь одна большая ошибка.


Фев 20 2008

Snap.com – конкурент Google или потенциальное приобретение?

Tag: из жизниivbeg @ 10:08 пп

Недавно, просматривая статистику поисковых роботов на нескольких своих сайтах я не без удивления обнаружил что один из самых активных по числу обращений и трафику – это snap.com.

К разговорам о Search 2.0 и о радикальных изменения в поисковых алгоритмах. Собственно их подход весьма отличается от остальных, индексировать не всё что попало, а только то чем заинтересовались пользователи наведя на новую ссылку.

В чём отличие от Google, к примеру, в том что в базу Гугла новая ссылка – страница попадает спустя лишь некоторое время, для ссылок в моём блоге это около 15 минут, а вот в snap.com она уходит моментально по первому наведению.

Нет, ну какова идея – моментальное индексирование и гарантия что в индексную базу попадают только _реально_ просмотренные пользователями страницы.

Сегодня ко всему обратил внимание что они начали интеллектуально показывать страницы для предосмотра – если ссылка на YouTube – то показывают не скриншот, а уменьшеную версию того же видео (как они его уменьшают??), для Flickr’а – показывают уменьшенную картинку и возможность навигации по ней не меняя страницы. Для карту Гугла – показывают уменьшенный и управляемый(!) кусок карты. Соответственно, для страниц у которых есть RSS показывают RSS канал.

Да, ни один счётчик TNS Gallup не сравниться с подобным сбором интересов пользователей, поскольку тут ещё и учёт интересующих пользователей ссылок.

Готов биться об заклад что до конца года их купят Microsoft, Yahoo или Google. Bill Gross – основатель IdeaLab и Snap’а успел создать и продать уже немало компаний. Думаю что и здесь у него аналогичная цель.

Отвлекаясь от Snap’а, просто интересно какова будет судьба браузера Flock который, судя по всему, тесно аффилирован с Yahoo! и врядли будет нужен Microsoft. Хороший, между прочим, браузер.


Следующая страница »


Rambler's Top100