Поиск, 03 лекция (от 27 октября)

Материал из eSyr's wiki.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: есть ещё одна заадча: где в сети выложено англоязычная версия книжка Маннинга по инф. поиску. = Постро...)
(вычитка)
Строка 1: Строка 1:
-
есть ещё одна заадча: где в сети выложено англоязычная версия книжка Маннинга по инф. поиску.
+
Есть ещё одна задача: где в сети выложено англоязычная версия книжка Маннинга по информационному поиску. <!-- ну это ж просто -->
= Построение индекса =
= Построение индекса =
-
Координатный индекс -
+
''Координатный индекс''.
-
на прошлой лекции рассм. пример инв. фалйа для однрого файла. Для множества файлов обычно строится аналогичный индекс, но вида "терми - документ", то есть, есть ли он там, опционально, количество вхождений.
+
на прошлой лекции рассматривался пример инвертированного файла для одного файла. Для множества файлов обычно строится аналогичный индекс, но вида "термин - документ", то есть, есть ли он там, опционально, количество вхождений.
-
Координантный индекс - перечень всех позиций. Как правило, номер слова.
+
Координатный индекс — перечень всех позиций. Как правило, номер слова.
-
Лексема - экземплчр посл. символов в документе, объед. в семантическую единицу для обр.
+
''Лексема'' — экземпляр последовательности символов в документе, объединённых в семантическую единицу для обр.
-
Тип - класс всех лексем, сост. из одной и той же посл. символов.
+
''Тип'' — класс всех лексем, состоящих из одной и той же последовательности символов.
-
Про экзхамен: азрешается пользоваться всем, что угодно. После начала ответа пользование литературой и залом не допускается.
+
Про экзамен: разрешается пользоваться всем, чем угодно. После начала ответа пользование литературой и залом не допускается.
-
Термин — тип, включённый в словарь системы инф. поиска. При этом возм. нормализация.
+
''Термин'' — тип, включённый в словарь системы информационного поиска. При этом возможна нормализация.
-
Лексикон — множество всех терминов, включённых в словарь системы инф. поиска.
+
Лексикон — множество всех терминов, включённых в словарь системы информационного поиска.
-
Что происх. с документом после того, как мы его откуда-то получили: на входе получаем посл. символов.Что с этой посл. нужно сделать? Её нужно поделить на лексемы, которые мы потом будем включать в индекс. Простейшее, что может быть — слова. Но лексемой может быть и что-то, не явл. словом.
+
Что происходит с документом после того, как мы его откуда-то получили: на входе получаем последовательность символов.Что с этой последовательностью нужно сделать? Её нужно поделить на лексемы, которые мы потом будем включать в индекс. Простейшее, что может быть — слова. Но лексемой может быть и что-то, не являющееся словом.
К слову об ограничителях: довольно долго такие лексемы, как C++, не попадали в индекс, так как + — символ-разделитель.
К слову об ограничителях: довольно долго такие лексемы, как C++, не попадали в индекс, так как + — символ-разделитель.
-
Про нормализацию: для русского языка, где слова изменяются зорошо и сильно, информация в индексе хранится для нормализованного слова, подр. мы об этом поговорим потом, но на предв. жтапе, перед тем, ка мы строим индекс, происх. определение и выделение того, что попадает в лексикон, совсем-совсем. Например, слова "яблоко", "яблока", "яблоки" — это разные словоформы одного и того же слова. Логично, чтобы это хранилось в одной единице и где-то рядом была инф., в каком падеже это слово было употреблено.
+
Про нормализацию: для русского языка, где слова изменяются хорошо и сильно, информация в индексе хранится для нормализованного слова, подробнее мы об этом поговорим потом, но на предварительном этапе, перед тем, ка мы строим индекс, происходит определение и выделение того, что попадает в лексикон, совсем-совсем. Например, слова "яблоко", "яблока", "яблоки" — это разные словоформы одного и того же слова. Логично, чтобы это хранилось в одной единице и где-то рядом была информация, в каком падеже это слово было употреблено.
-
Предже, чем мы перейдём непоср. к алг., введм ещё понятия:
+
Предже, чем мы перейдём непосредственно к алгоритмам, введём ещё понятия:
-
детализация индексирования (гранулярность) — что мы считаем единицей индекса, что именно явл. документом. Например, когда мы ищем человека, и его зовут, условно говоря, Иван Петров, то совершенно бессм. выдавать пользователю документ, где Иван находится в начале документа, а Петров в конце. А для слов высокой частотности выероятность того, что они встр. в документе, довольно высока. Или, например, ищем зелёное яблоко. В этом случае соверш. необязательно встречаться словам подряд. Возможно и обратное — предст. одного документа в неск. файлах. В поисковых системах считается, что единица индекс. документ,каким бы он ни был.
+
''Детализация индексирования (гранулярность)'' — что мы считаем единицей индекса, что именно является документом. Например, когда мы ищем человека, и его зовут, условно говоря, Иван Петров, то совершенно бессмысленно выдавать пользователю документ, где Иван находится в начале документа, а Петров в конце. Для слов высокой частотности вероятность того, что они встретятся в документе, довольно высока. Или, например, ищем зелёное яблоко. В этом случае совершенно необязательно встречаться словам подряд. Возможно и обратное — представление одного документа в нескольких файлах. В поисковых системах считается, что единица индексации — документ, каким бы он ни был.
-
Какой самый простейший способ постр. инв. индекса. Это построение индекса с помощью сортировки и групппирования. Что здесь есть в плане информации: есть термин, и есть id документа.
+
Какой самый простейший способ построения инвертированного индекса? Это построение индекса с помощью сортировки и групппирования. Что здесь есть в плане информации: есть термин, и есть id документа.
Термин id документа
Термин id документа
а 1
а 1
Строка 36: Строка 36:
в 2
в 2
а 2
а 2
-
Первый шаг — алф. упорядочивание (лексикографич. сортировка) по терминам.
+
Первый шаг — алфавитное упорядочивание (лексикографическая сортировка) по терминам.
-
Второй этап — группировка. Кроме этого сохраняются позиция в документе, специальные отметки.
+
Второй этап — группировка. Кроме этого сохраняются позиция в документе, специальные отметки.
Вот простейший алгоритм.
Вот простейший алгоритм.
-
Что ещё нужно учитывать? Есть абстр. теор. модели, и есть то, как эти алгоритмы на самом деле работают на конкр. аппаратном обеспечении. То есть, соотношение всех теор. св-в и теор сл-ти алг., оно должно учитывать на практике возм. апп. обесп., особенно при тех оюъмах даннхы, которые обр. крупные поиск. системы.
+
Что ещё нужно учитывать? Есть абстрактные теоретические модели, и есть то, как эти алгоритмы на самом деле работают на конкретном аппаратном обеспечении. То есть, соотношение всех теоретических свойств и теоретической сложности алгоритмов, оно должно учитывать на практике возможности аппаратного обеспечения, особенно при тех объёмах данных, которые обрабатывают крупные поисковые системы.
-
Особенность номер раз: то, что доступ к данным в памяти осущ. быстрее доступа к данным на диске. Поэтому данные, исп. чаще, должны хзранится там, где доступ быстрее. Что ещё: любопытный факт, что индекс, который исп при ответе польз., хранится полн. в оперативной памяти.
+
Особенность номер раз: то, что доступ к данным в памяти осуществляется быстрее доступа к данным на диске. Поэтому данные, использующиеся чаще, должны хранится там, где доступ быстрее. Что ещё: любопытный факт, что индекс, который используется при ответе пользователю, хранится полностью в оперативной памяти.
-
Ещё св-ва: данные хранятся блоками, это част. имеет отношение к тому, как ОС имеет дело с ФС.
+
Ещё свойства: данные хранятся блоками, это частично имеет отношение к тому, как ОС имеет дело с ФС.
-
Можно произв. параллельно обр. информации и чтение/запись данных.
+
Можно произвольно параллельно обрабатывать информацию (?) и чтение/запись данных.
Данных много, всё в оперативную память не влезает. Приходиться выкручиваться, держать часть данных на диске и периодически обмениваться.
Данных много, всё в оперативную память не влезает. Приходиться выкручиваться, держать часть данных на диске и периодически обмениваться.
-
След. алгоритм: блочное инд., основанное на сортировке (BSBI). Чем-то аналогична сортировке слиянием. Здесь можно выделить 4 этапа%
+
Следующий алгоритм: блочное индексирование, основанное на сортировке (BSBI). Чем-то похоже на сортировку слиянием. Здесь можно выделить 4 этапа%
* Сегментация коллекции
* Сегментация коллекции
-
* Сортировка пар идент. термина - идент. документа (каждая часть влезает в память)
+
* Сортировка пар «идентификатор термина - идентификатор документа» (каждая часть влезает в память)
* Запись блоков на диск
* Запись блоков на диск
* Объединение всех блоков
* Объединение всех блоков
-
Дополнительная инф. (язык. хар-ка шрифты, частотность) может записываться.
+
Дополнительная информация (языковая характиристика, шрифты, частотность) может записываться.
-
Второй из хороших алгоритмов — однопроходное инд. в оперативной памяти (SPIMI). Здесь исп. отдеьный словарь для каждого документа. Для каждого нового термина при обработке документа он сохраняется в локальном словаре. Что стоит отметить: взн. проблемы с упорядоченностью при построении, и потом прихожится ещё переупорядочивать. Каждый из соотв. списков по умолч. под него выд. некий объём памяти (встретили терм, нельзя скзаать, сколько ещё раз он встретится; в пред. алг. в случае, когда есть поный список пар терм/документ, фикс. количество таких пар). Это позв. экономить память в нек-рых случая. Есть ещё некоторый плюс: можно от ... сортировки избавиться, поск. каждый раз, когда нам встречается слово, мы знаем, куда его записывать и этой сортировки нет. Поск. кол-во различных слов в документе не может превосз. общего количестве слов в документе, а на практике кол-во существенно меньше общего количества слов в документе, то на отсутствии этой сорировки достигается приличная экономия. Кгда блок закончился, мы отпр. его и начинаем строить новый инв. индекс для нового блока.
+
Второй из хороших алгоритмов — однопроходное индексирование в оперативной памяти (SPMI). Здесь используется отдельный словарь для каждого документа. Для каждого нового термина при обработке документа он сохраняется в локальном словаре. Что стоит отметить: возникают проблемы с упорядоченностью при построении, и потом прихожится ещё переупорядочивать. Каждый из соответствующих списков по умолчанию под него выделяется некий объём памяти (встретили термин, нельзя сказать, сколько ещё раз он встретится; в предыдущем алгоритме в случае, когда есть полный список пар терм/документ, фиксированное количество таких пар). Это позволяет экономить память в некоторых случаях. Есть ещё некоторый плюс: можно от лексикографической сортировки избавиться, поскольку каждый раз, когда нам встречается слово, мы знаем, куда его записывать и этой сортировки нет. Поскольку количество различных слов в документе не может превосходить общего количества слов в документе, а на практике количество существенно меньше общего количества слов в документе, то на отсутствии этой сортировки достигается приличная экономия. Когда блок закончился, мы отправляем его и начинаем строить новый инвертированный индекс для нового блока.
-
Вот, получили мы нек-рое кол-во блоков, можно их объединить, объед. здесь происх. аналогично пред. алгоритму, но здесь сливаются не только вхождения, но и словари.
+
Вот, получили мы некоторое количество блоков, можно их объединить, объединение здесь происходит аналогично предыдущему алгоритму, но здесь сливаются не только вхождения, но и словари.
...
...

Версия 23:22, 30 октября 2010

Есть ещё одна задача: где в сети выложено англоязычная версия книжка Маннинга по информационному поиску.

Построение индекса

Координатный индекс.

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

Координатный индекс — перечень всех позиций. Как правило, номер слова.

Лексема — экземпляр последовательности символов в документе, объединённых в семантическую единицу для обр.

Тип — класс всех лексем, состоящих из одной и той же последовательности символов.

Про экзамен: разрешается пользоваться всем, чем угодно. После начала ответа пользование литературой и залом не допускается.

Термин — тип, включённый в словарь системы информационного поиска. При этом возможна нормализация.

Лексикон — множество всех терминов, включённых в словарь системы информационного поиска.

Что происходит с документом после того, как мы его откуда-то получили: на входе получаем последовательность символов.Что с этой последовательностью нужно сделать? Её нужно поделить на лексемы, которые мы потом будем включать в индекс. Простейшее, что может быть — слова. Но лексемой может быть и что-то, не являющееся словом.

К слову об ограничителях: довольно долго такие лексемы, как C++, не попадали в индекс, так как + — символ-разделитель.

Про нормализацию: для русского языка, где слова изменяются хорошо и сильно, информация в индексе хранится для нормализованного слова, подробнее мы об этом поговорим потом, но на предварительном этапе, перед тем, ка мы строим индекс, происходит определение и выделение того, что попадает в лексикон, совсем-совсем. Например, слова "яблоко", "яблока", "яблоки" — это разные словоформы одного и того же слова. Логично, чтобы это хранилось в одной единице и где-то рядом была информация, в каком падеже это слово было употреблено.

Предже, чем мы перейдём непосредственно к алгоритмам, введём ещё понятия:

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

Какой самый простейший способ построения инвертированного индекса? Это построение индекса с помощью сортировки и групппирования. Что здесь есть в плане информации: есть термин, и есть id документа.

Термин  id документа
а         1
б         1
е         2
в         2
а         2

Первый шаг — алфавитное упорядочивание (лексикографическая сортировка) по терминам.

Второй этап — группировка. Кроме этого сохраняются позиция в документе, специальные отметки.

Вот простейший алгоритм.

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

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

Ещё свойства: данные хранятся блоками, это частично имеет отношение к тому, как ОС имеет дело с ФС.

Можно произвольно параллельно обрабатывать информацию (?) и чтение/запись данных.

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

Следующий алгоритм: блочное индексирование, основанное на сортировке (BSBI). Чем-то похоже на сортировку слиянием. Здесь можно выделить 4 этапа%

* Сегментация коллекции
* Сортировка пар «идентификатор термина - идентификатор документа» (каждая часть влезает в память)
* Запись блоков на диск
* Объединение всех блоков

Дополнительная информация (языковая характиристика, шрифты, частотность) может записываться.

Второй из хороших алгоритмов — однопроходное индексирование в оперативной памяти (SPMI). Здесь используется отдельный словарь для каждого документа. Для каждого нового термина при обработке документа он сохраняется в локальном словаре. Что стоит отметить: возникают проблемы с упорядоченностью при построении, и потом прихожится ещё переупорядочивать. Каждый из соответствующих списков по умолчанию под него выделяется некий объём памяти (встретили термин, нельзя сказать, сколько ещё раз он встретится; в предыдущем алгоритме в случае, когда есть полный список пар терм/документ, фиксированное количество таких пар). Это позволяет экономить память в некоторых случаях. Есть ещё некоторый плюс: можно от лексикографической сортировки избавиться, поскольку каждый раз, когда нам встречается слово, мы знаем, куда его записывать и этой сортировки нет. Поскольку количество различных слов в документе не может превосходить общего количества слов в документе, а на практике количество существенно меньше общего количества слов в документе, то на отсутствии этой сортировки достигается приличная экономия. Когда блок закончился, мы отправляем его и начинаем строить новый инвертированный индекс для нового блока.

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

...

Сжатие.


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


01 02 03 04 05 06 07 08 09


Календарь

Октябрь
13 20 27
Ноябрь
17 24
Декабрь
01 08 15 22


Эта статья является конспектом лекции.

Эта статья ещё не вычитана. Пожалуйста, вычитайте её и исправьте ошибки, если они есть.
Личные инструменты
Разделы