Наверно, не стоит тут перечислять все поисковые технологии как предысторию вопроса, освещением которого хотелось бы открыть блог нашего проекта на Мегамозге. Заинтересованным читателям они наверняка известны. Отмечу только, что технологии поиска на сайте и в документах не так разнообразны и развиты как поиск в интернете. По заявлениям одного поисковика, для поиска и ранжирования результатов на корпоративных сайтах применяется где-то 100 параметров. Для сравнения, у них же для поиска в интернете применяется более 1000 различных параметров. Естественно, что даже эти 100 параметров на самом деле сводятся к 3-5 технологиям, в которые они входят.
В основном поиск на сайте стараниями разработчиков ограничивается простым поиском по ключевым с учетом близости слов запроса друг к другу, а также разные варианты ранжирования на основе совстречаемости слов. Еще немного морфологии, синонимов и иногда, как например у RCO, учет некоторых аспектов синтаксиса запроса для установки операторов поиска (см. у них на сайте публикацию о поиске). И на этом по сути технологии поиска в ограниченном корпусе документов заканчиваются. Все эти инструменты встроены в поисковые машины Sphinx и Lucene, доступные любому смертному программисту.
В результате для поиска на сайте мы имеем только поиск по ключевым словам, расширенный морфологией и иногда синонимами. Но поиск по сайту — это не поиск в интернет. Результат гораздо хуже. И вот почему.
В интернете поиск легче тем, что там всегда (почти) найдется текст, который выражен такими же словами как и в запросе. Поэтому там работает поиск по ключевым. И в ранжировании можно опереться на такие факторы как миллионы просмотров результатов такого же запроса, а также ссылки с других источников и т.п. На корпоративном сайте или базе документов ничего подобного нет и не может быть — количество текстов сильно меньше, чем во всем интернете, пользователей еще меньше, а на многие страницы вообще никто не ссылается.
В результате поиск по ключевым в таких ограниченных условиях приводит к печальным результатам. Об этом косвенно говорит то, что обычно строка поиска на сайтах стоит где-то в углу как не самый важный интерфейс, и все сайты пытаются сделать универсальную навигацию по рубрикам и ссылкам на сайте. Почему это плохо для юзера объяснять не буду. Скажу только, что получается или много рубрик, или большие тексты, которые никто не читает. Конечно, есть такие технологии как Comprento от ABBYY, основанные на онтологиях. Но они не массовые в силу своей стоимости, и применимы только в освоенных их онтоинженерами областях. Мы же говорим об обычных смертных.
Мы решили привнести в поиск немного семантики. Это единственный выход при поиске в ограниченном корпусе текстов, таких как сайт или корпоративные документы. Мы считаем, что для достижения лучших результатов поиск должен производится не столько по ключевым, но и по семантической схожести запроса и искомого текста. Схожести всего запроса, а не отдельных слов из него. Почти все слова в языке многозначны. И значение больше зависит от контекста, то есть от их совместного результата. Именно поэтому поиск по отдельным ключевым не работает — найденное отдельное слово в тексте может оказаться там совсем по другому поводу. И даже поиск по одному слову (теме, topic) должно быть точнее — результат должен соответствовать наиболее часто используемому концепту этого слова, в надежде встретить который юзер и вводит слово в поиск.
Мы же ищем сходство «по смыслу», то есть с учетом всех слов запроса и соответственно теме запроса. Поиск ранжируется именно по параметрам семантической схожести, а не частоты или совстречаемости ключевых слов запроса (хотя это тоже учитывается как один их параметров). И результат очень обнадеживающий — вверху поисковой выдачи при поске в документах только те предложения из текстов, которые наиболее релевантны запросу. Мы можем выдавать всего 2-3 поисковых результата с уверенностью в 95%, что они отвечают на заданный в поиске вопрос. Скоро мы откроем на сайте несколько демонстрационных страниц, где реализованы наши технологии и я опишу их тут.
Пока мы не будем распространяться о том, как и с помощью чего мы достигаем такого результата. Конечно, это синтаксический анализ и семантические конструкции, но не только. Специалисты примерно догадаются сами, а остальным мы предлагаем обращаться к нам, все возможности будут доступны по API.
Автор: Xom