ESSLLI 2014 — дневник партисипанта

DSCF5791ESSLLI (European Summer School in Logic, Language and Information) — это большая, старая и довольно известная школа, на которой одной из главных тем является обработка текста. В этом году школа проводилась в двадцать шестой раз (!), многие из тех, кто раньше приезжал студентами теперь приезжает преподавателями. Школа идет две недели, каждый раз в новом месте. В этом году — приятный университетский городок Тюбинген (Германия). Программа двух недель достаточно независима, поэтому кто-то приезжает только на одну неделю, но большинство — на обе. Обучение идет в трех треках: Language and Computation (этот трек, собственно, содержит все, связанное с nlp), Language and Logic, Logic and Computation. В день всего четыре пары, и в каждом треке предлагается два курса для каждой пары. Иными словами, всего в неделю предлагается двадцать четыре разных курса, из них для посещения можно выбрать любые четыре. Во вторую неделю — другие двадцать четыре курса, из которых тоже можно посещать любые четыре. Переходить с курса на курса посреди недели тоже можно, никто за этим не следит, но предполагается, что материал предыдущих недель уже знаком.

Программу первой недели можно посмотреть тут, второй — тут. Поколебавшись между «общим развитием» и практической пользой, я решила, что буду выбирать все из первого трека, т.е. непосредственно связанное с моей специальностью. Таким образом, выбор свелся к бинарной оппозиции, что несколько упростило задачу. Вообще считается, что ESSLLI — это знак качества, все курсы там блестящие и высочайшего уровня. По крайней мере, у меня по рассказам сложилось такое впечатление. На практике это оказалось не совсем так.  Но обо всем по порядку. Я постараюсь рассказать обо всех курсах, на которых я была, ну и  обо всяких сопутствующих моментах.

 

Introduction to Constraint Grammar

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

Как это работает. Как правило, грамматику пишут поверх морфологического анализа, со всеми его неоднозначностями. Правила позволяют вычеркивать один их вариантов разбора или выбрать один правильный. Соответственно, в правиле кодируются ограничения на контекст, в котором это можно сделать — при этом контекстом является весь текст. Т.е. можно написать, например, правило для английского языка «вычеркни вариант разбора с глаголом в личной форме, если слева уже имеется такой глагол и на пути к нему не встречается знаков препинания или слов, которые маркируют границы клауз» (это правило эксплуатирует прямой порядок слов в английском языке).

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

Сам курс был очень практически ориентированным. Вел его симпатичный Eckhard Bick, при этом на курсе постоянно присутствовал программист Tino Didriksen, который написал большую часть софта, помогал его всем устанавливать, и т.п. Большую часть занятий показывали  CG-3 IDE интерактивный интерфейс для разработки грамматик. Слева у нее входной текст, посередине грамматика, справа выходной вариант разбора. Как только дописываешь новое правило, программа его тут же применяет к входным данным и сразу виден результат. Например, Бик брал предложение «I need a  cold shower» (у каждого слова по три варианта разбора) и спрашивал «как мы можем исключить вариант «существительное» для need?». Кто-нибудь говорил про личное местоимение перед ним, он тут же писал правило, с объяснениями — там синтаксис не безумно сложный, но надо освоится — и оно работало! И потом мы вместе смотрели, что это правило сделало с другим предложением, и думали как исправить неточности. А на другом занятии писали синтаксические правила для деревьев зависимостей. При этом программа сама следит за тем, чтобы в дереве не было циклов — если правило создает цикл, оно просто не применяется, и все.

Параллельно обсуждали всякие методологические и теоретические вопросы. Например, Бик всячески агитировал за деревья зависимости в противовес грамматике составляющих. Говорил, что методологически зависимости гораздо удобнее (из-за известных проблем с непроективностью и неправильным порядком слов), их проще писать и в них меньше ошибок. Когда его просят сделать разметку с составляющими — некоторые лингвисты считают их более адекватными с теоретических позиций — он пишет сначала зависимости, а потом конвертирует их в составляющие. Много задавали вопросов про машинное обучение. Бик сказал, что эксперименты с автоматическим построением таких грамматик проводились, но впечатляющих результатов не дали. Главная проблема в том, что для обучения нужны «кандидаты в правила» — и эти кандидаты не могут быть просто перебором всех возможных вариантов. Поэтому нужно накладывать какие-то ограничения на размер контекстного окна, т.е. теряется преимущество полного контекста. В итоге, такие грамматики получаются не сильно лучше обычных вероятностных парсеров, написанные вручную намного точнее. Однако машинное обучение можно применять для уже существующей грамматики, для оптимизации правил и ускорения работы.

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

Читатель ждет уж ссылок. На вот, возмите их скорей: http://beta.visl.sdu.dk/constraint_grammar.html — вся информация про инструменты, которые нам показывали на курсе, в том числе сслыки для скачивания, документация, статьи, тюториалы.

http://beta.visl.sdu.dk/cglab.htm — лаборатория, где можно ничего не устанавливая посмотреть, как все эти инструменты работают на конкретных примерах, в том числе для русского языка; там же выложены слайды с ESSLLI и шаблоны грамматик, которыми мы пользовались на упражнениях.

Контакты разработчиков можно найти вот здесь: http://beta.visl.sdu.dk/cg3.html. Они всячески поощряли с ними связываться, если что-то не работает, не устанавливается на конкретную систему, если есть вопросы и предложения.

Рассылка по constraint grammar: https://groups.google.com/forum/#!forum/constraint-grammar, там обсуждают, в том числе, эти конкретные инструменты.

Apertium  — платформа для создания  машинного перевода основанного на правилах — так же использует Constraint Grammar.  Там выкладывают опен-сорсные грамматики для разных языков, в том числе русского.

Кроме того, русским занимаются в университете Тромсе: http://giellatekno.uit.no/english.html. На какой там все стадии, понять не удалось, но этой темой там занимается постдок  Francis Tyers, который, как нам сказали, будет очень рад сотрудничеству. И я помню, что несколько лет назад мне кто-то давал ссылку на русских коллег, которые тоже разрабатывают. Было какое-то обсуждение в сети, буду благодарна, если еще раз поделитесь ссылками.

Так же из курса я узнала, что Constraint Grammar придумали в Финляндии, и что компании Lingsoft и Connexor используют именно их как основу своих инструментов.

В целом курс, хоть и не был каким-то особо зажигательным, подействовал на меня очень вдохновляюще. Во-первых, понравилась сама идеология и инструменты. Во-вторых, очень воодушевляет пример самого Экхарда Бика — это человек фантастической продуктивности, в диапазоне от португальского парсера до эсперанто-датского словаря, при том, что родной у него немецкий. У него есть своя фирма, которая разрабатывает разный языковый софт, как для лингвистов, так и для конечных потребителей (например, для обучения языку). Вот несколько примеров:

CorpusEye: corp.hum.sdu.dk — аннотированные корпуса на разных языках

VISL games: http://beta.visl.sdu.dk/visl/games.html — обучающие игры для обучения языку

WikiTrans: wikitrans.net — машинно-переведенные версии википедии; со шведского на датский, с английского на эсперанто

GramTrans: gramtrans.com — инструменты машинного перевода и словари; тут мне больше всего понравился DeepDict — в него вводишь слово, а он собирает по корпусу самые достоверные контексты, причем раскладывает их по синтаксическим ролям. Работает для двенадцати языков. snapshot1

Textual Inference

Довольно любопытный курс, который вели двое приятных молодых людей, Tae-Gil Noh и Sebastion Pado, оба из разных немецких институтов. Не знаю, почему он так назывался, рассказывалось в нем про то, что называется Textual Extailment. Это относительно новый тип задания, по которому устраивают разные shared tasks. Очень много материалов по теме собрано на ACL wiki, там в том числе есть ссылки на датасеты прошлых лет.  В этом году замахнулись аж на Твиттер; это не значит, что с неТвиттером уже нет никаких проблем, но тем не менее.

Саму задачу можно сформулировать примерно так. Дано два предложения «The technological triumph known as GPS was incubated in the mind of Ivan Getting.» «Ivan Getting invented GPS».  Система должна сказать, следует ли второе из первого. Существует несколько способов это делать это делать. То есть, поначалу-то люди по-простому считали число пересекающихся слов. Это называлось alignment. Но потом в ход пошла тяжелая артиллерия в виде синтаксиса, логики и семантики.

Если говорить коротко, то для этого существует три основных метода. Первый основан на трансформациях (BIUTEE). К входному предложению применяется серия трансформационных правил, которые потихоньку делают из него исходное предложение. Или не делают, тогда делается вывод, что логической связи между ними нет. Весь фокус, понятно, в том, когда и в каком порядке применять правила.

Второй метод (EDITS) основан на определении обычного расстояния редактирования между двумя фразами. Только редактирование делается не на символьном уровне, а на лексическом и синтаксическом, с привлечением разнообразных баз знаний, если они доступны.

Третий метод (TIE) основан на идее логического вывода. Ну то есть не логического, а Textual Inference, когда строятся правила, по которым можно переходить от одного утверждения к другому. Все три метода обучаются автоматически, хотя могут использовать большое количество ресурсов, типа ворднета или VerbOcean.

В целом у меня возникло ощущение, что все это либо очень «научное» и непрактичное, либо просто новый способ думать про старые задачи, типа Question Answering. Преподаватели тоже говорили, что пока сильного практического применения не видно, хотя есть отдельные примеры. Например, они с помощью такой технологии систематизировали объяснения пользователей, почему они отказываются он кабельного телевидения: объяснения-перефразы складывали в одну папочку, более частные утверждения складывали в подпапочки и т.п. Получилось логично и обозримо.

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

Поэтому — в этом месте должна звучать барабанная дробь — а вы знаете, что немецкие студенты после лекций стучат по столу костяшками пальцев — вместо апплодисментов — так вот,  поэтому Но, Падо и компания выступили с инициативой создания EXCITEMENT Open Platform (EOP)  — это опен-сорсная модульная платформа для текстового вывода. Основная идея — создать что-то вроде Moses или Uima, рамочную систему, которая уже как-то работает, внутри которой можно тестировать новые идеи и подключать разные компоненты.

В основе архитектуры — разделение на три части: лингвистические компоненты; динамические и статические компоненты алгоритмов; ядро, собственно алгоритм принятия решений. Лингвистические компоненты полностью взяты из UIMA — так что если для вашего языка уже есть компоненты внутри UIMA, считайте, можно уже пробовать textual inference (я, правда, не знаю, как там с русским, кто знает — пожалуйста, пишите комментарии). Статические компоненты — это разные базы знаний и сборники правил. Динамические компоненты — например, всякие извлекаторы фич для статистических классификаторов; используя одни и те же компоненты, можно быть уверенным, что ядерные алгоритмы принимают решения на основе ровно одних и тех же данных, и сравнивать их в чистом виде.

snapshot2 Выпущена уже версия 1.1.3, в которой реализованы три основных алгоритма и предварительно натренированы модели для английского немецкого и итальянского. В качестве демо показывали минимальный фрагмент Java-кода, правда небольшой, который позволяет  эту штуку встраивать в свои программы. В общем, для этих, у кого уже руки чешутся, вот тут есть Quick Start.

Еще нам показывали результаты эксперименты по сравнению разных алгоритмов и разных ресурсов — все сделано внутри той же EOP. WN в табличке означает WordNet.  Как видно из таблицы (и как было ясно из предыдущего обсуждения), EDITS наименее требовательный к ресурсам и начинать на новом языке лучше с него. snapshot3 Потом было еще небольшое философское обсуждение — почему методы основанные на глубокой семантике и логике работают хуже, чем всякие бессмысленные сравнения на строках. Ну, потому что язык сложен и многообразен, а логика точна, но невыразительна. На естественном языке можно сказать гораздо больше, чем на логике предикатов. Но сказали, что забывать о семантизированных методах все равно не стоит, в них много полезного, нужно время от времени пробовать и улучшать инструменты, типа семантических парсеров. В общем, этот курс тоже воздействовал вдохновительно — и сами преподаватели, и их вера в прогресс, и их готовность в этом прогрессе участвовать.

Cross-Language Algorithms and Applications

Этот курс был не очень удачным. Он был заявлен как «Advanced», но на самом деле был в лучшем случае «Introductory». Как я узнала, уровень проставляют сами преподаватели, когда подают заявки, и никто это потом не перепроверяет и не выравнивает. А тут еще было слишком много тем в одном курсе, в итоге каждую рассматривали довольно поверхностно. Плюс еще преподаватели не слишком пассионарные. Конечно, какая-то полезная информация там была, но вычленять ее было довольно тяжело. Параллельно шла визуализация для лингвистов, там, говорят, было динамично и интересно.

Computational, Cognitive, and Linguistic Approaches to the Analysis of Complex Words and Collocations

Помимо обычных курсов на ESSLLI есть еще воркшопы — мини-конференции по какой-то конкретной теме. Мы с коллегой, собственно, и приехали потому, что у нас приняли статью на этот воркшоп (Automatic Collocation Extraction and Classification of Automatically Obtained Bigrams).

Помимо воркшопа, есть еще студенческая конференция, но я туда почти не ходила, потому что там были доклады по большей части по формальной семантике, а их моими корпусными мозгами воспринимать трудно. Из того, что я слышала, понравился только один доклад — про n-gram viewer — инструмент, судя по описанию, очень удобно и толково сделан, и девочки очень приятные про него рассказывали. Но, в общем, большинство участников использовали время студенческой конференции для того, чтобы немного передохнуть: четыре пары каждый день — это и без конференции тяжело. Так что особого желания подавать на студенческую секцию на будущий год у меня не возникло.

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

Но про воркшоп. Он мне очень понравился, и по уровню вполне походил на небольшую конференцию (т.е., субъективно, был гораздо сильнее студенческой сессии). На воркшопе было два приглашенных докладчика. Первый был от Melanie Bell. Она сама по себе персонаж довольно интересный — много лет работала просто учительницей английского языка, в том числе для иностранцев, но потом в какой-то момент вернулась в науку, защитила PhD. Доклад она сделала про ударения в английских именных группах: пыталась построить предсказательную модель того, почему в словосочетаниях «credit card», «table lamp», «summer school» и многих других ударение ставится на первое слово, а в словосочетаниях «silk shirt», «kitchen sink», «summer dress» и так далее — ровно наоборот.

Она интересно рассказывала, со множеством примеров, но в целом на меня эффект произвела обескураживающий. Я поняла две вещи: во-первых, этот язык выучить невозможно; во-вторых, построить сколько-нибудь внятную модель этого явления тоже невозможно. Слишком много факторов — и чисто поверхностных, типа длины слов, и семантических, типа отношения между компонентами, и разных других, например, частоты компонентов, их семантического класса. При этом Белл утверждала, что носители языка не только безошибочно ставят ударения в таком случае, но и просто не понимают такие словосочетания, если в них неправильное ударение. Рассказывала, как они с мужем ехали по голосовому навигатору, и навигатор в какой-то момент велел им повернуть на «Valley Road» — паника, мы заблудились, мы опоздаем, остановились, достали бумажную карту — «Ah! Valley Road» — так вот же она, поехали.

Вторым ключевым докладчиком был Eduard Hovy с докладом на тему «The Semantics of Word Collocations from a Distributional Point of View«. Он говорил очень хорошо и энергично, все слушали разинув рот. Сначала коротко описал подход, называемый дистрибутивной семантикой, потом перешел к его недостаткам — не описывает композициональность, а главное — не содержит самой семантики, в смысле типов, предикатов и всего такого. Семантика сводится к набору векторных координат, которые человеку очень сложно интерпретировать.

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

В общем, было интересно. После его лекции было еще «общее обсуждение», в котором Хови дальше развивал эти идеи. Он вообще активно участвовал в семинаре, все слушал, всем задавал вопросы. Нам вот сказал, что предлоги — этол очень сложная тема, и что, возможно, мы могли бы еще искать метафоры (т.к. словосочетания с предлогами часто метафоричны).

Помимо двух ключевых, запомнилось еще два доклада. Во-первых, доклад хозяев площадки Sorokin et al. про автоматическое определение семантических отношений между частями немецких компаундов. Отношения можно описывать двумя способами — через предлог (концерт-холл — холл для концертов) или через семантический класс отношения (в данном случае — location). Как выяснилось, и то и другое можно неплохо предсказывать, используя в качестве признаков, во-первых, отношения из ворднета, во-вторых корпусной контекст — как для отдельных слов, так и для компаундов. При этом предсказывать сразу отношение и предлог получается лучше, чем что-то одно по отдельности.

Во-вторых, запомнился доклад Konrad Szczesniak про конструкционные подходы. Это было такое программно-критическое выступление, суть которого сводилась к тому, что хотя границы между лексиконом и грамматикой размыты, а все же это разные вещи. Последнее время, по мнению Конрада, имеется тенденция к «пересемантизации» конструкций, т.е. к тому, чтобы наделять их очень детальной семантикой. Например, конструкция VERB SB into VERBing («Claire charmed her boyfriend into buying her an apartment.», «The officers threatened him into signing a false testimony.») описывается таким образом: есть два актора А и В, В хочет, чтобы А сделал что-то, чего А делать не хочет, но не говорит ему об этом прямо, но все равно принуждает выполнить нужное действие, и так далее, можно еще более детально с буковками расписать. Но по мнению Конрада, эта семантика манипуляции содержится в самом глаголе («to charm», «to threaten»), и можно найти примеры точно такой же синтаксической формы с другим содержанием («The legend spooked me into seeing and hearing things.»). Т.е. по его мнению, семантика содержится в лексике, в конструкциях могут быть разве что самые общие смыслы, типа каузации.

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

Все статьи с воркшопа можно скачать по этой ссылке. Правда, некоторые из них на немецком, но таких меньшинство.

political_agenda

Интермедия — оргмоменты

Раз уж я подошла в своем рассказе к выходным, которые разделяли две учебные недели, расскажу немного о том, как это все происходило и как было организовано. Если коротко, то все было организовано очень хорошо и проходило практически без накладок. Организаторы позаботились обо всем, включая жилье и питание. Все учащиеся жили в одном и том же хостеле, в комнатах на четыре человека. Хотя нас в комнате нас было только трое, а кто-то вообще жил один. Все очень чистое и уютное. И там же в хостеле в стоимость проживания входил завтрак  и ужин — как же я теперь буду без горячих претцелей на завтрак, даже и не знаю.

Сам Тюбинген — городок очень симпатичный, в нем полностью сохранился средневековый центр, потому что не было промышленности и не было смысла бомбить в войну. Город чуть менее чем полностью состоит из университета и университетских клиник. Некоторые факультеты расположены в исторических зданиях, например, археологический факультет — прямо в замке. Но школа, к сожалению, проходила в здании естественно-научных факультетов немного на отшибе. В целом, это был хороший выбор, там было достаточно просторных аудиторий с проекторами и всем таким, и вайфай хороший, в отличие от хостела. Просто немного обидно, что это не в центре. Большинство партисипантов ездили туда на автобусе, но некоторые, включая автора этих строк, ходили пешком. У меня это занимало минут сорок — сначала небольшой участок через старинный центр, а потом начинается подъем. Я сначала думала, не арендовать ли велосипед, но в первый же день, увидев длину этого подъема, от такой идеи отказалась. Хотя из местных кое-кто ездит, натренировались, наверное.

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

Расписание было довольно растянуто по времени, учеба реально занимала целый день: первая пара с девяти, потом полчаса перерыв, вторая пара, полтора часа обед, послеобеденная пара, часа перерыв (он включал и студенческую сессию), последняя пара — заканчивалось это все в половине седьмого. И если брать все курсы, то практически не было возможности куда-то улизнуть погулять, центр ведь не рядом. Правда, не все ходили на все пары, кто-то вообще только один курс за неделю брал (но на мой вкус, при оргвзносе 325 евро это немного расточительно).

И в дополнение к этому — еще и вечерние лекции. Вот это, по-моему, плохая идея, и мало кому из участников она понравилась. Первую неделю я на них не ходила, а на вторую была. Как я понимаю, предполагалось, что вечерняя лекция — это выступление на какую-то общую и важную тему, которая интересна абсолютно всем. Но на самом деле там люди рассказывали про какое-то конкретное свое исследование, и слушать это после насыщенного дня было просто очень тяжело. Доклад Стефана Эверта про классификацию жанров я бы нашла даже интересным и полезным, если бы он проходил в человеческое время.

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

На выходные были организованы экскурсии — две на каждый день, на них надо было регистрироваться заранее, и в оргвзнос, они, конечно, не входили. Я была в субботу в Констанце — это еще один средневековый город на берегу одноименного озера. Там было бы неплохо (хотя Тюбинген лучше), но уж очень не повезло с погодой — сначала вымокли на экскурсии, потом вымерзли на лодочной прогулке. А в воскресенье я была на пешеходной экскурсии по Тюбингену — вот там с погодой повезло. Потом еще все желающие лазали на колокольню собора, оттуда дивный вид на город и окрестности. А закончилась экскурсия катанием на лодках — это уникальные для Тюбингена длинные плоскодонки, где все сидят лицом друг к другу, на них местные студенты любят кататься, пить пиво и петь песни. Такие лодки изображены на эмблеме Esslli этого года.

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

20140816_154117

А теперь я расскажу про курсы второй недели.

Human Information Network

Курс вели два исключительно артистичных лектора — брюнет Matteo Magnani и блондин Leon Derczynski. Курс был условно поделен на три части: введение в сетевую науку (Маттео), введение в анализ текстов для социальных сетей (Леон), кое-что про конкретные приложения и исследования (оба два). К сожалению, этот курс проходил по категории Fundamental, что в терминологии Esslli означает «even more introductory than introductory». Для сетевого материала это оказалось даже хорошо — я многого не знала и в голове все очень хорошо уложилось. Маттео еще все время устраивал какие-то игры с аудиторией: например, вызвал троих человек к доске и попросил нарисовать граф своей исследовательской группы, а все прочие должны были угадывать, кто в этой сети босс.

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

Вкратце выводы таковы. Говорим «социальная сеть» — подразумеваем Twitter; большая часть исследований проводится именно на этом материале. Хотя, например, в Германии его почти не используют, там гораздо популярнее Facebook. При этом нельзя сказать, что эта область исследований находится в зачаточном состоянии — несмотря на всю сложность материала, продвинулись уже довольно далеко. Имеются размеченные корпуса и опен-сорсные инструменты. В частности, утверждается, что TwitIE, разработанный в Шеффилде как аналог ANNIE для Twitter, демонстрирует качество извлечения именованных сущностей сравнимое со стандартом для новостных тестов.

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

event_tweets_sectors2

Linguistic Complexity and Cognitive Workload: Measurement and Management

Курс был посвящен тому, как измерять сложность понимания/порождения текста для человека в условиях многозадачности (т.е. когда надо одновременно делать что-то еще). В качестве модельной ситуации было выбрано вождение — оказывается, от разговоров по мобильному за рулем гибнет больше народу, чем от пьяной езды. Причем нет никакого различия, разговаривать по обычному мобильному или через hands-free — это сам разговор отбирает когнитивные ресурсы водителя. А вот разговоры с пассажирами в салоне не так влияют на качество вождения — скорее всего потому, что пассажиры тоже видят ситуацию на дороге и состояние водителя, и (полу)сознательно подстраиваются , делают паузы в разговоре и т.п.

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

Читали они оба хорошо, хотя и по-разному — Вера с очень большим энтузиазмом по поводу всего, что она делает,  а Асад с такой легкой отстраненной иронией. А в целом курс получился интересным, но каким-то бесполезным… То есть, мне лично совсем не хотелось бы заниматься областью исследования, где большая часть усилий тратится на получение данных, а не на их обработку. Но это мое личное, конечно. Хотя курс, как мне показалось, не очень подходил под аудиторию Esslli, и особого энтузиазма не вызвал — например, домашнее задание, где надо  было установить симулятор вождения и сделать с его помощью какие-то задания, выполнило всего три человека.

Composition in Distributional Semantics

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

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

Весь этот процесс имеет какое-то теоретическое обоснование, «ты узнаешь слово по компании, в которой оно держится«, однако на практике это очень инженерный подход, про который никто толком не знает как он работает. В частности, одна из центральных проблем — это проблема композициональности; если есть векторное представление для двух слов, то как получить такое представление для их комбинации? Как сложить, умножить, скомбинировать два вектора, чтобы в итоге получился осмысленный вектор для словосочетания? Хови в своей лекции говорил, что эта проблема на сегодняшний день не решена. А Барони как раз этой темой и занимается, и уже получены впечатляющие результаты (по крайней мере, меня они впечатлили).

Барони начал свою лекцию довольно пафосно, сказав, что его курс наиболее соответствует философии Esslli, и совмещает в себе достижения компьютерной лингвистики и формальной семантики. В последние годы на Esslli все больше курсов, посвященных статистическим подходам к анализу языка, а логика существует как бы отдельно. А вот теперь он своим курсом возвращается к основам. Мне показалось, что Барони слегка преувеличивает. От формальной семантики в его подходе сохранилась только одна идея: разные классы слов можно представлять с помощью разных моделей.

dog Например, комбинации существительных с прилагательными. Существительное можно рассматривать как вектор (стандартная идея дистрибутивной семантики), а прилагательное — как оператор, который к этому вектору применяется. Этот оператор можно выучить на примерах: строится векторное представление для существительных, векторное представление для комбинаций с прилагательным, и подбирается наилучшая функция, которая переводит одно в другое.  Функция эта является матрицей — по чисто математическим причинам: чтобы из вектора получился вектор, надо его умножить на матрицу. Одно прилагательное — одна матрица. Но мой вопрос, а что у этой матрицы в столбцах и что в строках, кажется, никто не понял. Чисто математические причины, матрица лишена семантики (ирония, да).

Так или иначе, обученную модель можно оценить: берут определения слов из ворднета и выделяют из них первое существительное с прилагательным (например, charisma — personal appeal); выберают только те, которые участвовали в обучении. К вектору существительного применяется оператор-прилагательное и получается новый вектор; у этого вектора находят ближайших соседей и считают, какой ранг в этом списке занимает определяемое слово. Ранги получаются, в целом не высокие (типа, на 200-м месте), но среди ближайших соседей много осмысленных примеров. Как это оценить более справедливо — пока не понятно.

Ну а дальше пошло-поехало. Идея слов как функций над другими словами оказывается очень продуктивной. Причем объект, к которому применяется функция, и ее результат не обязательно должны принадлежать к одному и тому же пространству — можно переводить из одного в другое, здравствуй, машинный перевод. Функция может работать в две стороны — т.е. раскладывать нечто композициональное на составляющие; тут у меня возникли прямые ассоциации с нашим воркшопом, где половина докладов была про decompоunding немецких сложных слов. Морфология: векторы — это корни, функции — стандартные суффиксы. Операция ous  примененная к корню nerve переводит его туда, где находятся слова типа bronchial, nasal, intestinal, в то время как само слово nervous имеет в ближайших соседях anxious, excitability, panicky — здравствуй, поиск метафор и идиом. Так же можно использовать не только функции от одного переменного, но и n-арные операторы. Технически я эту часть не очень поняла, но у них просто море статей, надо изучать.

Кроме того, есть библиотека на Питоне, которая все это реализует — называется Dissect. Если я правильно поняла, большая часть реализована как раз Джоржианой. Она проводила по этой библиотеке тюториал, хотя в общем это был не столько тюториал, сколько демонстрация возможностей. Но тюториал у них тоже есть — там все очень детально по шагам описано, показано как можно эти функции вызывать из командной строки или встраивать в свои программы. Сделано так, что любой лингвист, пройдя этот тюториал, сможет попробовать эти методы на своих данных. Скорость я не замеряла, но там в конце есть пример с реальными данными, сработал на моем лаптопе за пару минут. Барони мне потом сказал, что особых ограничений на размер нет, они работают с матрицами на сотни тысяч записей. Причем отметил, что это у него стало получатся именно с помощью Джоржианы. Но там почти во всех методах первым этапом идет снижение размерности (несколько методов реализованы в той же библиотеке).

Из того, что еще можно скачать и как-то реально использовать, показывали SICK — набор данных, который использовался в одной из дорожек на SemEval. Задание этой дорожки близко к Textual Entailment, про которое нам рассказывали на первой неделе, но сами данные при этом заметно отличаются. Из корпуса исключены все имена собственные, и некоторые другие явления («телеграфный стиль»). Не требуется того, что называется «world knowledge» (Лондон столица Парижа и т.п.). Идея в том, чтобы изучать чистый, «нормальный» язык, используя информацию о сочетаемости слов.

Данные готовились вручную — например, имена собственные заменялись близким именем нарицательным (Она играет Моцарта — Она играет классическую музыку), если этого нельзя было сделать, предложение отбрасывалось. Предложения-парафразы тоже во многом готовились вручную.  Мне это показалось немного сомнительным, потому что данные какие-то «ненастоящие», однако Барони сказал чтобы был большой интерес, участвовало, если я правильно помню, 27 групп. При этом он сокрушался, что тех, кто действовал в духе дистрибутивной семантики было меньшинство (хотя они есть среди победителей), и что были даже профессиональные share-tasker’ы, которые участвуют во всех соревнованиях без разбору, и добиваются хороших результатов, используя «бессмысленное» машинное обучение и перебор невообразимого количества признаков. Но это-то, на мой взгляд, хорошо — было бы обидно многие годы развивать сложные лингвистические методы, чтобы потом выяснить, что они бьются голой статистикой.

К пятничной лекции народу на занятиях осталось совсем мало — мы сначала думали, что все уже разъехались, но к ужину народ волшебным образом возродился. Поэтому Барони начал с шутки — раз вы даже в пятницу пришли на мою лекцию, я предложу вам работу. И объяснил, что они ищут постдока — человека с компьютерным бекграундом, но с интересом к лингвистическим вопросам. Кто думает, что это про него — вот тут есть внизу есть адрес, на который слать резюме.

Computational Psycholinguistics

The last but not the least. Курс читали Roger Levy и Klinton Bicknell. Последний, как я поняла, это бывший аспирант первого, а с недавнего времени — самостоятельный ассистент-профессор. У него уморительная привычка кивать головой, от которой публику слегка укачивало. Оба они носители языка и говорили очень быстро, так что поначалу их было сложно воспринимать. Но к пятой лекции мы адаптировались, как и предсказывала психолингвистическая наука. Все же мне кажется, что напрасно они столько времени вначале потратили на основы теории вероятности и теорему Байеса — те, для кого эта часть содержала что-то новое, вряд ли могли следить за дальнейшим содержанием.

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

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

Делается это, если пытаться обрисовать самую общую схему, так. Берется какая-то конкретная задача, например, распознавание фонем, или определение синтаксиса, или выучивание языка. Для этой задачи определяются источники информации, которые человек может использовать — например, для фонем, это звук, который он слышит, предыдущие звуки, сведения о частоте фонем в языке, и т.п. Конструируется модель, обучается на данных, затем сравниваются результаты работы модели с поведением информантов. Например, если модель предсказывает сложность восприятия определенного языкового феномена, то проверяют, действительно ли у носителей языка в этом месте трудности (например, они могут больше времени тратить на чтение сложных синтаксических конструкций).

Я думаю, проницательный читатель уже догадался о каком классе моделей идет речь — это Probabilistic Graphical Models. Последнее время этот подход очень активно используется (еще нейросети, они тоже все время всплывали на ESSLLI). На ESSLLI был курс по графическим моделям, шел параллельно с дистрибутивной семантикой. Но те, кто там был, говорили, что курс очень сложный, в качестве введения в тему он не подходил. Зато все очень хвалят соответствующий курс на Coursera.

Сначала рассказывали про «перцептивный магнит» — как мы различаем фонемы, если в звучащей речи нет четко соответствующих им звуков, а есть континуум. Вот например, p и b. Отличаются временем начала озвончения (VOT). Строят простейшую модель, где это время распределено в виде двух гауссиан — по краям пики, «эталонные» p и b, посередине — что-то промежуточное.bp1

Теперь в обратную сторону: на вход модели подают разные VOT и просят категоризировать звук. Понятно, что предсказание модели выглядит примерно так:

bp2

Слева — точно b, справа — точно p, с очень короткой переходной зоной посередине. А вот так та же задача выглядит в исполнении человека — переходная зона немного больше (человек делает больше ошибок), но в целом картина очень похожая.

bp3

Это называется «перцептивный магнит», потому что пики гауссианы как бы «примагничивают» восприятие — мы слышим что-то среднее, а в нашем восприятии это либо четкое p, либо четкое b. С грустью подумала я про себя, что от этого, в частности, и акцент в иностранном языке — сначала восприятие «примагничивает» чуждые звуки к своим родным, а потом мы эти родные и произносим.

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

Прошу прощения, если чего-то напутала, я не фонолог. Но на этом примере проще объяснять. А дальше в курсе речь шла в основном про синтаксис. Там строят разные вероятностные парсеры, а потом смотрят, в каких местах эти парсеры не согласуются с языком, т.е. предсказывают низкую вероятность языковых данных. Годная объяснительная модель должна давать низкую вероятность там, где у носителей языка тоже проблемы с восприятием. Для тестирования этого свойства используют так называемые «garden path» sentences — предложения типа таких:

The complex houses married children and their families.

The warehouse fires a dozen employees each year.

Отличительная особенность таких предложений в том, что они не являются неоднозначными: предложение целиком имеет только один вариант разбора. Но читаем мы последовательно, и на каком-то этапе неоднозначность возникает: houses — сущесвтительное или глагол? Существительное является более вероятным и все начало предложения записывается в именную группу — позже выясняется, что это ошибка и приходится делать разбор заново. «Garden path», потому что соблазнительная дорожка в саду уводит восприятие в неправильную сторону. Моделируется парсерами, которые на каждом шаге достраивают дерево и отбрасывают маловероятные варианты.

Ключевым параметром тут является surprisal — это минус логарифм вероятности, тот кусочек энтропии, который приходится на единицу языка. Матожидание этой величины называется информативностью.

informativity

В связи с этим вспомнили второй закон Ципфа, который гласит, что логарифм частоты слов пропорционален их длине. С этим законом две проблемы: во-первых, он не очень точно описывает языковые данные, во-вторых, точно таким же свойством будет обладать случайный язык — например такой, который смогут породить обезьянка, посаженная за пишущую машинку.  Так вот, на самом деле длина слов пропорциональна не их частоте, а их информативности — т.е. чем меньше мы ожидаем какое-то слово услышать, тем оно длиннее. И вот это обезьянкам уже не под силу!

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

Следующая ESSLLI пройдет в Барселоне.

Об авторе Лидия Пивоварова

СПбГУ - старший преподаватель, University of Helsinki - PhD student http://philarts.spbu.ru/structure/sub-faculties/itah_phil/teachers/pivovarova
Запись опубликована в рубрике Конференции, Курсы/Образование/Постдоки. Добавьте в закладки постоянную ссылку.

3 комментария: ESSLLI 2014 — дневник партисипанта

  1. Yauhen говорит:

    Благодарю. Отличный отчет.

  2. Коллеги подсказывают, что перечень существующих групп и направлений в области Сompositional Distributional Semantics можно найти вот тут:
    http://nlu-rg.ru/CompositionalDSM

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *