Telegram Group Search
Часть Четвертая. Магистерская.

В октябре (это все еще 2018 год) снова началась учеба. Теперь уже магистерский проект, на него дается 30 кредитов, весь учебный год. Я два месяца провела в раздумьях, что я хочу выбрать и с кем писать. С кем писать - вопрос был более простой. Мне хотелось делать магистерскую с самым крутым преподом факультета, но, естественно, он меня не взял - сказал, что у него уже все места заняты.

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

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

Чтобы как-то упорядочить все эти списки с темами и статьями, мне пришлось освоить:

- Google Academic/Scholar - поиск по научным статьям;
- Mendeley - программа для категоризации и скачивания этих статей. У нее есть плагин для Firefox, который автоматически отправляет PDF в твой онлайн аккаунт, а десктоп-приложение автоматически синхронизирует все с онлайн-аккаунтом. Внутри пдфки можно помещать в разные папки, ставить на них свои теги, комментарии и так далее. Очень удобно и экономит кучу времени.

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

Я каждую неделю ходила в универ на встречу с преподавателями, остальное время делала что-то дома. Работа шла медленно. Мне было сложно все. Все было на сервере, сервер на Ubuntu. Я с трудом запоминала команды, не представляла, как можно запомнить столько команд, как вообще жить без кнопок. Программирования как такового было немного, мне выдали скрипт, который написала предыдущая студентка, скрипт не работал, мне опять пришлось обращаться за помощью. Обучение моделей происходило в уже готовой программе и заключалось только в подстановке корпуса и моделей. В общем, довольно быстро наступило ощущение, что я немного застряла.
Часть Пятая. Офисная

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

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

Работа была очень забавная. Мне нужно было обучать модели классификации сообщений в Твиттере - кто за независимость Каталонии, а кто против. Я сперва обрабатывала сырые данные, потом полуавтоматически делала аннотации (на испанском и каталанском), а затем пилила модели. От меня не требовалось программировать, а все машинной обучение делалось в программе Rapidminer. Но я все равно начала писать мелкие скрипты для обработки текста и вставлять их в Rapidminer (он это позволял делать).

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

Поскольку новая работа была связана с классификацией твитов, я быстро поменяла тему магистерской работы и в январе начала все сначала. Все, что я делала на работе, я решила включить в магистерскую. Плюс добавила эксперименты с уже готовым датасетом из прошлогоднего shared task. Эксперименты мои были настолько хороши, что преподаватели сперва даже не верили мне, что я это все делаю сама. Думали, что мне кто-то на работе помогает. А мне никто не помогал, я была единственным человеком в офисе, кто разбирался в NLP.

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

Я как работала? Сделаю модель, она 2-3 часа обучается, а то и больше, бывало. И в это время я была предоставлена сама себе. К тому же никто особенно не контролировал, сколько времени у меня уходит на обработку данных и на сборку моделей. То есть на работе у меня было свободное время на то, чтобы пить кофе, делать упражнения по программированию, писать магистерскую и тому подобное.

У меня не было какого-то определенного плана, мне было просто интересно, и я пробовала разные питоновские библиотеки. Список необходимых библиотек я составила по тому, что мы изучали в магистратуре, и тому, что требовали в вакансиях на Линкедине. Это были NLTK, Gensim, Spacy, Sklearn, PyMorphy (для русского). Я научилась делать:

- базовые модели для кластеризации и для тематического моделирования (на примере своего твиттера);

- обработку текста: лемматизация, нормализация и так далее;

- разметку частей речи и именованных сущностей в большом количестве текстов.

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

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

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

Хороший курс по нейросетям, где очень доступно объясняются основные идеи:

https://classroom.udacity.com/courses/ud730

К концу 2018 году нейросети уже захватили мир NLP, поэтому начали появляться фреймворки разной степени сложности. Так, Родриго мне показал FLAIR (разработки Zalando), и я поразилась, как там все было удобно и понятно сделано. С помощью этого простого фреймворка я натренировала нейросетей для своей магистерской, и меня уже было не остановить. В ход пошли туториалы по Pytorch и Keras. При этом, естественно, мне не везде было понятно, что там происходит внутри. Но я все равно брала какой-то код, подставляла туда свои тексты, и смотрела, что получится. Тем более что PyTorch и Keras сделаны по-человечески и понятны практически с самого начала.
Часть седьмая. Между двух работ.

Моя прекрасная работа закончилась так же неожиданно, как и началась. Вернее, не то чтобы очень неожиданно. У меня был контракт на 6 месяцев. Мой хитрый начальник (галисиец) сказал, что если все будет хорошо, то мне сделают постоянный контракт. Где-то за полтора месяца до окончания я его спросила: ну как там, все хорошо? Он сказал: да, конечно, а разве тебе еще не сделали новый договор? Из этого разговора я поняла, что мне должны продлить договор вот-вот на днях.

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

Ситуация была волнительная, с одной стороны, а с другой, я чувствовала себя довольно уверенно. У меня были кое-какие накопления, плюс мне заплатили за 2 недели отпуска, плюс выяснилось, что я уже отработала в Испании столько, что мне положено пособие по безработице в 1200€ в течение четырех месяцев. Поэтому вынужденный отпуск был даже полезен: это давало мне время спокойно и без спешки закончить магистерскую к началу августа.

Весь июнь 2019 года я писала магистерскую и искала работу. Написание текста давалось мне нелегко, потому что уровень английского у меня не очень высокий (по моей оценке, где-то между B2 и C1), я несколько раз предпринимала попытки заниматься с преподавателем, но как-то все не получалось делать это систематически. Я писала очень медленно. Спасибо Родриго за то, что он мне помогал формулировать и исправлял ошибки. У него очень хороший английский, он написал не один десяток статей и некоторое время жил и работал в Великобритании.

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

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

https://www.w3resource.com/python-exercises/

Там есть ответы к каждому заданию. Плюс они маленькие, и выполнение не занимало много времени. Сделаешь 2-3 упражнения, и вот ты уже доволен собой, и день прошёл не зря.
Часть восьмая. Собеседование в Apple в Барселоне

Когда я еще работала на своей первой работе, в мае 2019 года, я отправила резюме в Apple в Барселоне. Ради работы в Apple я даже была готова переехать в Барселону. Шутка. На самом деле мне было все равно куда ехать.

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

Было три собеседования: первое с HR-работником, который задавал общие вопросы про мое образование, опыт и так далее. Второе собеседование было техническое устное - по телефону. Звонили из Калифорнии, говорили на английском с очень непривычным акцентом. Вопросы были по теории NLP. Было трудно разобрать суть вопроса, я что-то отвечала, видимо, правильно, если меня позвали на третье собеседование - тоже техническое, но уже там, где нужно было программировать.

Это также был звонок по телефону (не по скайпу, ничего такого), мне сказали, на какой сайт зайти, и там был онлайн редактор кода. Было два задания, на каждое по 20 минут. Первое задание было по regular expressions, нужно было написать выражение для поиска номеров телефона. Надо сказать, что заранее в переписке мне сказали, что регекс будет в заданиях, поэтому я немного повторила эту тему. И мне кажется, я хорошо его сделала, по крайней мере все работало.

А вот со вторым заданием был полнейший провал. Оно было простое: убрать повторяющиеся элементы из списка, не нарушив порядок элементов. То есть set сделать нельзя. И я впала в ступор. Хотя я сто раз писала эту функцию, только не с цифрами, а со словами (типичное “удалить стоп-слова”). Когда интевьюирующий в конце написал решение сам, я была в ужасе от своей тупости. Тогда он спросил, ну скажи хотя бы, какая сложность у этой функции в О-нотации. Я сказала. Мне было стыдно, и это было ощущение проваленного экзамена.

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

На новую работу я вышла примерно через месяц после окончания предыдущей. Это была консалтинговая компания Capgemini и ее французский спин-офф Prosodie с офисом в Мадриде, который занимался телефонными системами со встроенными голосовыми чат-ботами.

Оцените уровень испанского дружелюбия. На первое собеседование я не пришла. Я перепутала даты и думала, что оно на следующий день. Звонит мне HR, а я дома и вообще не собираюсь никуда. Я думаю: ну все, они со мной дальше разговаривать не станут, чего ждать от человека, который даже на собеседование прийти не может нормально. А она говорит: ничего страшного! Приходи завтра, как тебе будет удобно.

Это не была работа мечты, но выбора особенно не было, нужно было на что-то жить. К тому же Prosodie предложила больше денег и один день в неделю удаленной работы (в 2019 году это было необычно, и очень привлекало меня, поскольку я продолжала каждые 2-3 недели ездить в Сан-Себастьян на выходные). От меня требовалось “модернизировать” отдел компьютерной лингвистики, перевести все, что возможно, с баша на питон и оказывать любую техническую поддержку лингвистам, которые даже экселя боялись не то что программировать.

В системах, которые контора продавала задорого (поэтому среди клиентов были самые крупные испанские компании: Iberdrola, Naturgy, Santander и другие такого же масштаба), стоял Nuance - софт для распознавания и синтеза речи и классификации намерений. Софт простой и надежный, но немного устаревший с точки зрения state of the art. Однако компании предпочитали его, поскольку Nuance позволял развернуть систему на собственных серверах, а это значит, что данные никуда не идут, в отличие от ситуации с API Гугла, например. Это было более безопасно.
Итак, на новой работе от меня не требовалось обучать модели машинного обучения с нуля, а требовалось только поддерживать правильную работу Nuance. Для этого нужно было делать следующее.

- Скачивать с сервера некоторое количество звонков и их логов каждый день (я не помню сколько, по 100 на каждом языке и для каждой компании, наверное). Логи были сохранены в огромные текстовые файлы, и из них нужно было делать таблицы csv. Это все делалось через баш-скрипты, потому что сервера были на Windows и питона там не было, и ставить его не разрешалось. Поэтому мне пришлось освоить основы bash.

- Звонки нужно было прослушать и сопоставить с логами. В логах был автоматически транскрибированный текст звонка и то, как звонок был маршрутизирован. Нужно было оценить, правильно ли распознан текст, если неправильно, то предположить почему (шумно, человек говорит что-то не по теме и так далее). И правильно ли звонок маршрутизирован, то есть получил ли звонящий то, что хотел. В каждой компании было по 15-20 интентов: оплатить фактуру, перерегистрировать услуги на другого человека, авария, пожаловаться и так далее.

- Звонки были почти на всех испанских языках: на кастельяно, каталанском, галисийском, баскском (не было валенсийского). У каждого в отделе лингвистов были свои компании и языки, за которые он отвечал. У меня были две энергетические компании и звонки на испанском и галисийском (он очень похож на испанский, и слушать его было несложно).

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

- Также нужно было генерировать голос для ответов бота, и мы очень мучались, когда модель для синтеза голоса на испанском не могла произнести какой-нибудь звук из иностранного слова, как в названии Naturgy. В испанском нет фонемы /dʒ/, и Nuance читал это как “натурхи”.

- Всякое по мелочам, где требовалось “не бояться командной строки”.
Часть десятая. Легкая работа.

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

Pandas. Я уже знала кое-что базовое про таблицы и pandas, и решила применить эти знания. Анализ ошибок распознавания и маршрутизации звонков происходил в экселе, вручную, что приводило к большому количеству опечаток, проблемам с кодировкой и тому подобное. Из текстовых логов я делала таблицы CSV, лингвисты напрямую открывали их в экселе, кодировка ломалась, и так каждый раз. Я посмотрела на все это и написала скрипты на питоне, которые читали эти таблицы, исправляли кодировку, считали статистику (точность, полноту и тд.) и показывали, в каких местах есть опечатки, неправильные колонки, пустые ячейки. Все, что можно было исправить автоматически, исправлялось, остальное просто выводилось на экран. Таким образом я быстро стала богиней таблиц. Pandas - это лучшее изобретение для обработки таблиц в питоне. Pandas + Spyder - это любовь и я не представляю, что может быть удобнее и стабильнее.

CLI (command line interface). Чтобы остальные лингвисты могли использовать эти скрипты, мне пришлось освоить написание интерфейсов для командной строки и библиотеку argparse.

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

Я также научилась устанавливать и настраивать Nuance, если компании нужно было только распознавание речи, без звонков. Весь пользовательский интерфейс был через CLI. Мне пришлось освоить командную строку в виндоус и Red Hat, а также YAML. Я прошла курс по Нюансу, и у меня даже есть сертификат. Я сертифицированный устанавливатель Нюанса.

Я написала скрипты, чтобы считать word error rate для распознавания речи.

API Google Translate. Для создания корпуса на каталанском я предложила использовать перевод с испанского. Этот перевод сперва хотели поручать каталанскому офису, они же знают два языка, пусть переводят. Я говорю: ведь если мы переведем тексты автоматически, тем более что пара испанский-каталан несложная, а работники только проверят, что все правильно и где неправильно, исправят, это сократит время работы.
Часть одиннадцатая.

Постепенно я втянулась в работу в консалтинге, и мне даже стало нравиться.

Офис “Просоди” находился в новеньком здании на севере Мадрида. Он был просторный, модный, со стеклянными стенами и видом на четыре мадридских небоскреба. Модное в нем было то, что ни у кого не было своего закрепленного места. Все ноутбуки хранились в личных ячейках, а на столах были мониторы с проводами. В конце рабочего дня столы должны были оставаться пустыми. Так работников стимулировали не иметь много личных вещей и бумаг, только то, что войдет в ячейку, а если ты переходил из команды в команду, то перемещаться было легко. Лучшие места у окна, естественно, занимали те, кто приходил раньше всех. В Мадриде довольно распространенное явление, когда народ начинает работать в 6:30 или 7:00, чтобы не стоять в пробках.

В огромном опенспейсе было уютно: много переговорных, куда можно было уйти работать, если ты устал от шума, цветные диванчики и столики для кофе-чаепитий, на крыше была терраса с диванами, теннисным кортом, тренажерами и беговой дорожкой. В нелетнее время мы поднимались туда прогуляться и позаниматься гимнастикой (контора разрешала нам 2 часа в неделю в рабочее время ходить на уроки “биомеханики”, которые вел один из работников). Также в здании было два ресторана с недорогой едой и кофе, куда мы ходили на завтрак и обед. 30 минут завтрака были тоже включены в рабочее время. Мы с коллегами часто пили кофе, много болтали на отвлеченные темы, обсуждали все подряд, сплетничали. Хотя за пределами рабочего времени мы не встречались и почти не общались. Один раз только за все время я была на корпоративе - это был рождественский обед и немного танцев после обеда.

Как становится понятно, атмосфера в офисе была расслабленная и неторопливая, никто не перерабатывал и не гнался за дедлайнами. Начальство было мной очень довольно. Например. Удаленная работа по пятницам была положена только тем, кто прошел испытательный срок, 6 месяцев. Я же начала пользоваться этой привилегией раньше, просто потому что я нравилась начальникам и они хотели меня всячески поощрять. После испытательного срока мне повысили зарплату и должность и предложили стать консультантом со скорой перспективой перейти в менеджеры проектов. У меня хорошо получалась не только техническая часть работы, но также я не стеснялась общаться с клиентами, делать презентации и выступать перед публикой. Это было нужное сочетание.
Часть 12.1. Докторадо.

Я защитила магистерскую в сентябре 2019 года и сразу же поступила в аспирантуру (PhD или doctorado по-испански). Я писала об этом здесь.

Во время написания магистерской я еще больше укрепилась в мысли, что я хочу заниматься исследованиями в NLP. (Первые мысли об этом мне стали приходить еще на первом курсе магистратуры.) Жить в Сан-Себастьяне, работать в университете под руководством Родриго... Такая картина будущего заставляла мое сердце биться чаще. Даже сейчас, когда я пишу об этом, я немного волнуюсь. Учиться в докторадо можно или за свой счет (платишь 200 евро в год), или выиграть грант в размере 14.000-18.000€ в год и иметь небольшую, но стабильную зарплату.

В июне 2019 года я подалась на стипендию в университете Страны Басков. И затем зимой я подалась на вторую - это был индустриальный PhD совместно с баскским стартапом Sherpa. Так себе стартап, но в Стране Басков негусто с этим. Индустриальный PhD означал, что я буду работать в компании, и один из директоров докторской работы будет из университета (я называю это докторской для удобства, хотя это не эквивалент докторской диссертации в России, по уровню это схоже с кандидатской). И тема моей работы будет интересна в первую очередь компании. Это был идеальный вариант, поскольку компания доплачивала к стипендии еще из своих денег, что делало зарплату докторанта не такой жалкой, как в универе.

Я подалась на обе стипендии с темой Fake News. Родриго сделал мне крутейшее описание проекта, и надежда была довольно большая. Поэтому, когда я устраивалась работать в Prosodie-Capgemini, я заранее знала, что вероятность моего скорого увольнения совсем ненулевая и для меня это был временный вариант.

Результаты по стипендиями обычно выходят через полгода после подачи. Это долго: описания проектов и куррикулумы идут в министерство по образованию Испании в Мадриде, где эксперты оценивают все это по 10-балльной шкале. Потом университет считает общий балл по специальной формуле, которая включает не только абсолютную сумму баллов, но и коэффициент, связанный с самым высоким и самым низким баллом из всех кандидатов, а также с количеством заявлений.
Часть 12.2. Докторадо.

Я решила, что я начну писать докторскую до выхода решения по стипендии. В свободное от работы время. Напомню, что я жила в Мадриде одна, и у меня была куча свободного времени. Сейчас я вспоминаю тот период и поражаюсь, как много всего я успевала делать.

И я начала. Мои коллеги в “Просоди” знали, что я училась, и относились к этому с пониманием. Не так часто, как раньше, но мы созванивались с Родриго и Херманом (тоже все в рабочее время). В январе был дедлайн на LREC-2020, крупной конференции, куда я готовила пейпер по мотивам моей магистерской.

В тот год решение по стипендиями затянули больше, чем на полгода. Оно вышло в феврале. Это был отказ. Я не прошла буквально на два балла, и все по очень глупой причине. Если ты иностранец и учился не в Испании, от тебя требуют документ соответствия оценок: в Испании 10-балльная шкала. Это делается на сайте министерства образования, там вбиваешь все свои предметы из диплома, часы и оценки, выбираешь перевод шкалы, и скачиваешь готовую пдф-ку с подписью министерства. В момент выбора шкалы я ошиблась и выбрала не ту. Там их много и не все было ясно. И все мои пятерки перевелись в восьмерки, а не в девятки, как должно было быть (наша пятерка не переводится в 10-ку вообще никогда, а переводится в 9-ку). Соответственно, мой средний балл по диплому был намного ниже, чем должен был быть. При этом оценки в дипломе очень важны для стипендии: из 100 возможных баллов диплом имеет 50. Остальные 50 распределяются между CV, описанием проекта, знанием языков и тп.

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

Было обидно, потому что и мой куррикулум, и проект получил высокий балл от министерства. Проект вошел в топ-10 лучших проектов того года, а всего в тот год было 400 заявок на стипендию в университет. В комментариях к оценке проекта они написали, что у меня прекрасный бэкграунд: сочетание журналистики и компьютерной лингвистики поможет внести большой вклад в испанское NLP.

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

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

В Мадриде я стала ходить на митапы по датасаенсу от Madrid AI и на собрания PyLadies в Google Campus. Гугл во многих европейских городах организовал площадку для стартапов с коворкином, залами для конференций и тому подобное. В Мадриде это была старая фабрика в классическом хипстерском стиле с кирпичными стенами и трубами вентиляции.

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

Также я пыталась на таких собраниях знакомиться с HR-ами, и однажды я даже написала письмо руководителю отдела датасаенса Newtral. Это факт-чекинг агентство, основанное одной из ведущих национального канала TV6 (лево-центристского толка). Он выступал на собрании PyLadies, рассказывал, как они пытаются делать машин-ленинг для автоматического определения фейков. Я его послушала и в тот же вечер отправила ему CV: так и так, я вот phd-студент и пишу как раз тезис именно на эту тему, я могу вам помочь. Я хотела с ним лично поговорить, но он быстро ушел после своего выступления.

В какой-то момент ко мне пришло осознание, что не нужно стесняться говорить о своей кандидатуре, даже если мне ничего не предлагают. Pedir es gratis, как говорят в Испании. Просить - это бесплатно. Этот начальник отдела не ответил тогда, но через пару лет судьба свела нас в другом месте, расскажу потом. Кстати, они все еще ищут NLP-шника, можно работать удаленно.

Ко всему прочему, на таких собраниях бесплатно кормили пиццей и пивом.
Стипендии для не-европейцев

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

Есть разные варианты того, как получить стипендию.

Erasmus+ — наверное, самая известная стипендия. Магистратура, где я училась, входит в эту программу. Официальное название - European Masters Program Language & Communication Technologies. Всего в эту программу включены шесть университетов:
Rijksuniversiteit Groningen - Нидерланды, Гронинген
Universidad Del Pais Vasco/ Euskal Herriko Unibertsitatea - Испания, Сан-Себастьян
Università Degli Studi Di Trento - Италия, Тренто
Universita Ta Malta - Мальта
Universite De Lorraine - Франция, Нанси
Univerzita Karlova - Чехия, Прага
Магистратура на 120 кредитов, то есть это обеспечивает учебную визу на 2 года. Нужно выбрать два университета - на первый и второй год. В разные университеты разный конкурс. Голландский универ самый популярный. Вот здесь официальный сайт программы, где есть все детали. Прием документов заканчивается 2 февраля 2023 года. Учеба начинается в конце сентября-начале октября 2023 года.
Коротко о том, что нужно

Язык
, один из сертификатов:

TOEFL как минимум 95 баллов в сумме, где как минимум 24 балла за письменную часть.
Cambridge Certificate in Advanced English -- как минимум B
Cambridge Proficiency Exam
IELTS как минимум 7.0

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

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

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

Curriculum Vitae (CV) на английском

Скан загранпаспорта

Чуть позже я напишу о вариантах для тех, у кого уже есть магистратура, и кто хотел бы стать phd-студентом. Тоже на стипендии.
Стипендии для PhD студентов

Еще один способ, позволяющий учиться в Европе и получать за это зарплату. Это fellowship/scholarship/funding для PhD программы. Для этого нужно иметь оконченную магистратуру или искать программы, где можно одновременно учиться и в магистратуре, и на PhD (такое бывает). Уровень магистра - это когда у тебя есть 180 кредитов за бакалавриат и 120 за магистратуру.

Испания неохотно дает рабочие визы докторантам, поэтому здесь не очень много исследователей не-европейцев. Одна из таких стипендий - это фонд Марии Склодовской-Кюри, финансируется Европой. На сайте фонда есть список университетов и программ, которые финансируются фондом, вот здесь, например, можно посмотреть список позиций по всей Европе, и, возможно, там будет Испания Как правило, эти вакансии публикуются где-то еще, например, на ЛинкедИне, а процесс отбора похож на собеседование, как при приеме на работу.

В других странах Европы, побогаче, PhD - это как рабочий контракт, и университет способствует получению визы. Недавно мне попалось объявление про поиск кандидатов в университет в Копенгагене.

Требования

- Мотивационное письмо-заявление (не более одной страницы) о подаче заявки на участие в конкретном проекте PhD.
- Curriculum vitae
- Диплом и вкладыш на языке оригинала, включая заверенный перевод на английский язык. В случае отсутствия диплома (например, вы еще учитесь) принимается заверенная/подписанная копия последней выписки из реестра или письменное заявление от учебного заведения или научного руководителя.
- Список публикаций
- Рекомендательные письма (если возможно)

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

Как следить за всеми объявлениями? Как узнать, когда начинается прием документов и где? Например, объявление о PhD в Дании мне попалось в Твиттере, я подписана на одну из сотрудниц лаборатории (она мой кумир, если честно).

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

Искать в гугле по запросу PhD / doctoral fellowship / position / funding / grant for non-european students
14. Curriculum

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

LinkedIn. Я сделала профиль с указанием всех скиллов, опыта и всех достижений, даже если я просто однажды открывала фреймворк и писала “хелло ворлд”. Сперва я нашла профили испанских специалистов по NLP, выбрала те, которые мне показались толковыми, и решила сделать что-то похожее. Также в поиске я набрала что-то вроде “HR в IT” и надобавляла себе этих эйчаров в друзья. Таким образом у меня стало больше 500 контактов, а это влияет на выдачу профиля в поиске. Я также сменила язык профиля на английский и испанский.

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

Курс по NLP, Coursera. Я решила пройти курс до конца, чтобы повесить сертификат в профиле ЛинкедИн - такова была моя мотивация. Курс был платный, однако Курсера позволяет проходить курсы бесплатно. Чтобы это сделать, нужно написать им письмо с рассказом, почему тебе нужен именно этот курс, как он тебе поможет в жизни. Я написала - и мне дали “финансирование”. Курс был в целом скучный, полный формул и технических подробностей (делала его ВШЭ, на английском). Все ответы на задания искались на гитхабе. Мне больше всего понравилось итоговое задание: нужно было сделать чат-бот в телеграме и запустить его на AWS. Я научилась пользоваться амазоновским облаком и управлять телеграмным ботом. Бот мог поддерживать тупой смолл-ток на английском и отвечать на вопросы про программирование ссылками из Stackoverflow.

GitHub. Родриго, когда я еще была в магистратуре, сказал, чтобы я осваивала гитхаб и все выкладывала туда. Так я и сделала. Все скрипты, сделанные для пейпера, лежат там, а также я выложила свои упражнения и другие осмысленные вещи. Также там есть раздел с моим CV в PDF на английском и испанском. Сейчас он в некотором запустении, потому что мне некогда заниматься личными вещами, а все, что я делаю для докторадо, выкладывается на рабочем гитхабе.

CV. В Мадриде я жила в shared flat с еще тремя ребятами примерно моего возраста. Один из них работал в отделе кадров Thyssen Krups, и он в общих чертах рассказал, какие резюме нравятся испанским эйчарам. И прислал мне свое, чтобы я сделала по образцу. В испанском резюме приветствуется фотография, хотя это не обязательно. И приветствуется, чтобы было “красиво”: цветная верстка, списки, заголовки и подзаголовки, иконки в виде клипарта. А потом обнаружились темплейты для CV в LaTex (спасибо Оле), и я все переделала в этом формате. Так получилось более лаконично и компактно, плюс это намекает на то, что ты умеешь верстать в LaTex. Разные дизайны на любой вкус можно найти в Overleaf вот здесь. Я также попросила, чтобы мое резюме посмотрел и покритиковал человек из индустрии, он поправил некоторые формулировки и сказал подробнее написать про обязанности на предыдущих местах работы.
15. Тестовые задания

Работая в Capgemini, я ходила на собеседования, мне было интересно, что там как в других компаниях, вдруг где-то предложат что-то интереснее и с большей зарплатой. Это было несрочно и необязательно, поэтому мне было максимально все равно, пройду я отбор или нет. В декабре 2019 год я как раз была на двух собеседованиях - в “Савана Медика”, они искали специалиста по NLP для медицинских текстов, и в небольшой консалтинговой компании (Indizen), у которой был некоторый опыт работы с министерством здравоохранения и они хотели вкатиться в тему медицинского NLP. Я хорошо сделала тестовые задания и довольно уверенно себя чувствовала на личных встречах.

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

Это примерно то, чем я все время занималась в магистратуре. Я сделала Jupyter Notebook с обработкой датасета и с моделями, в ноутбуке написала красивые комментарии к каждому шагу:

- Обработка таблиц (мерджи, фильтры и тд.),
- Нормализация текста
- feature selection
- grid search по параметрам моделей (логистическая регрессия и простая нейросеть)
- График обучения нейросети (plot history)
- Метрики (я добавила F1-score, его почему-то не было), анализ, выводы

Цифры у меня получились чуть лучше, чем в гитхабе, который я должна была повторить. Это было легко, потому что гитхаб был довольно базовый. Где-то пару вечеров я на это потратила. Можно сказать, что это много, но я относилась к этому как к упражнению по программированию для себя, и мне на самом деле было интересно, смогу ли я получить более высокие цифры, чем в том гитхабе. И к тому же для упражнения мне дали датасет MIMIC III, который не так-то просто получить бесплатно. И потом я выложила это упражнение на свой гитхаб.

Буквально за пару месяцев до этого накрылся мой старый ноутбук, и я купила новый, с видеокартой, совместимой с нейросетями. Это была GeForce GTX 4 Gb, не всякая нейросеть туда войдет, но мне было важно научится работать с CUDA и понять, что там вообще происходит. Ну и сети, которые обучались за несколько минут вместо часов, тоже радовали.

Конечно, перед сдачей я отправила это задание на проверку парню. Он помогал в программировании удаленно, в основном это были какие-то общие советы: какую библиотеку для чего выбрать. Самое главное - это были поддерживающие разговоры на тему работы и учебы. Просто обсудить то, что я делаю, с человеком, который на 100% в теме, давало мне много сил и уверенности в себе и помогало запасать информацию.
Часть 16. 2020 год.

Тем временем незаметно наступил 2020 год.

В январе Родриго мне сообщил, что появилась вакансия на место research assistant в одной сан-себастьянской компании, это исследовательский центр в области AI (NLP, computer vision, роботика, вот это вот все), далее ИЦ. Я не очень хочу писать, как называется компания, чтобы она не искалась поиском. Если вы знаете, как меня зовут, то это гуглится.

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

И после сообщения Родриго я отправила им письмо в четвертый раз. И меня наконец позвали на собеседование. Так, в начале февраля у меня аккумулировалось три компании, куда я в теории могла пойти работать, и у всех трех был разный приоритет. Все три были медленные, и я в какой-то момент им всем сказала, что должна дать ответ другим компаниям и чтобы они как-то побыстрее решались. “Савана” отказала на последнем этапе, выбирала из двух кандидатов и выбрала не меня. Консалтинг был готов меня взять прямо завтра и предложил зарплату намного больше, чем я попросила (у меня до сих пор нет такой зарплаты, какую они предлагали), и несколько раз позвонил, чтобы поговорить. Меня уговаривали! Представьте, как поднялась моя самооценка.

В то время как сан-себастьянские тянули с ответом. Я даже начала разрабатывать план на случай, если я приму оффер одной компании, а потом мне сделает оффер другая, у которой приоритет выше. Что в таком случае делать? Сразу сказать, как есть? Или выйти на работу, а потом быстро уволиться под предлогом испытательного срока?

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

И вот во вторник я прихожу на работу, распечатываю оффер от консалтинга, подписываю его ручкой, чтобы отсканировать и отправить. И перед тем как сканировать, я иду в кафешку на третий этаж, чтобы взять кофе. Утром в кафешке большая очередь: все хотят кофе. Я стою в очереди и листаю твиттер и инстаграм в телефоне, как обычно. И в этот момент приходит письмо с оффером от компании мечты.
17. Работа мечты

Почему я очень хотела работать в этом ИЦ?

1. Я уже писала, что я хотела жить в Сан-Себастьяне. Это красивый город в горах на берегу океана, где я первый раз за все время в Испании почувствовала себя спокойно, как дома, где у меня стали появляться приятели и знакомые и где мне по-настоящему понравилось. Помню, был февраль 2018 года, только начался второй семестр, стояла необычно солнечная и теплая погода, цвели магнолии (не то чтобы в других городах Испании нет магнолий зимой, но здесь еще все было очень зеленое - трава, горы). Я сидела на террасе университетской кафешки и вдруг представила, что скоро магистратура закончится и мне придется уехать, и мне стало грустно. Я не хотела уезжать.

2. В Стране Басков не так много компаний, связанных с обработкой языка. Это сейчас все хотят себе лингвистический датасаенс, а тогда это было довольно нишевое направление. У меня было собеседование с компанией Sherpa, у которой довольно неоднозначная слава, и еще в одном консалтинге, название которого я не помню. Ну и еще один вариант был получить стипендию от университета. Среди вышеперечисленных, ИЦ был самой опытной в NLP компанией.

3. ИЦ занимается R&D - research and development. Это частная некоммерческая организация - фонд, существующий как на гранты от правительства Страны Басков, Испании и Европы, так и на контракты с индустрией. Разница с обычной компанией в том, что деньги от контрактов не могут использоваться как прибыль, а все должны инвестироваться в исследования или быть резервом для следующий год. С этим связано то, что работников нанимают под проекты, временно. Но сама работа в ресерче очень интересная. Это идеальное сочетание того, чем я занималась в магистратуре/докторадо, с real-world проектами.

4. В ИЦ была возможность совмещать работу в проектах и PhD, то есть то, что ты делаешь в рамках рабочих проектов, можно опубликовать, и через 5 лет стать доктором философии в области компьютерных наук (можно и раньше, если получится, но скорее всего, не получится). Материал для публикаций зависит от проекта, его может быть больше или меньше, но в целом ИЦ тебя всячески поддерживает и дает время для чистого академического ресерча. Соотношение работы и учебы тоже может быть разным и зависит от проектов. Степень доктора ценится в испанском датасаенсе и сразу же придает тебе сеньорский флер.

5. И наконец, очевидно, что я хотела жить поближе к своему парню. Бильбао тоже был неплохим вариантом: полтора часа езды на автобусе лучше чем шесть часов на автобусе. К тому же он тогда работал в Бильбао, а жил в Сан-Себастьяне. Но Сан-Себастьян все равно был идеальным.
18. Локдаун и программирование

Помимо всего прочего, про что я уже написала, новая работа была замечательна тем, что на ней я наконец должна была начать по-настоящему программировать. До этого, на предыдущих работах, я сама себе придумывала задания, сама думала, как можно автоматизировать работу, которую мне поручили. Никто из коллег не смотрел мой код, не говорил, хороший он или плохой. Никто даже особенно не знал Python. Моя начальница в “Просоди”, например, была фанаткой баша и все делала на нем.

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

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

И снова меня спасла случайность. Неизвестно, как сложилась бы моя программистская судьба, если бы не случился локдаун. Прямо в мой первый рабочий день. Мы с парнем внезапно оказались закрыты в одной квартире, а у него еще к тому же было много свободного времени. Этим нельзя было не воспользоваться. Я обращалась к нему за помощью много-много раз. Он продолжил учить меня программировать. Мне трудно давались манипуляции со словарями, индексация списков и numpy матрицы. И XML. Помимо этого, он генерировал идеи для моих заданий. Мне было интересно наблюдать за тем, как работает воображение человека, который учился в университете на технической специальности (он изучал программирование, но это не было его основной специализацией).

Когда мне вдруг прилетело задание сделать простой user interface для демо, возникла необходимость быстро изучить Javascript. Так быстро выучить его я не могла и обратилась за помощью к другу, который в то время изучал фронтенд (спасибо, друг). Мне нужны были несколько функций на JS.

Я опасалась, что меня скоро раскроют, узнают, что мне кто-то помогает, что я не сама все это делаю. Я с волнением представляла, что вот скоро удаленная работа закончится, я выйду в офис и ничего не смогу делать без помощи. Забегая вперед, скажу, что дома мы работали полтора года, этого было достаточно, чтобы кое-чему научиться, и работа в офисе не вызвала трудностей (за очень редким исключением).

В связи с этой темой, хочу задать вопрос. А кто вам помогал в изучении новой профессии? Были ли у вас люди, без которых вы бы не научились тому, что умеете сейчас?
2024/11/29 05:16:44
Back to Top
HTML Embed Code: