Авторубрикатор поисковой машины

Средства статистической и интеллектуальной обработки документов

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

Так как модули извлечения знаний и статистики занимают достаточно много места в коде, то в утилитах версий Lite и Personal они исключены.

Обработка документов без поиска

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

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

-sample *

которая формально является образцом, подходящим для любого документа.

Кроме того, для нормальной работы авторубрикатора желательно включать грамматический движок командой -wordforms. В итоге командная строка будет содержать такой фрагмент

-wordforms -sample *

плюс определение области поиска, плюс команды задания на обработку -datamine (описаны далее).

Автореферирование

Команда -datamine freq выполняет выделение в документе наиболее частых слов (в частности, существительных при заданном аргументе nouns). Общий синтаксис:

-datamine freq "аргументы"

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

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

russian - обрабатывать только русский текст.

english - обрабатывать только английский текст.

spanish - обрабатывать только испанский текст.

french - обрабатывать только французский текст;

число - выводить заданное числом количество слов (по умолчанию - 10).

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

accumulate - вместо частотного анализа отдельно для каждого обрабатываемого файла выполнять частотный анализ для всей области поиска. Результаты будут распечатаны в текстовый файл в формате XML с кодировкой utf-8, в текущем каталоге или в указанном аргументом outdir (см. далее).

outdir XXX - сохранять файл со статистикой по всей совокупности обработанных файлов в указанном каталоге.

 

Далее приводится пример применения команды -datamine freq к файлу, содержащего текст на медицинскую тему:

автореферирование документа

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

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

автореферирование документа

В данном примере, команда -url задает адрес веб-страницы, команда -cp 1251 определяет кодовую страницу документа (как обычно, веб-мастер не озаботился указанием оной в данном документе), -stripdecor=true исключает из рассмотрения содержимое тэгов в HTML документе, -href=false запрещает следование по гиперссылкам. Группа команд -wordforms -datamine freq "nouns,russian" выполняет частотную обработку содержимого документа, отбирая только существительные русского языка.

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

 

Авторубрикатор

Обучение рубрикатора

Для работы авторубрикатор должен быть определенным образом настроен. Во-первых, необходимо определить список рубрик. Во-вторых, авторубрикатору следует предоставить "эталонные" документы для каждой рубрики. После обработки эталонных документов (обучения) алгоритм рубрикатора сможет на основе статистических методик определять степень близости произвольных документов к эталонным.

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

В исходных текстах поискового движка в каталоге Demo\AI\Solarix\search\faind есть два XML файла: topics_db.xml и etalons.xml. Первый файл позволяет задать список рубрик. Второй файл содержит пример задания для обучения рубрикатора.

Для начального создания списка рубрик из файла topics_db.xml используется команда:

faind -topic_db load_xml topics_db.xml

Формат XML файла с описанием рубрик очень прост:

Кодировка должна быть utf-8 (что исключает потенциальные проблемы с заданием многоязычных рубрик). Каждой рубрике присваивается уникальный идентификатор (поле id) и произвольный текст.

Категория и рубрика с именем --corpus-- имеют специальное значение - с их помощью задается "среднестатистическая частота" слов, то есть корпус языка, относительно которого классификатор будет выявлять статистически значимые критерии классификации.

После загрузки в базе данных рубрикатора будет только список рубрик:

состояние базы авторубрикатора

 

Обучение по эталонным документам выполняется командой:

faind -topic_db train etalons.xml

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

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

Вы можете скачать готовую базу авторубрикатора в разделе download.

Просмотр списка объявленных рубрик в консоль - команда -topic_db dump_topics

 

Просмотр данных об одной рубрике - команда -topic_db dump_topic имя_рубрики

 

Полная очистка базы данных рубрикатора - команда  ;-topic_db purge

 

Сохранение базы данных в XML файл -topic_db save_xml имя_файла

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

 

Сохранение файлов базы данных рубрикатора в указанной папке -topic_db save_bin имя_каталога

Эта команда позволяет скопировать готовую базу данных или сделать ее резервную копию.

 

Использование рубрикатора

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

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

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

 

Рассмотрим первый случай. При формировании индекса достаточно указать команду -index topic (также необходимо включить морфологию командой -index wordforms). Индексация будет выполняться ощутимо медленнее и индексная БД займет больше места на диске.

Чтобы выводить сведения о рубриках при поиске, используется команда -echo_topic=true.

 

Во втором случае команда -datamine topic запускает алгоритм, который определяет принадлежность документа к одной из заранее определенных рубрик (авторубрикатор).

Общий синтаксис:

-datamine topic "аргументы"

К примеру, применение заранее обученного авторубрикатора к файлу с описанием болезни (этот же документ использован в примере с автореферированием):

авторубрикатор в работе

Как видно на скриншоте, алгоритм отнес документ к категории медицина с большим отрывом от других категорий.

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

-datamine freq "аргументы"

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


ngrams - учитывать N-граммы, по умолчанию учитываются только отдельные слова. Учет N-грамм замедляет рубрикацию, но дает более качественный результат.

minimum X - минимальная достоверность результатов, значение от 0 до 1. Чем больше это значение, тем выше граница отсечения, тем более достоверные результаты останутся в итоговой выборке.

boost_monograms N - задает целочисленный коэффициент N для корректировки веса отдельных ключевых слов. Задав 0, можно вообще отключить учет отдельных слов, оставив только учет N-грамм.

boost_ngrams N - задает целочисленный коэффициент N для корректировки веса N-грамм.


Также допускается применять универсальные опции рубрикатора.

Чтобы выполнить только рубрикацию документа, не применяя к нему фильтр на содержимое, то есть не проверяя наличие ключевых слов, можно использовать команду -sample *.

 

Универсальные опции рубрикатора

translate_to_nouns - по возможности преобразовывать слова к форме существительного (см. примечания о версиях словаря).

normalize - при частотном анализе нормировать частоты слов относительно их среднестатистических частот слов по большой выборке текстов. Таким образом, нивелируется разница в средней употребимости слов, выделяя локальные отклонения.

russian - пропускать только русские слова

english - пропускать только английские слова

french - пропускать только французские слова

italian - пропускать только итальянские слова

spanish - пропускать только испанские слова.

analyzer - режим форматирования результатов "Анализатор". Результаты будут записаны в XML файл с именем, заданным параметром outfile.

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

Вывод сведений о рубриках из индекса

Если индекс для группы документов создавался с привлечением рубрикатора, то сведения о категориях для документов уже содержатся в индексной БД и выполнять снова запуск рубрикатора для найденных документов было бы излишней потерей времени. Чтобы вывести на экран сведения о рубриках при поиске по индексу, используется команда -echo_topic=true.

Статистическая обработка текстов (модуль EMPIR)

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

scheme1 - получение частот слов (словарных статей и отсутствующих в лексиконе) в обработанных текстах. Формируемые файлы результатов кроме собственно таблицы частот также содержат списки ненайденных в лексиконе слов, позволяя выявлять недоработки в словаре.

scheme2 - получение частот пар слов. Описанные далее аргументы позволяют выбрать тип отбираемых пар.

correl_nn - учитывать пары "существительное-существительное".

correl_na - учитывать пары "существительное-прилагательное".

correl_nv - учитывать пары "существительное-глагол".

distance N - расстояние между словами в паре должно быть не более N слов.

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

to_nouns - считываемые слова перед обработкой переводятся в форму существительного с помощью тезауруса.

outdir XXX - файлы результатов (отчеты) будут записаны в указанный каталог (по умолчанию в текущий).

stat-russian - обрабатывать только русские слова (кириллицу)

stat-english - обрабатывать только английские слова (латиницу)

stat-french - обрабатывать только слова с символами латиницы плюс диактрические символы.

Дополнительные материалы

Процедурный API поисковой системы

Где скачать поисковую систему и SDK

Скачать SDK поисковой системы с примерами и другие компоненты можно здесь поисковая система

  © Mental Computing 2010
изменено 01-Jun-10