Илья Сегалович: «Как лингвистика помогает поисковой системе понять пользователя?»

16

В Европейском университете Санкт-Петербургa 3 апреля прошла встреча с одним из основателей компании «Яндекс» Ильей Сегаловичем, посвященная теме «Как лингвистика помогает поисковой системе понять пользователя?».

При общении пользователя с поисковой системой возникают две глобальные задачи: правильно трактовать запрос пользователя при обращении к поиску, и отобрать и представить наиболее полезные документы по запросу. В своем докладе Илья Сегалович рассказал, каким образом решается первая задача в Яндексе, и какие методы современной лингвистики при этом используются.

Для начала, решается задача ― как помочь пользователю набрать запрос. Задача этого этапа, этапа составления поисковых подсказок ― сделать так, чтоб поиск происходил не за два-три слова, а за две-три буквы, то есть, чтобы уже между второй и третьей буквами появлялись правильные подсказки. Над этим работает целая поисковая команда.

К счастью, по словам Ильи, поисковые запросы хорошо структурированы и довольно стандартны, например, это касается запросов «купить», «скачать», «цена». Это структурирование достаточно простоe, и поисковая система легко догадывается, что люди набирают.

Далее пользователей можно разбить на несколько групп по интересам, в чем помогают поисковые сессии. Например, пользователю с интересами в соцсетях по введенной букве «в» будет предложен сайт «ВКонтакте», пользователю, интересующемуся музыкой, на «в» будет предложен Виктор Цой или Валерий Меладзе. Процесс этот ― чисто механический.

Сейчас результаты разбиваются на 400 тысяч разных интересов, разных кластеров. И для каждого кластера есть свой способ показа поисковых результатов.

После того, как поисковая система «помогла» пользователю набрать запрос, она должна «понять», на каком языке запрос сделан. Бывает разная письменность, разный набор символов для каждого языка. Например, и с точкой (і) в украинском языке. Есть характерные слова языка, характерные последовательности слов. И, кроме того, про пользователя можно узнать, что он пришел с IP-адреса, который принадлежит Турции, и у него в браузере установлен турецкий язык, как язык поискового интерфейса, и он зашел на турецкий домен yandex.com.tr. И большая вероятность того, что его нужно интерпретировать как пользователя, знающего турецкий язык. На основе всех этих факторов строится классификатор, для каждого языка свой, и два запроса для разных языков будут по-разному обработаны. У Яндекса есть проект «Суржик» для украинского и русского языков. Если понятно, что пользователь понимает оба языка, то по запросу ищутся и украинские, и русские документы, и результаты выдаются без фильтрации по языку. Это довольно редкая вещь, на год позже Яндекса Google сделал подобный проект для Филиппин, для испанского и английского языков. Но обычно выдача дается на одном языке.

Поисковику сложно понять запросы потому, что они, как правило, короткие, и синтаксис в них не такой, как в текстах. К тому же, в них много опечаток. Сложности еще и в том, что есть много неоднозначных интерпретаций. Например, запрос на английском языке не всегда предполагает англоязычные результаты поиска. По запросу «Facebook», сделанному из России, скорее всего, нужны будут результаты на русском.

Часто бывает так, что язык запроса не совпадает с языком искомого документа, например, испанское название песни, слова которой ― на английском. Соответственно, то, что запрос был по-испански, еще не значит, что нужно перестать искать неиспанские документы.

Понимание поискового запроса ― это использование всех интерпретаций этого запроса, использование всех вариантов выразить этот запрос другими способами.

Во-первых, следует сказать, какие языковые явления и как используются лингвистами, когда они строят расширение запроса.

Поисковое расширение ― это набор всех возможных переформулировок запроса с тем же самым смыслом. Это важно потому, что одну и ту же вещь часто выражают по-разному. Кроме того, исходный текст запроса может быть неточным, небрежным, его нужно как-то исправить, скорректировать, добавить более частотное его написание. И бывают достаточно узкие области, о которых пользователь мало понимает, использует, возможно, не те слова, и нужно это угадать, и подставить вместо них нужные слова. К тому же, 15% запросов содержат опечатки.

Первое, что можно сделать ― это расширить запрос морфологическими формами слова, и это было сделано еще в 90-е годы. Нужно также бороться с омонимами (ужé―ýже―уже-й).Для каждого языка есть словарь, который наполняется автоматически. Строятся словообразовательные модели. Добавляются аббревиатуры. Запросы транслитерируются. Учитываются орфографические варианты, например, написание раздельно или через дефис.Бывает, что приходится иметь дело не только со словами. Например, «скачать» ― это не только слово, но и кнопочка, некий семантический эквивалент, в теге которого почти нет никаких слов.

Еще одна интересная задача ― это выделение и угадывание, когда человек имеет в виду конкретный объект реального мира с конкретным названием. Ресторан на Льва Толстого не имеет отношения к писателю, и поисковику нужно выдать адрес, заведение, показать его на карте.

Во-вторых, нужно сказать о том, как помогает контекст, соседние слова запроса помогают избежать неоднозначности или ненужных расширений, борются с неточностями и ошибками. 27% случаев исправляются, благодаря контексту запросов.

Ничего нельзя заменять в запросе в нескольких случаях. Например, вообще ничего нельзя заменять в случае поиска цитат. Нельзя делать замены в случае переименованных объектов, терминов, многозначных слов.

В-третьих, нужно сказать, как технологически все устроено. Например, замену можно делать, исходя из переформулировки запроса, которую делает сам пользователь на основании выдачи по первому запросу. Когда есть вариант замены слова «а» на слово «б», происходит поиск документов по обоим вариантам. Далее сравнивается, в каких документах встречается слово «а» и слово «б», и про каждое слово набирается длинный хвост самых типичных его признаков. Сопоставляя их, видно, что эти хвосты друг на друга сильно похожи ― значит, эти слова синонимичны.

Также можно судить по переходу по страницам. Например, был запрос «а», потом был запрос «б». По двум разным запросам люди перешли на одну и ту же страницу. Это может служить сигналом того, что запросы ― об одном и том же, хотя и состоят из разных слов. И это можно использовать, чтобы сделать расширение запроса.

Всего получается 150 миллионов гипотез. После применения статистики остается 100 миллионов. А дальше разными автоматическими целевыми методами подбирается такой алгоритм, такой классификатор, который на основе всех признаков принимает решение, что одно слово на другое заменить будет хорошо. От этого выиграют все, и никто не проиграет.