Решение “Семантический поиск” предназначено для получения нового качества поиска с использованием дополнительной информации об объектах, извлеченной из текста при помощи библиотеки лингвистического разбора RCO Fact Extractor SDK. Результатом такого анализа являются выделенные из текста сущности – наименования организаций, персон, географические (топонимические) объекты, различные символьно-цифровые конструкции (такие, как номера автомобилей или полисов страхования, адреса).
Добавление такой информации в поисковый индекс дает возможность более точного поиска объектов по наименованию, поиска объектов определенного типа, обладающим каким-либо свойством, поиска связанных объектов, а также поиска фактов определенного типа. Естественно, для реализации такого функционала видоизменен язык запросов.
Первая функция, появляющаяся у такой системы – поиск объектов в тексте.
Сначала приведем пример самого простого поиска одного объекта по наименованию. Например, поиск упоминаний организации «Авиакомпании Якутия». Запрос такой:
obj(орг: Якутия)
{ищем объект типа организация с именем Якутия}
Система находит 84 документа, ниже приведены первые 3 документа выборки.
Следующая возможность – поиск связанных объектов.
Например, нужно узнать, как связаны лизинговая компания «ФЛК» и «Авиакомпания Якутия».
Запрос для поиска таких объектов рядом в тексте на расстоянии до 5 слов выглядит так:
near( obj(орг: ФЛК) [5] obj(орг: Якутия) )
результат: 2 документа
Преимущество поиска объектов перед обычным текстовым поиском видно на примере поиска лиц с омонимичной фамилией «Заяц».
Запрос такой:
obj(перс: Заяц*)
Видно, что найдено 28 документов и шум здесь отсутствует. Проверим наличие в базе других зайцев.
Запрос попроще:
Заяц*
Документов в этом случае существенно больше (134), т.е. содержание шума 80%, и в первых 3 документов в выборке не встречается фамилия Заяц.
Следующая возможность – уникальная, такой поиск невозможно провести в «чистой» поисковой системе. Это использование для поиска не имени объекта, а его типа. Например, поиск топонимических объектов.
Запрос простой: obj(гео:).
Такой поиск, естественно, выдает большое количество документов, ведь разные объекты определенного типа содержатся почти в каждом документе. Однако сочетание поиска по типу объекта и текстового поиска дает довольно чистую выборку. Скажем, нужно найти все организации-банкроты. Мы будем искать организации, упомянутые в тексте рядом со словами банкрот и банкротство.
Запрос для поиска таких объектов со словами на расстоянии до 5 слов выглядит так:
near( obj(орг:) [5] (банкрот* | обанкрот*) )
Ну, и, наконец, поиск всех руководителей любых организаций. Здесь нам придется составить более сложный запрос, включающий поиск двух объектов типа Персона и Организация, а также перечень названий руководящих должностей.
Запрос на такой поиск выглядит так:
near( obj(орг:) [5] obj(перс: ) [3] (директор | президент | председатель | управляющий | топ-менеджер | вице-президент | замгендиректора | замдиректора | замначальника | замруководителя | заместитель | председатель | главврач | шеф | начальник | руковод*) )
В данном решении используются следующие продукты RCO: