Решение “Семантический поиск” предназначено для получения нового качества поиска с использованием дополнительной информации об объектах, извлеченной из текста при помощи библиотеки лингвистического разбора RCO Fact Extractor SDK. Результатом такого анализа являются выделенные из текста сущности – наименования организаций, персон, географические (топонимические) объекты, различные символьно-цифровые конструкции (такие, как номера автомобилей или полисов страхования, адреса).

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

Первая функция, появляющаяся у такой системы – поиск объектов в тексте.

Сначала приведем пример самого простого поиска одного объекта по наименованию. Например, поиск упоминаний организации   «Авиакомпании Якутия». Запрос такой:

obj(орг: Якутия)

{ищем объект типа организация с именем Якутия}

Система находит 84 документа, ниже приведены первые 3 документа выборки.

sp2

Следующая возможность – поиск связанных объектов.

Например, нужно узнать, как связаны лизинговая компания «ФЛК» и «Авиакомпания Якутия».

Запрос для поиска таких объектов рядом в тексте на расстоянии до 5 слов выглядит так:

near( obj(орг: ФЛК) [5] obj(орг: Якутия) )

результат: 2 документа

sp3

Преимущество поиска объектов перед обычным текстовым поиском видно на примере поиска лиц с омонимичной фамилией «Заяц».

Запрос такой:

obj(перс: Заяц*)

семантический поиск

Видно, что найдено 28 документов и шум здесь отсутствует. Проверим наличие в базе других зайцев.

Запрос попроще:

Заяц*

sp5

Документов в этом случае существенно больше (134), т.е. содержание шума 80%, и в первых 3 документов в выборке не встречается фамилия Заяц.

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

Запрос простой: obj(гео:).

sp6

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

Запрос для поиска таких объектов со словами на расстоянии до 5 слов выглядит так:

near( obj(орг:) [5] (банкрот* | обанкрот*) )

sp7

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

Запрос на такой поиск выглядит так:

near( obj(орг:) [5] obj(перс: ) [3] (директор | президент | председатель | управляющий | топ-менеджер | вице-президент | замгендиректора | замдиректора | замначальника | замруководителя | заместитель | председатель | главврач | шеф | начальник | руковод*) )

sp8

В данном решении используются следующие продукты RCO:

  1. RCO Fact Extractor SDK;
  2. RCO Zoom.