Поисковые системы в исторической перспективе

Автор работы: Пользователь скрыл имя, 03 Марта 2013 в 19:27, реферат

Описание работы

В мире написаны сотни поисковых систем, а если считать функции поиска, реализованные в самых разных программах, то счет надо вести на тысячи. И как бы ни был реализован процесс поиска, на какой бы математической модели он не основывался, идеи и программы, реализующих поиск, достаточно просты. Хотя эта простота, относится, по-видимому, к той категории, про которую говорят «просто, но работает». Так или иначе, но именно поисковые системы стали одним из двух новых чудес света, предоставив Homo Sapiens неограниченный и мгновенный доступ к информации. Первым чудом, очевидно, можно считать Интернет как таковой, с его возможностями всеобщей коммуникации.

Содержание работы

Введение…………………………………………………………………………2
ПОИСКОВЫЕ СИСТЕМЫ В ИСТОРИЧЕСКОЙ ПЕРСПЕКТИВЕ………………...3
АЛГОРИТМ + СТРУКТУРА ДАННЫХ = ПОИСКОВАЯ СИСТЕМА………………3
МАТЕМАТИЧЕСКИЕ МОДЕЛИ………………………………………………………….5
Поиск «по смыслу»…………………………………………………………………..6
НЕ ТОЛЬКО ПОИСК………………………………………………………………………..8
ЛИНГВИСТИКА……………………………………………………………….8
ПОИСК В ВЕБЕ……………………………………………………………………………….9
Качество ранжирования…………………………………………………………….10
Качество индекса……………………………………………………………………..10
ЦЕНА ОДНОГО ПРОЦЕНТА……………………………………………………………….11
Список литературы…………………………………………………………….12

Файлы: 1 файл

Введение.doc

— 119.00 Кб (Скачать файл)

Введение…………………………………………………………………………2

ПОИСКОВЫЕ СИСТЕМЫ В ИСТОРИЧЕСКОЙ ПЕРСПЕКТИВЕ………………...3

АЛГОРИТМ + СТРУКТУРА ДАННЫХ = ПОИСКОВАЯ СИСТЕМА………………3

МАТЕМАТИЧЕСКИЕ МОДЕЛИ………………………………………………………….5

Поиск «по смыслу»…………………………………………………………………..6

НЕ ТОЛЬКО ПОИСК………………………………………………………………………..8

ЛИНГВИСТИКА……………………………………………………………….8

ПОИСК В ВЕБЕ……………………………………………………………………………….9

Качество ранжирования…………………………………………………………….10

Качество индекса……………………………………………………………………..10

ЦЕНА ОДНОГО ПРОЦЕНТА……………………………………………………………….11

Список литературы…………………………………………………………….12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

В мире написаны сотни поисковых систем, а если считать функции поиска,  реализованные в самых разных программах, то счет надо вести на тысячи. И как бы ни был реализован процесс поиска, на какой бы математической модели он не основывался, идеи и программы, реализующих поиск, достаточно просты. Хотя эта  простота, относится, по-видимому, к той категории, про которую говорят «просто,  но работает». Так или иначе, но именно поисковые системы стали одним из двух новых чудес света, предоставив Homo Sapiens неограниченный и мгновенный доступ к информации. Первым чудом, очевидно, можно считать Интернет как таковой, с его возможностями всеобщей коммуникации.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПОИСКОВЫЕ СИСТЕМЫ В  ИСТОРИЧЕСКОЙ ПЕРСПЕКТИВЕ

Существует распространенное убеждение, что каждое новое поколение программ совершенней предыдущего. Дескать, раньше все было несовершенно, зато теперь повсюду царит чуть ли не искуственный интеллект. Иная крайняя точка зрения состоит в том, что «все новое - это хорошо забытое старое». Думаю, что применительно к поисковым системам истина лежит где-то посередине.  Но что же поменялось в действительности за последние годы? Не алгоритмы и не структуры данных, не математические модели. Хотя и они тоже. Поменялась парадигма использования систем. Проще говоря, к экрану со строчкой поиска подсели домохозяйка, ищущая утюг подешевле, и выпускник вспомогательного интерната в надежде найти работу автомеханика. Кроме появления фактора,  невозможного в доинтернетовскую эру – фактора тотальной востребованности поисковых систем – стала очевидна еще пара изменений. Во-первых, стало ясно,  что люди не только «думают словами», но и «ищут словами». В ответе системы они ожидают увидеть слово, набранное в строке запроса. И второе: «человека ищущего» трудно «переучить искать», так же как трудно переучить говорить или писать.Мечты 60-х – 80-х об итеративном уточнении запросов, о понимании естественного языка, о поиске по смыслу, о генерации связного ответа на вопрос с трудом выдерживают сейчас жестокое испытание реальностью.

АЛГОРИТМ + СТРУКТУРА  ДАННЫХ = ПОИСКОВАЯ СИСТЕМА

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

прямой поиск

Простейшая его версия знакома  многим, и нет программиста, который  бы не написал хотя бы раз в своей жизни подобный код:

char* strstr(char *big, char *little)

{

char *x, *y, *z;

for (x = big; *x; x++)

{

for (y = little, z = x; *y;

++y, ++z)

{

if (*y != *z)

break;

}

if (!*y)

return x;

}

return 0;

}

В этой функции языка C текст строки big просматривают слева направо и для каждой позиции x запускают последовательное сравнение с искомой подстрокой little. Для этого, двигая одновременно два указателя y и z,  попарно сравнивают все символы. Если мы успешно дошли до конца искомой подстроки,  значит она найдена. Несмотря на кажущуюся простоту, последние 30 лет прямой поиск интенсивно развивается. Было выдвинуто немалое число идей, сокращающих время поиска в разы. Эти алгоритмы подробно описаны в разнообразной литературе, есть их сводки и сопоставления. Неплохие обзоры прямых методов поиска можно найти в учебниках, например [sedgewick] или [кормен]. При этом надо учесть, что новые алгоритмы и их улучшенные варианты появляются постоянно.  Хотя прямой просмотр всех текстов – довольно медленное занятие, не следует думать, что алгоритмы прямого поиска не применяются в интернете. Норвежская поисковая система Fast (www.fastsearch.com) использовала чип, реализующий логику прямого поиска упрощенных регулярных выражений [fastpmc], и разместила 256 таких чипов на одной плате. Это позволяло Fast-у обслуживать довольно большое количество запросов в единицу времени.  Кроме того, есть масса программ, комбинирующих индексный поиск для нахождения блока текста с дальнейшим прямым поиском внутри блока. Например,  весьма популярный, в том числе и в Рунете, glimpse [glimpse].  Вообще, у прямых алгоритмов есть принципиально беспроигрышные отличительные черты. Например, неограниченные возможности по приближенному и нечеткому поиску. Ведь любое индексирование всегда сопряжено с упрощением и нормализацией терминов, а, следовательно, с потерей информации. Прямой же поиск работает непосредственно по оригинальным документам безо всяких искажений.

инвертированный файл

Эта простейшая структура данных, несмотря на свое загадочное иностранное название, интуитивно знакома любому грамотному человеку, так и любому программисту баз данных, даже не имевшему дело с полнотекстовым поиском.  Первая категория людей знает, что это такое, по «конкордансам» - алфавитно упорядоченным исчерпывающим спискам слов из одного текста или принадлежащих одному автору (например «Конкорданс к стихам А. С. Пушкина»,  «Словарь-конкорданс публицистики Ф. М. Достоевского»). Вторые имеют дело с той или иной формой инвертированного списка всякий раз, когда строят или используют «индекс БД по ключевому полю».  Проиллюстрируем эту структуру при помощи замечательного русского конкорданса - «Симфонии», выпущенной московской патриархией по тексту синодального перевода Библии [симфония].

Рис. 1

Перед нами упорядоченный по алфавиту список слов. Для каждого слова перечислены все «позиции», в которых это слово встретилось. Поисковый алгоритм состоит в отыскании нужного слова и загрузке в память уже развернутого списка позиций.  Чтобы сэкономить на дисковом пространстве и ускорить поиск, обычно прибегают к двум приемам. Во-первых, можно сэкономить на подробности самой позиции.  Ведь чем подробнее задана такая позиции, например, в случае с «Симофонией» это  «книга+глава+стих», тем больше места потребуется для хранения инвертированного файла.  В наиподробнейшем варианте в инвертированном файле можно хранить и номер

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

структура считается основной в  классической теории информационного  поиска – Information Retrieval (IR).  Второй (никак не связанный с первым) способ сжатия: упорядочить позиции для каждого слова по возрастанию адресов и для каждой позиции хранить не полный ее адрес, а разницу от предыдущего. Вот как будет выглядеть такой список для нашей странички в предположении, что мы запоминаем позицию вплоть до номера главы:

ЖЕНЩИНА: [Быт.1],[+11],[0],[+2],[+4],[+2],[+4],..

Дополнительно на разностный способ хранения адресов накладывают какой- нибудь простенький способ упаковки: зачем отводить небольшому целому числу фиксированное «огромное» количество байт, ведь можно отвести ему почти столько байт, сколько оно заслуживает. Здесь уместно упомянуть коды Голомба или встроенную функцию популярного языка Perl: pack(“w”). В литературе встречается и более тяжелая артиллерия упаковочных алгоритмов самого широкого спектра: арифметический, Хафман, LZW, и т.д. Прогресс в этой области идет непрерывно. На практике в поисковых системах они используются редко: выигрыш невелик, а мощности процессора расходуются неэффективно.  В результате всех описанных ухищрений размер инвертированного файла, как правило, составляет от 7 до 30 процентов от размера исходного текста, в зависимости от подробности адресации.

занесены в  «Красную книгу»

Неоднократно предлагались другие, отличные от инвертированного и прямого поиска алгоритмы и структуры данных. Это, прежде всего, суффиксные деревья [manber], [gonnet], а также сигнатуры [faloutsos].  Первый из них функционировал и в интернете, будучи запатентованным алгоритмом поисковой ситемы OpenText [opentext]. Мне доводилось встречать суффиксные индексы в отечественных поисковых системах. Второй - метод сигнатур - представляет собой преобразование документа к поблочным таблицам хеш-значений его слов - "сигнатуре" и последовательному просмотру "сигнатур" во время поиска.  Широкого распространения ни тот ни другой метод не получили, а, следовательно,  не заслужили и подробного обсуждения в этой небольшой статье.

МАТЕМАТИЧЕСКИЕ МОДЕЛИ

Приблизительно 3 из 5 поисковых систем и модулей функционируют безо всяких математических моделей. Точнее сказать, их разработчики не ставят перед собой задачу реализовывать абстрактную модель и/или не подозревают о существовании оной. Принцип здесь прост: лишь бы программа хоть что-нибудь находила. Абы как. А дальше сам пользователь разберется.  Однако, как только речь заходит о повышении качества поиска, о большом объеме информации, о потоке пользовательских запросов, кроме эмпирически проставленных коэффициентов полезным оказывается оперировать каким-нибудь пусть и несложным теоретическим аппаратом. Модель поиска – это некоторое упрощение реальности, на основании которого получается формула (сама по себе никому не нужная), позволяющая программе принять решение: какой документ считать найденным и как его ранжировать. После принятия модели коэффициенты часто приобретают физический смысл и становятся понятней самому разработчику,  да и подбирать их становится интересней.  Все многообразие моделей традиционного информационного поиска (IR) принято делить на три вида: теоретико-множественные (булевская, нечетких множеств,  расширенная булевская), алгебраические1 (векторная, обобщенная векторная,  латентно-семантическая, нейросетевая) и вероятностные.  Булевское семейство моделей, по сути, – первое, приходящее на ум программисту,  реализующему полнотекстовый поиск. Есть слово - документ считается найденным, нет – не найденным. Собственно, классическая булевская модель – это мостик, связывающий теорию информационного поиска с теорией поиска и манипулирования данными.  Критика булевской модели, вполне справедливая, состоит в ее крайней жесткости и непригодности для ранжирования. Поэтому еще в 1957 году Joyce и Needham  (Джойс и Нидхэм) предложили учитывать частотные характеристики слов, чтобы  «... операция сравнения была бы отношением расстояния между векторами...» [joyce_1957*]. Векторная модель и была с успехом реализована в 1968 году отцом- основателем науки об информационном поиске Джерардом Солтоном (Gerard Salton)2 в поисковой системе SMART (Salton's Magical Automatic Retriever of Text). 1 В отечественной литературе алгебраические модели часто называют линейными 2 Gerard Salton (Sahlman) 1927-1995. Он же Селтон, он же Залтон и даже Залман, он же Жерар,  Герард, Жерард или даже Джеральд в зависимости от вкуса переводчика и допущенных опечаток http://www.cs.cornell.edu/Info/Department/Annual95/Faculty/Salton.html

Ранжирование в этой модели основано на естественном статистическом наблюдении, что чем больше локальная частота термина в документе (TF) и больше «редкость» (т.е. обратная встречаемость в документах) термина в коллекции (IDF), тем выше вес данного документа по отношению к термину.  Обозначение IDF ввела Karen Sparck-Jones (Карен Спарк-Джоунз) в 1972 в статье [spark-jones] про различительную силу (term specificity). С этого момента обозначение TF*IDF широко используется как синоним векторной модели.  Наконец, в 1977 году Robertson и Sparck-Jones (Робертсон и Спарк-Джоунз) [robertson] обосновали и реализовали вероятностную модель (предложенную еще в 1960 [maron]), также положившую начало целому семейству. Релевантность в этой модели рассматривается как вероятность того, что данный документ может оказаться интересным пользователю. При этом подразумевается наличие уже существующего первоначального набора релевантных документов, выбранных пользователем или полученных автоматически при каком-нибудь упрощенном предположении. Вероятность оказаться релевантным для каждого следующего документа рассчитывается на основании соотношения встречаемости терминов в релевантном наборе и в остальной, «нерелевантной» части коллекции. Хотя вероятностные модели обладают некоторым теоретическим преимуществом, ведь они располагают документы в порядке убывания "вероятности оказаться релевантным", на практике они так и не получили большого распространения.  Я не собираюсь вдаваться в подробности и выписывать громоздкие формулы для каждой модели. Их сводка вместе с обсуждением занимает в сжатом виде 35 страниц в книжке «Современный информационный поиск» [baezo-yates]. Важно только заметить, что в каждом из семейств простейшая модель исходит из предположения о взаимонезависимости слов и обладает простым условием фильтрации: документы, не содержащие слова запроса, никогда не бывают найденными. Продвинутые («альтернативные») модели каждого из семейств не считают слова запроса взаимонезависимыми, а, кроме того, позволяют находить документы, не содержащие ни одного слова из запроса.

Поиск «по смыслу»

Способность находить и ранжировать  документы, не содержащие слов из запроса,  часто считают признаком искусственного интеллекта или поиска по смыслу и относят априори к преимуществам модели. Вопроса, о том, так ли это или нет мы оставим за рамками данной статьи.  Для примера опишу лишь одну, пожалуй, самую популярную модель, работающую по смыслу. В теории информационного поиска данную модель принято называть латентно-семантически индексированием (иными словами, выявлением скрытых смыслов). Эта алгебраическая модель основана на сингулярном разложении прямоугольной матрицы, ассоциирующей слова с документами. Элементом http://www.informatik.uni-trier.de/~ley/db/indices/a-tree/s/Salton:Gerald.html http://www.cs.virginia.edu/~clv2m/salton.txt матрицы является частотная характеристика, отражающая степень связи слова и документа, например, TF*IDF. Вместо исходной миллионно-размерной матрицы авторы метода [furnas], [deerwester] предложили использовать 50-150 «скрытых смыслов»3, соответствующих 072 Юuc2первым・ главным компонентам ее сингулярного разложения.  Сингулярным разложением действительной матрицы A размеров m*n называется всякое ее разложение вида A = USV, где U - ортогональная матрица размеров m*m, V - ортогональная матрица размеров n*n, S - диагональная матрица размеров m*n, элементы которой sij= 0, если i не равно j, и sii = si >= 0. Величины si называются сингулярными числами матрицы и равны арифметическим значениям квадратных корней из соответствующих собственных значений матрицы AAT. В англоязычной литературе сингулярное разложение принято называть SVD-разложением.  Давным-давно доказано [eckart], что если оставить в рассмотрении первые k сингулярных чисел (остальные приравнять нулю), мы получим ближайшую из всех возможных аппроксимацию исходной матрицы ранга k (в некотором смысле ее  «ближайшую семантическую интерпретацию ранга k»). Уменьшая ранг, мы отфильтровываем нерелевантные детали; увеличивая, пытаемся отразить все нюансы структуры реальных данных.  Операции поиска или нахождения похожих документов резко упрощаются, так как каждому слову и каждому документу сопоставляется относительно короткий вектор из k смыслов (строки и столбцы соответствующих матриц). Однако по причине малой ли осмысленности «смыслов», или по какой иной4, но использование LSI в лоб для поиска так и не получило распространения. Хотя во вспомогательных целях (автоматическая фильтрация, классификация, разделение коллекций, предварительное понижение размерности для других моделей) этот метод, по-видимому, находит применение.

Информация о работе Поисковые системы в исторической перспективе