Обзор семинара «Компьютерная лингвистика: изучаем язык запросов»

15

18 апреля разработчик Яндекса Андрей Плахов рассказал, как поисковая система породила язык поисковых запросов, что это за язык, и почему это достойно изучения.

Поисковые запросы пользователей, которые раньше никак не отличались от естественного русского языка, со временем образовали своего рода отдельный язык.

Языки, на которых пользователи интернет-поиска составляют свои поисковые запросы, появились на наших глазах. Лексически они слабо отличимы от более привычных нам языков, например, русского или английского, и в начале своего существования совпадали с родительскими языками. Но языки поисковых запросов быстро отошли от родительских и обзавелись собственными наборами идиом, синтаксисом и даже особыми «частями речи». Небольшой размер и простота их грамматик, а также возможность изучать полное множество высказываний, порожденных на таких языках, делают их идеальными модельными объектами для тестирования моделей усвоения языка.

Андрей начал с проблемы основания языка и с того, почему она является важной для лингвистики.

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

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

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

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

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

Аргумент бедности стимула используется нативизмом для того, чтобы объяснить почему без большого количества врожденных знаний при освоении языка никак не обойтись. Его можно изложить примерно так. По оценкам, к моменту, когда ребенок идет в школу, он знает 2 тысячи слов. То есть, за все это время он изучает 1-2 слова в день, слыша каждое из них 1-2 раза, и успевает понять, как эти слова видоизменяются, как они сочетаются друг с другом. При этом, какие тут еще есть сложности чтобы повторить это в машинной форме в виде алгоритма, который мог бы изучать язык хотя бы с какой-то долей той же эффективности.

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

Если посмотреть на словарную энтропию, на то, сколько бит нам нужно в хэге, чтобы описать встречаемость каждого следующего слова, то словарная энтропия языка запросов ― примерно 13 бит. Для сравнения ― в текстах Льва Николаевича Толстого энтропя получилась 11 бит. Словарный запас всего русского народа, задающего запросы в Яндекс, примерно в 4 раза больше, чем у Льва Николаевича.

Язык запросов ― коммуникативно странный объект потому, что люди на нем обращаются не друг к другу, а к машине. Прагматика всегда одна и та же, и можно ожидать, что доля каких-то конструкций будет отличаться. Доля глаголов, хотя они и не употребляются в таком же виде и с такой же функцией, с какой это происходит в естественной речи, меньше более чем в три раза. При этом, практически все эти глаголы ― слова типа «скачать», «смотреть» и «слушать», так что 10 самых частых глаголов ― это почти половина из всех глаголов языка запросов вообще.

Грамматически язык гораздо проще просто потому, что средняя длина на языке запросов меньше четырех слов, то есть, это даже не предложение, а фраза. Но даже в таком случае можно говорить о с наличии синтаксических струтур применительно к языку запросов.

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

Можно выразить одно и то же на языке запросов разными способами и в глагольной группе. Появляется следующая интересная языковая конструкция, которой в русском языке нет, зато она распространена и хорошо описана в японском. Это топикализация. Соответственно, если это происходит в запросе, то и остальные конструкции должны быть в языке запрещены.

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

Вторая история посвящена вычислительным моделям и тому, как освоение языка можно оценить статистически, имея очень большой корпус языка. Корпус языка запросов по своей природе абсолютно гигантский. Эксперименты, о которых идет речь, проведены на миллионе поисковых запросов день, в тот же день было задано более 200 миллионов поисковых запросов.

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

Задачу решить невозможно, но чем лучше человек или машина овладел языком, тем в большем проценте случаев он эту задачу решит. Все зависит только от предыдущих слов, и вот под эту вероятность отношения мы самое вероятное слово и подставляем. Такие n-грамы могут давать возможность восстанавливать слово, идущее следом, предыдущее слово или слово в середине фразы.

Машина, использующая только такие шаблоны без обобщений, будет владеть языком значительно хуже, чем машина, которая использует какие то более сложные правила. В качестве более сложных правил можно выбрать такие же шаблоны, но в которых уже некоторые слова заменяются на множество слов, например во фразе «сокол и»

Если дальше идут слова, применимые к чему-то книжному, например, названия формата файлов, в которых встречаются книги, то «сокол и» превращается в книгу Акунина «Сокол и ласточка».

Обучающих примеров было 41 тысяча, такое количество слов слышит ребенок к тому возрасту, когда он переходит от отдельных слов к фразам, то есть, в возрасте порядка двух лет.

Синим отмечено, сколько слов угадывает на тестах. В зависимости от количества примеров, немного растет качество. При переходе от 3 к 6 тысячам почти совсем не растет, потом начинает постепенно улучшаться.

Угадывание колеблется в районе 17%. Если вместо левых контекстов применять правые контексты, то неожиданно выясняется, что правые контексты помогают понимать язык на процент лучше. Получается, что слова, которые идут во фразе после некоторого слова, накладывают не него больше ограничений, чем слова, которые идут перед ним.

Если взять все шаблоны и применить вместе, это улучшит предсказание пропущенного слова еще на 10%, и дойдет до того момента, когда будет угадываться одно слово из четырех или одно слово из трех. Это то, чего можно достичь, просто запоминая, какие фразы мы уже слышали, пытаясь подставить самое частое их завершение.

У Яндекса есть леммер, который про каждое слово может рассказать, какая у него лемма и как из этой леммы данная словоформа была порождена. То есть, мы можем породить шаблон, например, если запрос идет «инструкция…» и дальше какое-то слово, и дальше существительное в дательном падеже единственного числа ― то это слово «по»: инструкция по эксплуатации, инструкция по обслуживанию, ремонту. Это можно сделать и с левым контекстом, и с правым.

Второй вид генереализованных шаблонов ― нужно попробовать обобщить некоторое множество слов.

Дальше возникает програмистская работа, как найти все возможные словосочетания, и из бесконечно многого их количества определить, как они должны голосовать, чтобы выдать наилучшее качество в итоге своего голосования. То есть, мы должны выбирать самый уверенный в себе шаблон. Если добавить обобщенные генерализованные шаблоны, использующие всевозможную грамматику, то мы получим увеличение угадывания всего лишь на 0,2%. Контекстно-концептные шаблоны дают максимум 20%.

На глазах возникает новый язык, который представляет собой интересный лингвистический объект. Он проще русского языка, в нем одна известная цель коммуникации, при этом, мы знаем довольно полную его статистику словоупотребления. Он меняется по географии, по времени, вплоть до времени суток, и, что еще замечательно, мы можем свободно его поменять сами. В нем практически не существует предлогов, и даже они являются частью жестких неразрывных конструкций. Он похож на самые первые языки в том смысле, что сперва появляется только указание на объект, потом ― на то, что с этим объектом делать, или к какому его аспекту привлечь внимание.

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

Андрей Плахов: Язык запросов развивается так же, как и любой дугой. Люди слушают друг друга. И есть двустороннее стремление, чтоб коммуникация улучшалась. Насколько этот процесс управляемый ― сложно сказать, мы не пытались. Поисковые подсказки влияют на то, что пользователь вводит, но поисковые подсказки влияют не более, чем на половину запросов.

Вопрос: Ваш язык запросов больше всего похож на пиджин. Будете ли вы его развивать?

Андрей Плахов: У нас были случаи, которые мы стали называть белыми тиграми. Был запрос "фото БЕЛЫХ тигров". Мы поняли, что есть люди которые таким образом, регистром, подчеркивают важность слова в запросе, и мы стали это учитывать.

Вопрос: Не было бы более честно иметь контрольную группу пользователей, которые не видят поисковых подсказок? Чтобы сравнить язык тех, кто подсказок не видит и полностью выражается так, как ему хочется, и тех, кто регулярно получает фид-бэк из этих подсказок и подстраивается?

Андрей Плахов: Нет возможности точно определить человека, который ни разу в жизни не видел поисковых подсказок. Скорее всего, пользователи, которые не пользуются подсказками, меньше находят в поиске.