
Именно Илье Сегаловиче принадлежат цитаты и выдержки далее по тексту, которые мы предлагаем вашему вниманию в этой публикации.
Для фрилансеров-копирайтеров мы особенно рекомендуем изучить абзацы, посвященные определению уникальности текстов, где они могут узнать как поисковые системы определяют уникальность текста.
Итак, цитаты и выдержики Ильи Сегаловича о поисковых системах и алгоритмах
О поисковых системах и алгоритмах
В мире написаны сотни поисковых систем, а если считать функции поиска, реализованные в самых разных программах, то счет надо вести на тысячи. И как бы ни был реализован процесс поиска, на какой бы математической модели он ни основывался, идеи и программы, реализующие поиск, достаточно просты. Хотя эта простота относится, по-видимому, к той категории, про которую говорят «просто, но работает». Так или иначе, но именно поисковые системы стали одним из двух новых чудес света, предоставив homo sapiens неограниченный и мгновенный доступ к информации. Первым чудом, очевидно, можно считать интернет как таковой с его возможностями всеобщей коммуникации.Поисковые системы в исторической перспективе
Существует распространенное убеждение, что каждое новое поколение программ совершеннее предыдущего. Дескать, раньше все было несовершенно, зато теперь повсюду царит чуть ли не искусственный интеллект. Иная крайняя точка зрения состоит в том, что «все новое — это хорошо забытое старое». Думаю, что применительно к поисковым системам истина лежит где-то посередине. Но что же поменялось в действительности за последние годы? Не алгоритмы и не структуры данных, не математические модели. Хотя и они тоже. Поменялась парадигма использования систем.Лингвистика в алгоритмах поисоквых систем
Проще говоря, к экрану со строчкой поиска подсели домохозяйка, ищущая утюг подешевле, и выпускник вспомогательного интерната в надежде найти работу автомеханика. Кроме появления фактора, невозможного в доинтернетовскую эру, — фактора тотальной востребованности поисковых систем — стала очевидна еще пара изменений. Во-первых, стало ясно, что люди не только «думают словами», но и «ищут словами». В ответе системы они ожидают увидеть слово, набранное в строке запроса. И второе: «человека ищущего» трудно «переучить искать», так же как трудно переучить говорить или писать. Мечты 60—80-х об итеративном уточнении запросов, о понимании естественного языка, о поиске по смыслу, о генерации связного ответа на вопрос с трудом выдерживают сейчас жестокое испытание реальностью.
Немного в стороне от статистических моделей и структур данных стоит класс алгоритмов, традиционно относимых к лингвистическим. Точно границы между статистическими и лингвистическими методами провести трудно. Условно можно считать лингвистическими методы, опирающиеся на словари (морфологические, синтаксические, семантические), созданные человеком. Хотя считается доказанным, что для некоторых языков лингвистические алгоритмы не вносят существенного прироста точности и полноты — например, английского (Стржалковски), — все же основная масса языков требует хотя бы минимального уровня лингвистической обработки. Не вдаваясь в подробности, приведу только список задач, решаемых лингвистическими или окололингвистическими приемами:Ранжирование и алгоритм PageRank
Еще реже в исследованиях и на практике можно встретить алгоритмы словообразовательного, синтаксического и даже семантического анализа. При этом под семантическим анализом чаще подразумевают какой-нибудь статистический алгоритм (LSI, нейронные сети), а если толково-комбинаторные или семантические словари и используются, то в крайне узких предметных областях.
- автоматическое определение языка документа;
- токенизация (графематический анализ): выделение слов, границ предложений;
- исключение неинформативных слов (стоп-слов);
- лемматизация (нормализация, стемминг): приведение словоизменительных форм к «словарной» (в том числе и для слов, не входящих в словарь системы);
- разделение сложных слов (компаундов) для некоторых языков (например, немецкого);
- дизамбигуация: полное или частичное снятие омонимии;
- выделение именных групп.
Естественным развитием идеи ранжирования можно считать предложенный Брином и Пейджем в 1998 году алгоритм PageRank — итеративный[1] алгоритм, подобный тому, что используется в задаче определения победителя в шахматном турнире по швейцарской системе[2]. В сочетании с поиском по лексике ссылок, указывающих на страницу (старая, весьма продуктивная идея, которая использовалась в гипертекстовых поисковых системах еще в 80-е годы), эта мера позволила резко повысить качество поиска.
[1] итеративный (лингв.) заключающий в себе значение повторяющегося действия, многократный (о глаголах и т. п.); (спец.) основанный на итерации, итерациях
[2] швейцарская система — один из способов (систем) организации спортивных соревнований. Особенно часто ее применяют при проведении турниров по интеллектуальным видам игр, таким как шашки, шахматы, го и подобные. Особенность этой системы в том, что соревнования проводятся без выбывания игроков. Это позволяет принимать в них участие неограниченному числу спортсменов и определять победителя при небольшом количестве проводимых туров. Впервые такую систему соревнований применили на шахматном турнире, который состоялся в 1895 году в Цюрихе (Швейцария). Именно поэтому она и получила название швейцарской.
Определение уникальности текстов
Широкий класс документов в вебе активно копируется и редактируется — ленты новостных агентств, документация и юридические документы, прейскуранты магазинов, ответы на часто задаваемые вопросы и т.д. Популярные типы изменений: корректура, реорганизация, ревизия, реферирование, раскрытие темы и т.д. Наконец, публикации могут быть скопированы с нарушением авторских прав и изменены злонамеренно с целью затруднить их обнаружение.
Кроме того, индексация поисковыми машинами страниц, генерируемых из баз данных, порождает еще один распространенный класс внешне мало отличающихся документов: анкеты, форумы, страницы товаров в электронных магазинах.
Очевидно, что с полными повторами проблем особых нет, достаточно сохранять в индексе контрольную сумму текста и игнорировать все остальные тексты с такой же контрольной суммой. Однако этот метод не работает для выявления хотя бы чуть-чуть измененных документов.
Для решения этой задачи Уди Манбер (автор известной программы приближенного прямого поиска agrep) в 1994 году предложил идею, а Андрей Бродер в 1997-м придумал название и довел до ума алгоритм «шинглов» (от слова shingles — «черепички, чешуйки»). Вот его примерное описание.
Для каждого десятисловия текста рассчитывается контрольная сумма (шингл). Десятисловия идут внахлест, с перекрытием, так, чтобы ни одно не пропало. А затем из всего множества контрольных сумм (очевидно, что их столько же, сколько слов в документе минус 9) отбираются только те, которые делятся на, скажем, 25. Поскольку значения контрольных сумм распределены равномерно, критерий выборки никак не привязан к особенностям текста. Ясно, что повтор даже одного десятисловия — весомый признак дублирования, если же их много, скажем, больше половины, то с определенной (несложно оценить вероятность) уверенностью можно утверждать: копия найдена! Ведь один совпавший шингл в выборке соответствует примерно 25 совпавшим десятисловиям в полном тексте!
Очевидно, что так можно определять процент перекрытия текстов, выявлять все его источники и т.п. Этот изящный алгоритм воплотил давнюю мечту доцентов: отныне мучительный вопрос «у кого студент списывал этот курсовик» можно считать решенным! Легко оценить долю плагиата в любой статье.
Чтобы у читателя не создалось впечатление, что информационный поиск — исключительно западная наука, упомяну про альтернативный алгоритм определения почти-дубликатов, придуманный и воплощенный у нас в Яндексе (Ильинский). В нем используется тот факт, что большинство поисковых систем уже обладают индексом в виде инвертированного файла (или инвертированным индексом), и этот факт удобно использовать в процедуре нахождения почти-дубликатов.Архитектуры современных поисковых систем
Архитектурно современные поисковые системы представляют собой сложные многокомпьютерные комплексы. Начиная с некоторого момента по мере роста системы основная нагрузка ложится вовсе не на робота, а на поиск. Ведь в течение секунды приходят десятки и сотни запросов.
Для того чтобы справиться с этой проблемой, индекс разбивают на части и раскладывают по десяткам, сотням и даже тысячам компьютеров. Сами компьютеры начиная с 1997 года (поисковая система Inktomi) представляют собой обычные 32-битные машины (Linux, Solaris, FreeBSD, Win32) с соответствующими ограничениями по цене и производительности. Исключением из общего правила осталась лишь AltaVista, которая с самого начала использовала относительно «большие» 64-битные компьютеры Alpha.Бесшовное обновление индекса поисковых систем
Отдельная проблема — организовать бесперебойную работу многокомпьютерных комплексов, бесшовное обновление индекса, устойчивость к сбоям и задержкам с ответами отдельных компонент. Для общения между поисковыми серверами и серверами, собирающими отклики и формирующими страницу выдачи, разрабатываются специальные протоколы.
Заметьте, что один процент производительности (скажем, неудачно написанный оператор в каком-нибудь цикле) для десятитысячнокомпьютерной системы стоит примерно ста компьютеров. Поэтому можно себе представить, как вычищается код, отвечающий за поиск и ранжирование результатов, как оптимизируется использование всех возможных ресурсов: каждого байта памяти, каждого обращения к диску.
Решающее значение приобретает продумывание архитектуры всего комплекса с самого начала, так как любые изменения — например, добавление необычного фактора при ранжировании или сложного источника данных — становятся исключительно болезненной и сложной процедурой. Очевидно, системы, стартующие позже, имеют в этой ситуации преимущество. Но инертность пользователей весьма высока: так, например, требуется два-четыре года, чтобы сформированная многомиллионная аудитория сама, пусть и медленно, перешла на непривычную поисковую систему, даже при наличии у нее неоспоримых преимуществ. В условиях жесткой конкуренции это порой неосуществимо.
По материалам публикации
Предложение для читателей:
В опубликованном тексте этой статьи есть абзац, который реально взрывает мозг.
Вот этот абзац:
Для каждого десятисловия текста рассчитывается контрольная сумма (шингл). Десятисловия идут внахлест, с перекрытием, так, чтобы ни одно не пропало. А затем из всего множества контрольных сумм (очевидно, что их столько же, сколько слов в документе минус 9) отбираются только те, которые делятся на, скажем, 25. Поскольку значения контрольных сумм распределены равномерно, критерий выборки никак не привязан к особенностям текста. Ясно, что повтор даже одного десятисловия — весомый признак дублирования, если же их много, скажем, больше половины, то с определенной (несложно оценить вероятность) уверенностью можно утверждать: копия найдена! Ведь один совпавший шингл в выборке соответствует примерно 25 совпавшим десятисловиям в полном тексте!
В этой связи, если кто-то смысл этого обзаца сможет объяснить более доступно было бы очень не плохо.
Кстати, взрыв мозга начинается c слов "… сколько слов в документе минус 9) отбираются только те, которые делятся на, скажем, 25".
Уважаемые программисты, кто понял этот алгоритм опишите его на простом примере (описать можете даже в своем блоге, мы с удовольствием опубликуем ссылку на вашу публикацию в этой статье).
Для меня как начинающему копирайтеру, публикация оказалась очень интересной - спасибо!
ОтветитьУдалитьСамые новые и лучшие шаблоны вордпресс и вордпресс темы, которые можно скачать бесплатно.
ОтветитьУдалить