Продолжаем магаданский цикл рассказов.
Одну и ту же поисковую потребность пользователь может быть выразить разными запросами. Например, запрос «гамбургские гостиницы» кажется эквивалентным по смыслу запросу «гостиницы Гамбурга». Сходство потребностей, выраженных двумя разными запросами, можно попробовать оценить по близости слов в этих запросах. Близость слов может выражаться разными языковыми способами, и для некоторых из них можно придумать алгоритмы построения всех пар слов этого типа, опираясь на представительные корпусы текстов.
Яндекс много лет ищет с учетом морфологии, что выражается в учете отношений двух типов:
а) словоизменительное отношение («маме», «мамой», «маму», «мамы» – формы слова «мама»);
б) видовое отношение (совершенный и несовершенный виды глагола), например “сделать” – “делать”.
Теперь поиск Яндекса (версия «Магадан») еще учитывает следующие отношения:
а) некоторые типы переходов из одной части речи в другую («гамбург» -> «гамбургский»);
б) транслитерация («mazda» -> «мазда»);
в) аббревиатуры (МГУ -> Московский государственный университет).
Списки пар слов, входящих в отношения, собирались автоматически по текстам всего Интернета зоны .ru и по логам поисковых запросов. Для примера рассмотрим алгоритм составления словаря аббревиатур.
1. Сначала из архива веба выделяются цепочки вида <последовательность слов, слово в верхнем регистре в скобках>, например:
- Парламентская ассамблея Совета Европы (ПАСЕ)
- дорожно-транспортные происшествия (ДТП)
- налог на добавленную стоимость (НДС)
- Мобильные ТелеСистемы (МТС)
2. Оставляем пару, если из первых букв последовательности получается слово в скобках. Расшифровки нормализуются и отождествляются без учета стоп-слов, для каждой пары <расшифровка, аббревиатура> получаем количество хостов, с которых ее извлекли.
3. Если средняя частота расшифровки аббревиатуры близка к частоте стоп-слов, а сама расшифровка встречалась меньше, чем на N хостах, удаляем аббревиатуру, например, были удалены:
- что было сделано хорошо (ЧБСХ) -- 18 хостов
- как можно раньше (кмр) -- 49 хостов
- правая рука (пр) -- 46 хостов
- что я за это получу (чязэп) -- 16 хостов
- центр информационных систем и технологий в управлении (цисту) -- 2 хоста
4. Если две расшифровки одной и той же аббревиатуры отличаются по Левенштейну не больше, чем минимальная длина расшифровок, умноженная на k, при этом различия распределены равномерно, тогда считаем это одной и той же расшифровкой, например:
- электронно-цифровая подпись <=> электронная цифровая подпись
- фильтр низких частот <=> фильтр нижних частот
- внутренний валовый продукт <=> внутренний валовой продукт
- железная дорога молдавии <=> железная дорога молдовы
5. Если отношение двух самых частотных расшифровок одной аббревиатуры меньше некоторого порога, тогда такая аббревиатура считается омонимичной и в этой версии удаляется. Например, удаляются:
- фестиваль электронной музыки и экстремального спорта (фэмэс) -- 51
- форум электронной музыки и экстремального спорта (фэмэс) -- 15
и
- единая система почтовых переводов (еспп) -- 273
- единая система приема платежей (еспп) -- 266
и
- управление буровых работ (убр) -- 154
- учреждение банка россии (убр) -- 26
и
- московский государственный строительный университет (мгсу) -- 2181
- московский государственный социальный университет (мгсу) -- 718
6. Удаляем аббревиатуры, если ее частота ниже порога встречаемости, совпадающие с частотными словарными словами, например:
- технические условия (ту)
- пензенское общество любителей естествознания (поле)
- институт гармонического развития и адаптации (игра)
Использование новых расширений слов запроса суммировано в следующей таблице:
- Переход из одной части речи в другую -- 17182 пар слов, 6% запросов
- Транслитерация -- 25455 пар слов, 8% запросов
- Аббревиатуры -- 19360 пар слов, 1,5% запросов
Алексей Сокирко, текстоаналитик