«Еще полгода назад я не программировала, а теперь мне снится код»
Студенты программы профессиональной переподготовки «Компьютерная лингвистика» поучаствовали в хакатоне «Мемориала» — и поделились своими впечатлениями.
17-18 июня состоялся хакатон memo.data по использованию данных о репрессиях, собранных Международным Мемориалом. Участники хакатона работали со списками жертв репрессий, с базой работников госбезопасности 30-х годов, с адресами и описаниями репрессивных учреждений. Организаторы memo.data предлагали подумать о том, какие приложения можно разработать на основе данных «Мемориала», какие выводы получится сделать из анализа этих данных, а также как интегрировать историю в современное медиапространство.
Студенты программы профессиональной переподготовки «Компьютерная лингвистика» Александра Малафеева и Андрей Калмыков исследовали тексты писем осужденных из лагерей. Корпус из пяти с лишним тысяч писем до этого не был доступен исследователями и не изучался методами компьютерной лингвистики. Мы узнали у Александры и Андрея, что им удалось понять про эти тексты и какие навыки, освоенные в стенах школы лингвистики, им пригодились.
– Расскажите, что побудило вас участвовать в хакатоне?
Александра Малафеева: Скажу сразу, что еще полгода назад я никакой код не писала, а сейчас он мне иногда снится, хотя и сейчас я программирую только базовые вещи.
О хакатоне я узнала из письма Жени Мещеряковой, нашего преподавателя Python и машинного обучения на курсах ДПО по компьютерной лингвистике. Она написала: «Если вы уже устали от отсутствия дедлайнов, то вот вам идея, как провести ближайшие выходные». За пару дней до этого у нас как раз прошла сдача экзаменов и финальных проектов, и только-только выдалось свободное время.
Прежде я не была на хакатонах, плюс было интересно попробовать свои силы. К тому же организатором выступал «Мемориал», в который идейно мне хотелось вложиться чем-то полезным.
Андрей Калмыков: Я как-то вычитал, что заведомо короткий цикл разработки приятен тем, что потом проект можно выкинуть из головы, без длительных доделываний и поддержки. Но по итогам не могу сказать, что это в точности так, еще не понял среду хакатонов.
– Как вы выбирали тему и цель исследования? Что хотелось узнать, понять?
Андрей Калмыков: Наш проект назывался «Исследуем тексты писем из лагерей». Хотели повыделять какие-то общие темы, о которых многие пишут. Но тематического моделирования per se мы не делали, а действовали в обход через степень характерности слов (TF-IDF), так у нас был больший контроль над промежуточными шагами. Так что в целом мы смотрели за поведением такой единицы как целое письмо.
Александра Малафеева: У нас с Андреем уже был опыт совместного учебного проекта. С самого начала мы знали только то, что хотим работать с текстами.
Организаторы сделали гугл-табличку, куда участники могли вписывать свои идеи проектов. Мы прочитали, что одна из команд планирует работать с письмами из лагерей, а именно, что они хотят повыделять штуки вида «из такого лагеря пишут скорее об этом». Захотели к ним присоединиться, но оказалось что они уже принялись за другую тему.
Мы решили для начала посмотреть на все письма отдалившись от текстов, нанеся их в виде точек на одну картинку, так чтобы расположены они были в какой-то зависимости от содержания. С тем, чтобы потом приблизиться и поработать с отдельными заинтересовавшими моментами, например повыделять какие-то частые языковые конструкции (но на это не хватило времени). После того как мы презентовали нашу идею и набросок подхода, к нам присоединились еще два человека. Организаторы в какой-то момент принесли нам жесткий диск с текстами писем из лагерей. Оказалось, что этих данных в открытом доступе пока нет и методами компьютерной лингвистики их никто не исследовал.
Оказалось, что этих данных в открытом доступе пока нет и методами компьютерной лингвистики их никто не исследовал.
– Что самое любопытное/интересное/неожиданное удалось узнать про лагерные письма?
Александра Малафеева: Просто прочитав несколько писем заключенных, я была удивлена их эмоциональностью и художественными подробностями. Думала, что писать будут сдержанно или только о грустном, но нет. Такое ощущение, что там весь спектр эмоций: нежность, ревность, забота, восхищение природой… Не знаю насколько это характерно для писем: всегда ли так пишут, или же это связано с тяготами лагерной жизни и тоской по близким.
Такое ощущение, что там весь спектр эмоций: нежность, ревность, забота, восхищение природой…
В некоторых письмах выделялись такие неожиданные характерные слова как «чайка», «грибы», «папка». Причем, например, «папка» — не канцелярская, так себя называет себя метеоролог Алексей Вангенгейм, обращаясь к своей маленькой дочери: «Папка твой почти все время мысленно с мамой и с тобой», «Скорей учись писать, чтобы чаще посылать свои письма своему папке», «Твой папка».
Сейчас я выложила наш результат в виде интерактивной визуализации.
– Какие навыки и умения, освоенные во время учебы, пригодились?
Андрей Калмыков: Безусловно, программирование. На самом хакатоне ничему не научился, мы как раз очень на заготовки опирались. Так что опыт предыдущих учебных проектов очень важен. Хотя вот тайминг явно показал, что на предобработку нужно закладывать кучу времени, хотя это и общее место. Мы на это весь первый день потратили, и я много нервничал по этому поводу, так как не ожидал.
Александра Малафеева: Мы пользовались тем же набором методов, который до этого использовали в части учебного проекта. По горячим следам, так сказать. В учебном проекте у нас были тексты сказок разных народностей мира, и результат получился любопытным. С письмами так же хорошо не получилось, а другие методы мы просто не успели попробовать.
Если по техническим шагам, то действовали так: сначала конвертировали письма в один формат, удаляли технические файлы, в результате получили около пяти тысяч файлов-писем. Эти тексты токенизировали, токены-слова лемматизировали, отбросили стоп-слова. Отобрали те, которые во всем корпусе писем встречаются не менее десяти раз, тем самым заранее снизив размерность последующего пространства. И каждому такому слову приписали число — значение его TF-IDF, оно отражает степень характерности данного слова для данного письма среди всего корпуса. Из всех таких слов составили уникальный словарь (без повторений). А из слов-элементов этого словаря образовали очень-многомерное пространство, в нем текстам соответствуют точки. С помощью метода truncated SVD сильно снизили размерность этого пространства, чтобы расстояние между точками-текстами было более осмысленно. И методом t-SNE построили проекцию на плоскость (уже двумерное пространство), он ищет ее так, чтобы те точки, которые были сильно удалены друг от друга в многомерном пространстве, оказались сильно отдалены и в этом. Так получили точечную диаграмму текстов, согласно содержащимся в них ключевым словам. Потом ненадолго вернулись в предыдущее пространство, полученное в ходе truncated SVD, и нашли там кластеры с помощью алгоритма k-средних. Приписали каждому кластеру свой цвет. И, окончательно вернувшись к двумерному представлению, раскрасили точки-тексты согласно кластеризации предыдущего шага.
Еще был план попробовать методы LDA и doc2vec, но не дошли. В целом очень круто иметь стек технологий, который сработает на любых данных, приходить с ним на хакатон и пробовать его. У нас все время съели предобработка и подбор параметров в методах.
Работать в новой команде не всегда просто, но это хороший и полезный навык. Думаю, у нас неплохо получилось. После защиты проекта приятно было наконец расслабиться и обсуждать со всеми участниками хакатона разные методы, делиться идеями.
Очень интересно было посмотреть на другие проекты. Мой любимый — это «Рубрикация профессий репрессированных», технически совершенно шикарный1.
Ну, и вообще, в «Мемориале» было уютно и дружелюбно, мне понравилось.
1В работе над этим проектом участвовал выпускник магистерской программы «Компьютерная лингвистика» Денис Кирьянов.
Мещерякова Евгения Игоревна