Задача Яndex.Dict - понимание и расширение запроса пользователя и передача обработанного запроса независимому поисковому механизму. Яndex.Dict работает с уже готовым индексом, созданным без учета морфологии языка.
Принцип взаимодействия Яndex.Dict с поисковым механизмом — преобразование ("морфологизация") поискового запроса, то есть каждый элемент поискового запроса, опознаваемый как слово русского языка, заменяется на все его словоформы.
Пример (из жизни) морфологического разбора:
пить квас преобразуется в
(пей OR пейте OR пив OR пивш* OR пивши OR пил OR пила OR пилась OR пили OR пились OR пило OR пилось OR пился OR пит* OR пить OR питься OR пьемOR пьет OR пьете OR пьется OR пьешь OR пью OR пьют OR пьются OR пьющ*) NEAR (квас OR кваса OR квасам OR квасами OR квасах OR квасе OR квасов OR квасом OR квасу OR квасы)
Если слово не существует в словаре ни как имя нарицательное, ни как собственное, то словарный сервер на основании имеющихся у него морфологических правил строит гипотезы возможной нормализации и словоизменения.
Пример (из почты нашего сервера) генерации гипотезы для "неправильного" слова:
компутер анализируется как
компутер образец: футер (СУЩЕСТВИТЕЛЬНОЕ, им вин, ед, муж, неод)
компутер образец: скутер (СУЩЕСТВИТЕЛЬНОЕ,им вин,ед,муж,неод)
компутирать образец: утирать (ГЛАГОЛ,прош,ед,изъяв,муж,сов)
Существует возможность обучить словарь, что означает пополнить его новыми словами с отнесением их к соответствующей морфологической группе.
Яndex.Dict может также производить синтаксический анализ, то есть определять согласование слов и изменять их соответственно.
Пример (из "Записной книжки" А.Кнышева) учета словосочетаний:
для ваучерного фьючерса превратится в:
для NEAR ((ваучерного NEAR фьючерса) OR (ваучерных NEAR фьючерсов) OR ((ваучерного OR ваучернейшего) NEAR фьючерса) OR ((ваучерных OR ваучернейших) NEAR фьючерсов))
Учет словосочетаний позволяет увеличить релевантность запроса и сократить его длину, что может быть существенно как в смысле быстродействия системы, так и в смысле существующих ограничений на длину запроса.
Свойства поискового интерфейса, необходимые для встраивания Яndex.Dict:
* поддержка операции логического объединения (OR)
* максимальная длина запроса не менее 300-500 символов ( чем больше, тем лучше).
Желательные свойства поискового интерфейса:
* поддержка операции логического пересечения (AND); обязательно наличие скобочных конструкций.
* если максимальная длина запроса невелика (меньше 5K), то желательно наличие wild card по окончанию (например, дерев*).
* способ указания точной словоформы (например, кавычки)
Зачем нужны морфология и синтаксис или Как искать ветра в поле
Распространено мнение, что шаблон "*", означающий любой набор символов, достаточен для поиска в русских текстах. То есть все проблемы, связанные с особенностями морфологии (п. 5.3), решаются путем обеспечения развитого языка запросов (п. 2.2). Но представьте себе - Вы узнали, что искали ветер в поле и нашли. Чтобы найти эту информацию, Вы, вероятно, попросите компьютер поискать слова "ветер" и "поле". Но если в тексте были формы "ветра" или "полях"? Остается вариант шаблона - "вет*" и "пол*", что тут же выдаст Вам материалы о польской ветчине и политике вето! Отсутствие морфологии сильно, а иногда катастрофически влияет на чувствительность и избирательность поиска. Запрос "ветер И поле" уменьшает чувствительность, а "вет* И пол*" - избирательность.
Случаи, когда шаблон не спасает:
* Слова, у которых в разных формах меняется основа (супплетивные формы): идти-шел, плохо хуже, я-меня, человек-люди, ребенок-дети
* Слова с большим количеством словоформ. Привести список всех словоформ русского глагола (с причастными и деепричастными формами - до 250 различных форм) человеку, не имеющему лингвистического образования, очень трудно. Понять, все ли словоформы из этого списка "накрываются" шаблоном "*" - ещё труднее.
* Слова с беглыми гласными и чередованиями. В словаре на 90000 слов, используемом в нашей системе, примерно четверть слов имеет чередования, которые не позволяют найти слово по шаблонам: (искать-ищу, окно-окон, расти-рос: запрос и* или ок* или р* даст много мусора)
* Короткие (три-четыре буквы) слова: дом, хор, ... . Во всех языках, в том числе и в русском, имеется общая закономерность: чем чаще слова используются, тем они короче. Применение шаблона "*" в коротких словах приводит к большому количеству ненужных ссылок в списке найденных документов.