Яндекс Малый ШАД - лингвистика в поиске

32
18 мая 2013 г. Лингвистика в поиске Алексей Зобнин Малый ШАД
  • Upload

    -
  • Category

    Business

  • view

    254
  • download

    1

Transcript of Яндекс Малый ШАД - лингвистика в поиске

Page 1: Яндекс  Малый ШАД - лингвистика в поиске

18 мая 2013 г.

Лингвистика в поиске

Алексей Зобнин

Малый ШАД

Page 2: Яндекс  Малый ШАД - лингвистика в поиске

Лингвистика в поискеПоисковая система должна быстро и точно обрабатывать миллионы запросов.

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

Page 3: Яндекс  Малый ШАД - лингвистика в поиске

Поисковые системы

Page 4: Яндекс  Малый ШАД - лингвистика в поиске

Как работает поиск?‒ размер интернета исчисляется экзабайтами‒ в интернете размещены миллиарды страниц

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

Page 5: Яндекс  Малый ШАД - лингвистика в поиске

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

Индекс позволяет по каждому слову найтивсе документы и позиции, в которых оно встречается.

Поиск в интернете состоит из двух больших частей:‒ подготовка поискового индекса‒ поиск ответа на конкретный запрос в индексе

Page 6: Яндекс  Малый ШАД - лингвистика в поиске

Индекс: примерПроиндексируем произведения А. С. Пушкина:

1. «Руслан и Людмила»2. «Евгений Онегин»3. «Медный всадник»…

берегу 1, 2, 3, …дуб 1, …дядя 2, …Евгений 2, 3, …кот 1, 2, …

Page 7: Яндекс  Малый ШАД - лингвистика в поиске

Булев поиск‒ в индексе лежат отдельные слова документов‒ документ рассматривается как множество слов‒ ищем документы, содержащие искомые слова‒ запрос может содержать логические операторы AND, OR, NOT

Поиск сводится к пересечению и объединению упорядоченных списков словопозиций.

Page 8: Яндекс  Малый ШАД - лингвистика в поиске

Недостатки булева поиска‒ нет ранжирования результатов по релевантности‒ не учитываются частоты слов‒ не учитываются расстояния между словами‒ не учитываются различные формы слов‒ нет расширений запроса

Page 9: Яндекс  Малый ШАД - лингвистика в поиске

Расстояния между словамиМодифицируем индекс:будем записывать полные «координаты» слов.Например,

‒ номер документа‒ номер предложения‒ номер слова в предложении‒ ???

Page 10: Яндекс  Малый ШАД - лингвистика в поиске

ТокенизацияКак правильно разбить текст на лексемы?

Ростов-на-Дону но San Francisco-Los Angelesд'Артаньян, п'ять, don't, qu'est-ce que c'est?

Mr. O'Neill thinks that the boys' stories about Chile's capital aren't amusing

中華人民共和國

Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz

Page 11: Яндекс  Малый ШАД - лингвистика в поиске

НормализацияКакие токены следует отождествить?

ё и е (но всё ‒ все, осёл ‒ осел)

cooperation, coöperation и co-operation

iPhone и iphone, Windows и windows?

ä=ae, ö=oe, ü=ue

renyxa

Page 12: Яндекс  Малый ШАД - лингвистика в поиске

Стоп-словаКак поступать с частотными токенами?

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

было или не было?что есть, то естькак, это уже все?

Page 13: Яндекс  Малый ШАД - лингвистика в поиске

Закон ЦипфаЧастота слова обратно пропорциональнаего номеру в частотном списке.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 300

2000000

4000000

6000000

8000000

10000000

12000000

14000000

Page 14: Яндекс  Малый ШАД - лингвистика в поиске

Распознавание языкадружина князя Игоря (русский)дружина князя Ігоря (украинский)

такси — русский или украинский?

kayak — турецкий или английский?

Nokia — на каком языке отвечать?

Page 15: Яндекс  Малый ШАД - лингвистика в поиске

Распознавание языка: факторы‒ алфавит‒ частоты слов в разных языках‒ регион пользователя / адрес документа‒ язык интерфейса пользователя‒ соответствие языковой модели

Используется машинное обучение.

Page 16: Яндекс  Малый ШАД - лингвистика в поиске

Языковые моделиЗадача: оценить вероятность появленияпредложения w1 w2 … wm в данном языке.

Считаем, что

Это — марковское свойство: мы считаем,что вероятность встретить очередное словозависит только от n - 1 предыдущего слова.

Вероятности n-грамм могут быть найдены из корпуса.

P (w 1w 2 ...w m) = ∏i=1

m

P (w i ∣w 1 ...w i−1)≈ ∏i=1

m

P (w i ∣w i−(n−1) ...w i−1) .

Page 17: Яндекс  Малый ШАД - лингвистика в поиске

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

Основные задачи:‒ лемматизация (определение нормальной формы)‒ определение грамматических характеристик‒ генерация других форм слова

Page 18: Яндекс  Малый ШАД - лингвистика в поиске

Префиксное дерево (бор, trie)Цыган, цыганка, цыкать, цыпленок, цыпочки, цыц:

ц ы

г а

ак

п л

о ч

е

т ь

н

к и

о к

ц

на ак

Page 19: Яндекс  Малый ШАД - лингвистика в поиске

Словоформа и парадигма

Словоформа: чаю кофе потанцуем

Лемма: [ча]й [кофе] [потанц]евать

Парадигма: -й-я-ю-й-ем-е

-и-ев-ям-и-ями-ях

- -ую-уй-уешь-ует-евал-евала-евало

-уем-уемте-уйте-уете-уют-евали

-евать

Page 20: Яндекс  Малый ШАД - лингвистика в поиске

Добавим грамматические тегиковер[ковер] сущ, неод, муж, ед, им[ковр]а сущ, неод, муж, ед, род[ковр]у сущ, неод, муж, ед, дат[ковер] сущ, неод, муж, ед, вин[ковр]ом сущ, неод, муж, ед, твор[ковр]е сущ, неод, муж, ед, пр[ковр]ы сущ, неод, муж, мн, им[ковр]ов сущ, неод, муж, мн, род[ковр]ам сущ, неод, муж, мн, дат[ковр]ы сущ, неод, муж, мн, вин[ковр]ами сущ, неод, муж, мн, твор[ковр]ах сущ, неод, муж, мн, пр...

Page 21: Яндекс  Малый ШАД - лингвистика в поиске

А если слова нет в словаре?

я иду {идти} по ковру {ковёр}мы идём {идти} по коврём {коврать?}ты идёшь {идти} по коврёшь {коврать?}вы идёте {идти} по коврёте {коврать?}он идёт {идти} по коврёт {коврать?}они идут {идти} по коврут {коврать?}

http://company.yandex.ru/technologies/mystem/

Page 22: Яндекс  Малый ШАД - лингвистика в поиске

А если слова нет в словаре?«Глокая куздра штеко будланула бокра

и курдячит бокрёнка»Л. В. Щерба.

глокая {глокать? глокий?}куздра {куздра?}штеко {штекий? штеко?}будланула {будланул? будланула? будлануть?}бокра {бокр? бокра? бокрый?}и {и}кудрячит {кудрячит? кудрячита? кудрячитый? кудрячить?}бокренка {бокренк? бокренка? бокренок?}

Page 23: Яндекс  Малый ШАД - лингвистика в поиске

Построение гипотез по образцубокренка: кенгуренка

тигренка → бокренок черенка

→ бокренок

будланула:обманула

→ будлануть

буренкасестренка

→ бокренка керенка

шестеренка→ бокренка

гранула → будланула

манула→ будланул

Page 24: Яндекс  Малый ШАД - лингвистика в поиске
Page 25: Яндекс  Малый ШАД - лингвистика в поиске

Морфологическая омонимияЗадача: выбрать правильный морфологический разбор слова (с учетом контекста).

Хранение денег в банке.Что делают белки в клетке?Фотографии Львов.Капля стекла со стекла.Полосы стали красными...Полосы стали красными реками текли по конвейеру трубопрокатного завода.

Page 26: Яндекс  Малый ШАД - лингвистика в поиске

Скрытые марковские моделиЗадача: приписать наиболее вероятным образом каждому слову wk в предложении тег tk.

Используем формулу Байеса для условной вероятности:

Получаем:

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

P (A ∣B )=P (B ∣A)P (A)

P (B ).

P (t 1 ...tm ∣w 1 ...wm) =P (w 1 ...wm ∣t 1 ...t m) P (t 1...t m)

P (w 1 ...w m).

Page 27: Яндекс  Малый ШАД - лингвистика в поиске

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

Вероятности в правой части могут быть найдены как частоты по большому размеченному корпусу(например, http://ruscorpora.ru)

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

P (w 1 ...w m ∣ t 1 ...tm) P (t 1 ...tm)≈ ∏k=1

m

P (w k ∣t k ) P (t k ∣ t k−(n−1) ...t k−1) .

Page 28: Яндекс  Малый ШАД - лингвистика в поиске

Очепятки‒ орфографические ошибки:

аднакласники

‒ слитное-раздельное написание:афишатеатров

‒ контекстные:меховой слонспорная команда по хоккею

‒ искаженная раскладка клавиатуры:lytdybr

Page 29: Яндекс  Малый ШАД - лингвистика в поиске

Исправление орфоопечаток‒ ищем ближайшие слова по расстоянию Левенштейна:количеству вставок, удалений или замен, необходимых для исправления

‒ используем K-граммный индекс для символов

‒ рассматриваем запросы без опечаток с похожим контекстом

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

Page 30: Яндекс  Малый ШАД - лингвистика в поиске

Расширения запроса‒ синонимы

огромный — большойбегемот — гиппопотам

‒ орфографические варианты написанияджава — ява

‒ транслитерация и переводyandex — яндекс

‒ аббревиатурыМГУ — Московский государственный университет

‒ словообразованиеавто — автомобильсаша — Александр, Александра

Page 31: Яндекс  Малый ШАД - лингвистика в поиске

Источники расширений‒ словари‒ анализ текстов документов‒ анализ логов запросов и кликов‒ переформулировки запросов пользователей‒ автоматические правила

Page 32: Яндекс  Малый ШАД - лингвистика в поиске

Литература1. К. Маннинг, П. Рагхаван, Х. Шютце —Введение в информационный поиск.

2. K. Manning, H. Schütze — Foundations of Statistical Natural Language Processing.

3. D. Jurafsky, J. Martin — Speech and Language Processing.