HWdTech

Поисковые запросы на русском языке

Семантический анализ фразы на русском языке для извлечения поискового запроса
Клиент

Популярный портал бесплатных объявлений

Сайт готовился к редизайну. Новая версия предусматривала запросы на поиск объявлений обычным русским языком.
Задача

Написать алгоритм разбора поисковых запросов, записанных в произвольной форме.

Текущая версия сайта умела искать объявления по вхождению слова или набора слов (полнотекстовый поиск), при этом если набрать «3 линия», то будут найдены все объявления, в которых есть слова «линия» и 3. Но, если пользователь наберет «третья линия», то выдача будет нерелевантной.
Анализ текущих запросов показал, что такой вариант встречается очень часто, как и: «двушка в нефтах» — двухкомнатная квартира в городке Нефтяников, «матрешка» — автомобиль mazda 3, или «улица Мира» хотя, например, такой улицы нет, а есть проспект Мира, «улица Олега Кошевого» может быть написана в одном из следующих вариантов: улица Кошевого, Олега Кошевого, улица О Кошевого, Кошевого Олега улица, Кошевого О.
Мы насчитали, в исполнении пользователей, только 15 вариантов написания марки Toyota. Есть автомобили, название моделей которых состоит из нескольких слов, например, модели BMW, Mersedes, Камаз: пользователи ищут либо точное имя модели, либо по ее части.

Решение

Мы разработали собственный алгоритм разбора текста, основанный на допущении, что хвост всей фразы определяет ее смысл. Например, «продается небитая, некрашеная с маленьким пробегом машина на запчасти.» Здесь окончание «на запчасти» в корне меняет смысл всей фразы — здесь речь идет о «конструкторе», говоря на языке профессионалов, — наборе запчастей.
Данный алгоритм был применен также для разбора самих объявлений, поступающих от независимых поставщиков контента. Это значительно упростило интеграцию с клиентами, так как не требуется синхронизация справочников, тех же улиц, или марок и моделей машин, не требуется какого-либо строго формата для описания объявления — достаточно простого текста, наш алгоритм при распознавании автоматически исправлял некоторые виды ошибок в исходных данных, например, как улица Мира на проспект Мира и т.д.

Результат

800 т.р.
Затраты на разработку (2013 год)
<2 мс
Среднее время обработки запроса
90+ K
правил разбора запросов и самих объявлений