Машинный перевод сицилийского и ловля вербовщиков ИГИЛ: магистры Школы лингвистики рассказали о летней практике
Михаил Нефёдов
Я проходил практику в компании «Гарант». Компания занимается информационно-правовым обеспечением, по сути, там такой маленький «Яндекс» для юристов.
Я попал в отдел Research and Development, в этом отделе почти не пишут код, а в основном генерят идеи. Потом хорошие идеи отдают программистам, которые их реализовывают.
Мне дали отдельную задачу на весь месяц и ни в чем меня не ограничивали. У компании есть база судебных решений, она постоянно пополняется, и меня попросили сделать инструмент, который автоматически извлекал бы стороны (истец, ответчик) и потом классифицировал их по признаку государственная/негосударственная организация.
Выяснилось, что какими-то простыми правилами этого не сделать - судья из Хабаровска напишет одним способом, судья из Самары другим, судья из Ульяновска - третьим. Сделать для судей стандартный шаблон, где в определенное место вписывались бы стороны, никто не додумался. В итоге мне пришлось создать комбинированное решение, которое, в частности, опиралось на базу ОГРН (для ее обкачивания пришлось освоить асинхронное программирование). Работающее решение на Python я отдал нашим разработчикам.
Владислав Тушканов
Я проходил практику там же, где работаю - в Лаборатории Касперского. Вообще я попал туда как человек, способный отличить шведское порно от шведского «непорно» (по образованию я переводчик и преподаватель шведского языка). Да-да, в компании есть люди, которые получают деньги за то, что целыми днями изучают порнографический контент на разных языках. Потом это используется в «Родительском контроле» .
Кстати, речь идет не только о порнографии, есть десятки разных типов опасного контента. Например, серьезную опасность представляют интернет-магазины, где ребенок может купить много всего на привязанную к аккаунту родительскую карту.
Во время практики мы исследовали возможности автоматической классификации такого опасного контента с использованием методов машинного обучения. Когда у меня уже была версия на Python, программисты сказали, что это они к себе встраивать не будут, так как у них все на C#. Пришлось за неделю освоить С# и переписать программу на нем.
Еще одна экспериментальная разработка, которую мы придумали и (получив разрешение начальства потратить на это время) осуществили - поиск потенциально опасных для ребенка групп в соцсетях. Многие помнят историю со студенткой МГУ, которую завербовали в ИГИЛ. Мы искали группы такого рода, при этом применялись различные метрики из теории графов (т.к. любая соцсеть естественным образом представляется в виде графа), чтобы по связям в графе найти максимальное количество таких групп.
Алена Феногенова
Мы с Мишей Поповым практиковались в НИИ КВАНТ. Я занималась извлечением англицизмов в русскоязычных соцсетях. Новые заимствования (айфон, селфи, скрапбукинг и т.п.) - серьезная проблема для задач автоматической обработки языка, поскольку они, как правило, не успевают попадать в словари, анализаторы ошибаются в определении их морфологической парадигмы. Вопрос в том, как их найти.
Поскольку написание англицизмов может варьироваться, мы пытались реконструировать звучание слова и совмещали в нашем методе фонетику с морфологией. Далее мы пытались отфильтровать кандидатов в англицизмы методами дистрибутивной семантики. В конце получился сложный алгоритм, я удивилась, но там даже нейронные сети появились. По итогам работы мы написали статью, которая подана на конференцию AINL.
Михаил Попов
У меня в НИИ КВАНТ была другая задача, связанная с разрешением омонимии в привязке к Википедии. Для определения семантической близости слов и классификации текстов успешно применяется модель дистрибутивной word2vec, однако омонимичные, то есть имеющие несколько разных значений слова, затрудняют ее использование. Каждое слово представляется в виде семантического вектора, и для многозначных слов получается склеенный вектор многих значений, что искажает картину.
Чтобы решить эту проблему, я применил адаптивную модель adagram, которая позволяет разделять значения слова и затем присваивать им отдельные вектора. Однако проблема состояла в том, что Adagram написан на не очень распространенном языке Julia, для которого мало инструментов для работы с текстом. Поэтому мне пришлось переписывать часть алгоритма на Python и немного «поженить» Python и Julia.
Александра Малашина
Я практиковалась в компании Semantic Hub. Решала задачу извлечения информации из базы патентов на изобретения. Пришлось много нового изучить в Python, в том числе, например, библиотеки для проектирования графических интерфейсов.
Ульяна Сенцова
Моя практика проходила в компании «Паблик» - это база СМИ, которая не только предоставляет доступ по подписке к своим коллекциям, но и сама делает аналитику по текстам, занимается медиамониторингом. А еще одновременно с этим я принимала участие в Google Summer of Code - это стипендиальная программа Google по программированию. Google отбирает компании и проекты, где люди занимаются open-source разработкой, а затем объявляет конкурс на участие в этих проектах. Желающих очень много, поэтому они проходят довольно серьезный отбор, нужно показать, что ты владеешь нужными именно в этом проекте навыками, знаниями, технологиями.
Я участвовала в проекте Apertium - это система правилового машинного перевода, которая стремится в первую очередь связать пары языков, для которых нет Google-переводчика. Я разрабатывала проект по переводу между испанским и сицилийским. Итальянцы читают просторечным, но на самом деле этот язык имеет статус полного языка. Мне нужно было создать словари и машинные грамматики в том формате, который требуется для Apertium, и в конечном счете добиться хорошего качества работы переводчика. Найти грамматики для сицилийского оказалось непросто: я писала в различные европейские университеты, и в итоге мне ответили из Мюнхена - там нашелся студент-сицилиец, обучающийся по программе DAAD. Он-то и прислал мне отсканированную грамматику сицилийского языка.