• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Контакты

Адрес: 105066, г. Москва,
Старая Басманная ул., д. 21/4

 

🧭 Как до нас добраться

 

Телефон: +7 (495) 772-95-90 доб. 22734

E-mail: ling@hse.ru

Руководство
Заместитель руководителя Ахапкина Яна Эмильевна

Редакторы сайта — Наталья Борисовна Пименова, Татьяна Борисовна Казакова, Максим Олегович Бажуков, Юлия Геннадьевна Бадрызлова

Книга
Proceedings of the 3rd Workshop on NLP Applications to Field Linguistics (Field Matters 2024)

Bangkok: Association for Computational Linguistics, 2024.

Статья
Толк и толки: диахронический портрет имени с семантикой ментальной сферы

Рыжаченков И. И.

Труды института русского языка им. В.В. Виноградова. 2024. № 4 (42). С. 102-118.

Глава в книге
Python для гуманитариев, или почему программированию невозможно научиться с первой попытки

Сенина А. В.

В кн.: Будь в курсе цифровых гуманитарных исследований. Красноярск: Сибирский федеральный университет, 2024. С. 164-181.

Препринт
Exploring the Effectiveness of Methods for Persona Extraction
В печати

Konstantin Zaitsev.

arxiv.org. Computer Science. Cornell University, 2024

"Нельзя сказать, что Google Summer of Code — это исключительно для кодеров"

Студентка магистерской программы «Компьютерная лингвистика» Ульяна Сенцова — об участии в Google Summer of Code, машинном переводе сицилийского языка, алгоритмах для ФБР и любви лингвистов к технологиям.

Расскажи сначала, как ты попала на компьютерную лингвистику и где училась до этого?

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

Ты уже занималась компьютерной лингвистикой до этого?

Занималась самостоятельно. Вообще в школе я очень серьезно изучала немецкий, выиграла Всероссийскую олимпиад по этому языку и поступила на факультет иностранных языков МГУ; но там скоро поняла, что мне хочется еще чего-то, потому что мне очень нравились информатика и математика. Где-то ко второму курсу я осознала, что это не просто хобби и нужно это все как-то совмещать. Как раз тогда я попала на семинары «Яндекса», которые проводились у нас на ВМК, там рассказывали о Natural Language Processing, и я поняла, что хочу этим заниматься. После этого я начала готовиться к олимпиаде и узнавать, где есть походящие магистерские программы.

Сейчас есть несколько мест, где учат компьютерной лингвистике. Как ты решила поступать в Вышку?

Мне очень понравился план программы, я смотрела предметы, которые у нас будут. Разумеется, я слышала отзывы о Вышке, о том, как здесь замечательно.  К тому же Вышка проводила олимпиаду, и я подумала, почему бы не попробовать? В итоге больше никуда не пробовала поступать, кроме Вышки.

И как тебе первый курс?

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

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

Сначала писали систему на правилах, потому что с машинным обучением надо гораздо дольше все настраивать. Мы сделали правила, написали шаблоны, вытащили газетиры из Википедии — просто сидели и часами это делали. А потом, когда нам прислали гигантский корпус, 37 тысяч текстов,  я поняла, что за два дня, которые даются на сдачи результатов, я на своем ноутбуке просто не успею все это обработать. И мы организовали «распределенный анализ» — искали людей, которые у себя на компьютерах обработают часть текстов.

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

Здорово! И параллельно со всем этим ты подавалась на Google Summer of Code? Как это происходило?

Google Summer of Code начинается где-то в феврале. Сначала организации публикуют проекты, в которых можно участвовать. У тебя есть неделя-две, чтобы посмотреть проекты и выбрать не больше трех. Потом начинается процесс подачи заявок. Ты должен списываться с ментором, рассказывать, «какой ты молодец», показывать, что ты понимаешь, что делают в этой организации, какой там стиль программирования, какой стиль общения, для чего они все это делают. Они очень трепетно ко всему этому относятся, то есть нельзя просто говорить: «эй, ребят, можно я у вас тут что-нибудь поделаю?».  Подается заявка, результаты объявляют где-то в марте, я ждала почти месяц.

Расскажи вкратце, что ты там делала?

Вообще все устроено так: Google находит организации с полезными open-source проектами, и они в партнерстве с Google открывают на свои проекты запись. Организация, в которую я подавалась, называется Apertium и занимается правиловым машинным переводом. У них есть платформа для обработки и словари как отдельные компоненты системы. Есть словари для каждого языка и есть двуязычные пакеты. То есть перевод существует только между теми языками, для которых существуют двуязычные пакеты.

У меня был особый случай, потому что я выбрала испанский и сицилийский языки. В Apertium есть такое правило: если ты не сможешь сделать перевод для пары языков лучше, чем «Google Переводчик», лучше не берись.  Для английского, немецкого и других очень популярных языков обычно достаточно того качества, которое дает «Google Переводчик», и не нужно пытаться с ним бороться.  Сицилийский — гораздо более редкий язык, и мне нужно было сделать как отдельный сицилийский пакет, так и двуязычный испанско-сицилийский.

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

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

А как измеряется качество системы?

Нужно брать корпус текстов — мы брали Википедию на сицилийском, и вообще в Apertium чаще всего используется Википедия — и измерять, насколько перевод покрывает корпус, то есть какая доля предложений переводится, какие леммы оказались знакомыми, какие — незнакомыми. У меня получилось так, что уже за время тестового задания я успела сделать 50-60% всего проекта. Потому меня и взяли — я была очень увлечена всем этим: скачивала кучу словарей, парсила их, приходилось даже из PDF вытаскивать данные. Нужно было подключаться к API Википедии, чтобы достать викисловари сицилийского, пришлось автоматически переводить через итальянский на испанский… В общем, много было интересного.

И ты сделала эту пару языков в одиночку?

Да. В Apertium невероятно разработанный испанский словарь, потому что ребята, создавшие Apertium, сами из испанского Университета Аликанте . Испанский там безумно хороший, им занимается очень много разработчиков, поэтому  мне не пришлось ничего для него делать. Зато над сицилийским и над двуязычным пакетом я работала одна, и это было приятно. Мне немного помогал ментор из Apertium Фрэнсис Тайерс (Francis Tyers), один из основных разработчиков системы, мы с ним встречались летом. И был еще один ментор, уже из Испании, который контролировал качество испанского языка. Но и сам Фрэнсис тоже очень хорошо говорит по-испански, поэтому я общалась с ним наполовину на испанском. Они оба очень много помогали мне с сицилийским и испанским.

И этим ты занималась все лето?

Сама программа стартует в апреле. Первый месяц идет community bounding program, когда ты должен  познакомиться с организацией,  с ее правилами. Но это официально, а неофициально в это время уже все работают. Я по сути продолжала делать то, что я делала как тестовое задание.  Но официальное начало — это 23 мая, а окончание — 23 августа, это final evaluation.

А 23 августа у тебя был уже готовый переводчик?

Да. Не на 100% готовый, конечно, но он получился очень хороший.  Изначально мы запланировали финальное покрытие 90%, потому что первый рывок был очень сильным. Но потом возникло много сложных и интересных лингвистических проблем. Во-первых, разреженность данных, когда по закону Ципфа ты сначала быстро накрываешь все частотные слова, а остаток добирать невероятно трудно.

Длинный хвост?

Да, вот этот длинный хвост трудно было добавлять. Еще возникла проблема в связи с тем, что у сицилийского языка нет письменного стандарта, и каждый пишет, говоря научно, по фонетическому признаку, то есть как слышится. В результате получается до 10-15 вариантов написания одного слова, их все нужно было собрать из корпуса, при этом не зацепив случайно другие слова, чтобы в переводчике не было конфликтов. А анализировать он должен любой текст. В общем с этим тоже возникли сложности, я писала специальный алгоритм, основанный на расстоянии Левенштейна, но использующий много дополнительных параметров. Фрэнсис даже представил меня одному исследователю, который занимается сложными вариантами расстояния Левенштейна, и я в своей работе опиралась на его статью. Это как раз тема, которую я хочу добить: как выделять разные написания одного и того же слова в текстах на языках, у которых нет письменного стандарта.  Это очень крутая тема, потому что там очень много морфологии, очень много орфографии. А в сицилийском к тому же подвижная система ударения…

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

Вообще чтобы пройти final evaluation, мне нужно было перевести текст в 2000 слов.  Я брала статью из Википедии переводила ее с испанского на сицилийский или наоборот, и нужно было, чтобы ошибок оказалось достаточно мало . У меня было около 8-9% ошибок, но есть над чем еще работать.

Это отличный результат. А можно я задам такой вопрос: многие, в том числе и я, никогда бы не подумали подаваться на Google Summer of Code, потому что считают, что это что-то такое исключительно для звездных программистов. Ты можешь как-то прокомментировать это? Ведь твой пример показывает, что это все-таки не совсем так, что туда можно попасть, не будучи супер-кодером.  

Программирование знать все равно нужно, без знания необходимых технологий не пройдешь. В моем случае требовалось знать Python, уметь работать с XML, еще мне внезапно понадобилось процедурное программирование, потому что в Apertium используется свой формализм для написания правил. Но вообще нельзя сказать, что Google Summer of Code — это исключительно для кодеров. Туда можно попасть, если ты лингвист и любишь технологии. В таком случае можно найти себе проект по душе. Однако таких проектов не так уж много,  в основном все же нужны программисты на С++ и т.п.

А сколько всего проектов, сколько человек берут?   

Там все устроено по разному в разных организациях. Некоторые заявляют очень жесткие и строгие требования — например, ищут конкретного человека, который за лето исправит им баг. Так часто делают известные организации вроде Mozilla или Python Software Foundation, которая тоже берет студентов, чтобы те, к примеру, вместе разрабатывали какой-то модуль или делали красивую сложную функцию для Python. А есть другие организации, которые подходят к проектам очень гибко. Один из примеров — как раз Apertium. Ты можешь либо создавать новую языковую пару, либо писать парсер, либо улучшать уже существующую пару, скажем, поднимать качество с 40-50% до 90%, тоже очень сложная задача... Такие организации могут взять много людей в зависимости от того, кто к ним приходит. Если они видят, что пришел очень интересный человек, носитель какого-то нужного редкого языка,  который к тому же разбирается в технологиях, конечно, его возьмут, даже если не выделена квота.

Вот, кстати, по поводу владения языком: наверняка ожидается, что редкие языки для Apertium описывают их носители?

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

При этом ты никуда не ездила, это все происходило удаленно?

Да, удаленно. И в этом, по-моему, есть прелесть — поучаствовать в Google Summer of Code, сидя дома за своим ноутбуком. 

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

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

Очень хотелось бы приплести туда машинное обучение. Думаю, если найти хорошие признаки,  может получиться неплохо. Есть хорошие фонологические алгоритмы, например, Soundex. Его, в частности, использовали в ФБР для нечеткого поиска по фамилиям террористов. Такие алгоритмы основаны не на написании, а на звучании слов. Кроме того, могут добавляться особенности написания и произношения в разных странах, соответствия между фонемами разных языков, например, как это может быть записано и произнесено человеком из Польши или Чехии и т.д. 

Что скажешь тем, кто думает об участии в Google Summer of Code?

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

У них ведь даже есть стипендия для девушек, которую получила наша Екатерина Агеева?

Да, стипендия Аниты Борг. Я тоже узнала об этом от Кати Агеевой, как и о Google Summer of Code — она участвовала три года подряд. Катя всем сказала: «ребята, почему бы нет, пробуйте». И я подумала, почему бы и нет?