Ющук Евгений Леонидович (yushchuk) wrote,
Ющук Евгений Леонидович
yushchuk

Поиск с учетом словоформ русского языка

http://www.rco.ru/article.asp?ob_no=270

Плешко В.В.
Oracle Magazine, Июнь/Июль 2003

Статью так же можно прочитать по адресу http://www.oracle.com/ru/oramag/june2003/index.html?russia_rco3.html

Аннотация

В статье рассматриваются вопросы организации контекстного поиска в СУБД Oracle при помощи компоненты Oracle Text и продукта Russian Context Optimizer (RCO). Статья состоит из двух частей.

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

Вторая часть полностью посвящена примерам. Читателю предлагаются варианты решения следующих задач:

* поиск с учетом словоформ (два подхода),
* подсветка искомых слов при выдаче документа,
* построение реферата по запросу.

Все примеры предназначены для запуска в SQL*Plus.

Организация поиска по массиву текстовых документов

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

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

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

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

Oracle Text

Oracle Text представляет собой поисковую машину, встроенную в Oracle Database. Это позволяет задавать в запросах одновременно контекстные и реляционные ограничения, а также выполнять администрирование реляционных и полнотекстовых индексов едиными средствами. Краткий обзор Oracle Text содержится в статье Изучение основ Oracle Text (Oracle Magazine RE – 2001 – май).

Oracle Text предлагает пользователю широкий спектр возможностей при построении поисковых запросов. Перечислим операторы, относящиеся к контекстным ограничениям: ACCUMulate (,), AND (&), EQUIValence (=), MINUS (-), NEAR (;), NOT (~), OR (|), weight (*), wildcard (%, _), WITHIN. Все эти операторы поддерживаются для текстов на всех языках, поддерживаемых Oracle Database. Подробное описание операторов приведено в документе Text Reference, входящим в поставку СУБД Oracle.

Кроме того, Oracle Text содержит процедуры для выдачи документов ctx_doc.markup и ctx_doc.highlight. Ниже будут даны примеры использования этих функций для решения задачи выдачи текста документа с выделенными искомыми словами и выдачи фрагментов документа, содержащих искомые слова.

Существуют также операторы, поддержка которых ограничена несколькими языками, в число которых русский язык не входит. В частности, оператор stem ($), служащий для поиска всех грамматических форм слова поддерживается только для шести европейских языков (английский, французский, испанский, итальянский, немецкий и датский).

Russian Context Optimizer

RCO является программным продуктом компании “Гарант-Парк-Интернет” и предлагает лингвистическое обеспечение и алгоритмы, необходимые для выполнения поисковых операций на массивах русскоязычных текстов. Первая версия RCO вышла в ноябре 1997 года. Текущая версия, 4.0.1, датируется ноябрем 2002 года. Информацию о продукте можно найти в разделе "Продукты/RCO for Oracle". Пробную версию продукта можно получить здесь, пройдя несложную процедуру регистрации

С точки зрения разработчика, RCO является пакетом PL\SQL процедур. Пакет называется rco_context. Упоминание этого пакета в примерах в качестве квалификатора имени процедуры означает использование RCO.

При использовании RCO существенным является понятие “настройка” (setting). Настройки, аналогично предпочтениям (preference), связываются с полнотекстовым индексом и используются при поиске и обновлении индекса. В Приложении 1 приведен пример создания настройки RCO. Для выполнения всех примеров необходимо создать две настройки: одну без использования фильтра RCO (далее будем на нее ссылаться как на settingAsIs), другую – с использованием фильтра (settingFilter).

Русский язык в цифрах

Большинство слов русского языка имеют десятки различных грамматических форм, поэтому для их поиска в тексте необходимо использовать морфологический анализатор. Морфологический анализатор RCO позволяет обрабатывать более 110 тысяч слов, заданных в морфологическом словаре, а также любые неизвестные слова, анализируя их по аналогии с похожими известными словами. Используемый при этом словарь лингвистических данных для русского языка включает в себя около 110.000 словооснов, 6.000 окончаний, 1.500 моделей словоизменения, 200 суффиксов, что соответствует 2.5 миллионам распознаваемых словоформ. Примеры словоформ, порождаемых одним словом:

* ПРЕЗИДЕНТ=ПРЕЗИДЕНТА=ПРЕЗИДЕНТУ... – всего более 10-ти форм;
* ПРЕЗИДЕНТСКИЙ=ПРЕЗИДЕНТСКОГО=ПРЕЗИДЕНТСКОМУ... – всего более 20-ти форм;
* КУЗДРЯЧИТЬ=КУЗДРЯЧИЛ=КУЗДРЯЧИЛА... – всего более 100 форм, включая склоняемые формы причастий “куздрячащий”, “куздрячивший”, “куздряченный”.

Если быть более точным, в русском языке существует четыре типа парадигм словообразования: парадигма существительного (14 грамматических форм), парадигма прилагательного (31 грамматическая форма) и парадигма глагола (146 форм, не считая 86 возвратных). К четвертому типу (вырожденному) относятся все неизменяемые слова.

Из 110 тысяч слов русского языка более 2-х тысяч имеет совпадающие грамматические формы. Для обозначения этого явления используется термин омонимия. Примеры слов-омонимов:

* АРХАНГЕЛЬСКОМ (АРХАНГЕЛЬСК сущ., АРХАНГЕЛЬСКИЙ прил.),
* БАНКА (БАНК сущ. муж. р., БАНКА сущ. жен. р.),
* БЕГУ (БЕГ сущ., БЕЖАТЬ гл.),
* БОРОВ (БОР сущ. неодуш, БОРОВ сущ. одуш.),
* МАТЕРЕЙ (МАТЕРЕТЬ гл., МАТЕРЫЙ прил., МАТЬ сущ.).

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

Как учет словоформ повышает качество поиска

Для оценки качества поиска на практике чаще всего используются два показателя: полнота и точность.

Полнота - отношение числа полученных релевантных документов к общему числу релевантных документов в базе.

Точность – отношение числа полученных релевантных документов к общему числу полученных документов.

Мнение системы о соответствии документа запросу не всегда совпадает с мнением пользователя. В противном случае точность и полнота были бы 100%. На практике, чем система больше возвращает документов на запрос, тем выше полнота. Если система вернет все документы, хранящиеся в базе, полнота заведомо будет 100%, а точность близка к нулю. Чем больше релевантных документов попадет в начало списка, выдаваемого системой, тем выше точность. В идеальном случае все релевантные документы должны находиться в начале списка. Поэтому при выдаче документы упорядочиваются в порядке убывания релевантности.

В реальных системах требования высокой точности и полноты являются взаимоисключающими. Типичный график зависимости точности от полноты приведен на рис. 1. Участок в левом верхнем углу соответствует просмотру нескольких первых документов, участок в правом нижнем углу – просмотру всего списка. Данные для построения графика взяты из статьи Text Retrieval Quality: A Primer посвященной замерам качества Oracle Text на наборе текстовых данных TREC.

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

По различным оценкам, учет словоформ в зависимости от длины запросов и документов повышает точность и полноту результатов поиска до 40%.

Рисунок 1. Зависимость точности от полноты

Два подхода к организации поиска с учетом словоформ

На логическом уровне индекс практически любой поисковой системы содержит список троек <документ, позиция словоместа, индексируемое слово>. Начиная с 9iR2, одному словоместу может соответствовать несколько индексируемых слов.

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

При поиске задача системы – извлечь из индекса список пар <документ, позиция словоместа>, для которых индексируемое слово=поисковое слово. Отметим, что в случае использования оператора эквивалентности (EQUIV), индексируемое слово проверяется на принадлежность множеству поисковых слов.

Чтобы обеспечить поиск с учетом словоформ можно избрать одну из стратегий.

Способ 1:

* Заносить в индекс слова в том виде, в котором они встречаются в тексте.
* При поиске использовать оператор EQUIV и указывать все возможные грамматические формы слова. Перечислять все формы вручную очень неудобно. RCO позволяет автоматизировать эту операцию.

Способ 2:

* Заносить в индекс вместо слов их нормальные формы (в литературе также используется термин “лемма”). Это можно сделать при помощи фильтра, предоставляемого в RCO.
* При поиске заменять слова в запросе их нормальными формами. RCO позволяет сделать это автоматически.
 

 

 

Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments