Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную информацию об использовании файлов cookies можно найти здесь, наши правила обработки персональных данных – здесь. Продолжая пользоваться сайтом, вы подтверждаете, что были проинформированы об использовании файлов cookies сайтом НИУ ВШЭ и согласны с нашими правилами обработки персональных данных. Вы можете отключить файлы cookies в настройках Вашего браузера.
Адрес: 105066, г. Москва,
Старая Басманная ул., д. 21/4
Телефон: +7 (495) 772-95-90 доб. 22734
E-mail: ling@hse.ru
Редакторы сайта — Наталья Борисовна Пименова, Татьяна Борисовна Казакова, Максим Олегович Бажуков, Юлия Геннадьевна Бадрызлова
Школа лингвистики была образована в декабре 2014 года. Сотрудники школы преподают на образовательных программах по теоретической и компьютерной лингвистике в бакалавриате и магистратуре. Лингвистика, которой занимаются в школе, — это не только знание иностранных языков, но прежде всего наука о языке и о способах его моделирования. Научные группы школы занимаются исследованиями в области типологии, социолингвистики и ареальной лингвистики, корпусной лингвистики и лексикографии, древних языков и истории языка. Кроме того, в школе создаются лингвистические технологии и ресурсы: корпуса, обучающие тренажеры, словари и тезаурусы, технологии для электронного представления текстов культурного наследия.
Bangkok: Association for Computational Linguistics, 2024.
Фитискина А. А., Фитискин А. А.
Vox Medii Aevi. 2025. Т. X. № X. С. XXX-XXX.
Anna Leonteva, Toldova S., Fedorov D. et al.
In bk.: Teaching Russian Through STEM: Contexts, Tools, and Approaches. Vol. 1st Edition. L.: Taylor & Francis, 2024.
arxiv.org. Computer Science. Cornell University, 2024
Студенты второго курса магистерской программы «Компьютерная лингвистика» факультета гуманитарных наук НИУ ВШЭ поделились впечатлениями от производственной практики в компьютерно-лингвистических стартапах, крупных международных компаниях и серьезных исследовательских институтах. Во второй части практиканты рассказывают об опыте, полученном в компании Semantic Hub и в Институте проблем передачи информации РАН. Рассказы студентов сопровождаются комментариями и вопросами руководителя магистерской программы Анастасии Александровны Бонч-Осмоловской, прозвучавшими непосредственно во время выступлений. Первую часть рассказов можно почитать здесь.
Мы проходили практику в небольшой компании Semantic Hub; всего там работают около двадцати человек. Они разрабатывают семантические решения для поиска и отбора многообещающих продуктов в сфере фармацевтики. Основными заказчиками, как нетрудно догадаться, выступают фармацевтические компании и разные венчурные фонды, инвестирующие в биотех. Эти компании и фонды или сами предоставляют какой-либо огромный массив неструктурированных данных для извлечения необходимой информации, или же просто указывают ту или иную сферу, и Semantic Hub самостоятельно собирает данные. В любом случае, это так или иначе работа с Big Data.
А.А. : Важно отметить, что данные могут быть в совершенно разных форматах, и одна история, если это просто цифры, т.е. так или иначе структурированная информация — есть разные идеи, как с ними работать и считать. Но Semantic Hub занимается именно неструктурированной информацией — это, в основном, тексты — из которых нужно что-то достать, чтобы это уже потом можно было, например, каким-то образом посчитать, в общем, использовать более известные и отработанные методы обработки данных. Но в самом общем смысле это перевод не-структуры в структуру.
Сережа : Что касается самой моей практики, то у меня было два задания. Первым заданием был сбор данных, т.е. базовое задание, чтобы проверить, могу ли я вообще что-то делать. Мне нужно было написать программу, которая скачивала всю информацию о молекулах и микроорганизмах с сайта гигантской лаборатории, занимающейся их продажей для различных испытаний, больниц, исследовательских центров и т.д. И вот моя программа бодро и вприпрыжку бегала по этому сайту и собирала все молекулы, бактерии и информацию о них. Получилась база данных из около 70 000 объектов, которую я торжественно отправил своему куратору практики.
Со вторым заданием мне повезло, потому что руководитель моей практики — это одновременно мой научный руководитель, и я отчасти делал то, что было в моей курсовой работе. У меня была весьма любопытная задача: мне предложили собрать базу данных медицинских статей, посвященных компонентам, получаемых из животных и растений, которые пытаются использовать для создания лекарств. Не знаю, могла ли кому-нибудь действительно понадобиться такая информация, но мне попадались статьи типа: «В Китае в XV веке издревле отвар из такого-то растения использовался для лечения того-то. Давайте в XXI веке добудем 500 тонн этого растения и попробуем сделать какую-нибудь пилюлю». Соответственно, мне нужно было придумать, как извлечь название именно этого растения, а не какого-то другого, которое также могло фигурировать в статье, но из которого не планировали создавать лекарства. Короче говоря, даже если это задание было изощренной шуткой, в его основе лежала весьма нетривиальная лингвистика.
Если краулер я писал на Python, то для второго задания требовалась уже специальная программная среда – GATE. Что это такое? Это лингвистическая платформа, написанная на Java, в которую встроены ресурсы для всех этапов обработки и работы с текстовыми данными. Одним из таких ресурсов являются модули, работающие на JAPE-правилах: это такие шаблоны, которые можно создавать, чтобы присваивать аннотации определенной информации в тексте для, например, извлечения этой информации. Вот, это если в общих чертах, подробнее можно почитать в той же Википедии.
А.А. : Я вам помогу уточнить, что такое JAPE. Это язык, который позволяет находить один кластер объектов и сопоставлять ему какой-то новый кластер объектов. Например, вы находите все слова, токены, которые написаны с большой буквы, и дальше называете их именами собственными. Дальше, когда пишете уже следующее правило, вы можете опираться на эти имена собственные, и дальше добавите еще что-то — это будет, к примеру, автор. Это очень удобный способ описания шаблонов и элементов, которые нужно найти, особенно в специализированной литературе. А что касается самого процесса разработки, то он устроен так: сначала у нас работают встроенные ресурсы, которые выделяют токены, делят текст на предложения, присваивают части речи, выделяют минимальные синтаксические конструкции. Вся информация поступает к Сереже как к инженеру, и он пишет на JAPE правила и аннотации, таким образом, создавая разметку.
Сережа: Про себя я все рассказал, теперь про Соню. Мы работали в одном месте, в одно время, но на разных задачах. Соня тоже писала правила, только для наименований лекарств, извлекала и анализировала INN (международные непатентованные названия), чтобы получить сведения о действующем веществе и особенностях действия препарата. Важно отметить, что действующее вещество зачастую бывает одно, в то время как само лекарство фармацевтические компании называют совершенно по-разному. С помощью огромного количества правил Соня искала элементы, входящие в названия действующих веществ, это были, например, греческие, латинские корни. Таким образом, Соня пробовала найти значимые признаки и по ним определять INN, в т.ч. для принципиально новых препаратов, инновационных молекул.
Я тоже проходила практику в Semantic Hub, у меня была та же предметная область, что и у Сережи, но я работала и работаю с текстами патентов. Не целиком — меня в основном интересовала патентная формула, patent claim, то есть утверждение о признаках изобретения (его описание). Это не все-все патенты, а патенты только для двух лекарственных средств для лечения гепатита C. Я работала с английским языком.
Формулы делятся на независимые и зависимые. Первая формула независимая, она всегда идет в списке первой, а вторая — зависимая. То есть существует эвристика, которая помогает определить, какая зависимая, а какая независимая. Для автоматической обработки: если там встречается слово «claim», а за ним следует номер, то это уже зависимая формула. Одна формула — это одно предложение целиком.
Задача у меня была следующая: разработка формальной модели синтаксиса для патентной формулы в разделе. То есть нужно было написать правила, и я, так же как Сережа и Соня, работала в GATE и правила писала на JAPE, чтобы корректно вывести сегментацию. Сережа уже говорил, что GATE — это открытый фреймворк, там есть готовые инструменты: токенизаторы, сплиттеры, чанкеры и прочее, для семантической аннотации там можно работать с онтологиями, и можно взять уже готовый пайплайн.
А.А.: Я вам помогу уточнить, что такое JAPE. Это язык, который позволяет находить один кластер объектов и сопоставлять ему какой-то новый кластер объектов. Вы находите все слова (токены), которые написаны с большой буквы, и дальше называете их именами собственными. Дальше, когда пишете уже следующее правило, вы можете опираться на имя собственное, и дальше добавите еще что-то — это будет, к примеру, автор. Это очень удобный способ описания шаблонов и элементов, которые нужно найти, особенно в специализированной литературе.
Яна: Да, и текст не нужно аннотировать.
А.А.: Процесс разработки в GATE устроен так: сначала у нас работают уже готовые модули, которые выделяют токены, делят предложение, потом NLP POS tagger — они присваивают части речи, и потом NP-чанкеры — они выделяют минимальные синтаксические конструкции. Вся информация поступает к Яне как к инженеру, она уже есть, и дальше Яна пишет на JAPE правила и аннотации, то есть разметку, которая вся набирается оттуда. Это может быть токен, все предложение, глаголы и даже куски синтаксического разбора. И на JAPE можно задавать свои специфические значения, например, как-то проверять семантику.
Яна: На что я сегментировала: чисто визуально в патентной формуле выделяются преамбула, переход, или ограничительная часть, и отличительная часть. Они уже как-то описаны в правовых документах, и выделить их довольно несложно. Преамбула — это класс изобретения и его основные особенности: "pharmaceutical composition" — это преамбула, "comprising" — переход, который связывает преамбулу с отличительной частью. Набор этих переходов не совсем стандартный, он зависит от типа патентной формулы.
После перехода идет отличительная часть: чем переход отличается от прототипа (чем стул на трех ногах отличается от стандартного стула на четырех). Сегментировать я решила в таком порядке: выделять сначала переход, потом преамбулу и потом отличительную часть, потому что этот переход проще выделить — не всегда нужно писать правило на JAPE, можно с помощью регулярных выражений. Чтобы облегчить обработку данных, можно сделать препроцессинг. В самой патентной формуле могут быть в скобках ссылки на рисунки, которые меня совсем не интересуют. Эти скобки могут путать пунктуацию, а она довольно важна.
Патентная формула — это всегда одно предложение, в нем бывают пункты, и нужно, чтобы точка после цифры, опять же, не помечалась как конец предложения. Даже в этом малом количестве патентов — всего для двух лекарственных средств — мне встретились несколько категорий: например, "process claim" — процесс приготовления это средства, "product claim" — это определенное химическое вещество, и нужно выбрать определенный паттерн, чтобы потом его извлекать.
Независимая и зависимая формулы отличаются: независимая подлиннее и посложнее. Например, в варианте для product claim перечисляются определенные пункты, и если мы выделим эти пункты в определенные юниты, то мы сможем проще извлекать информацию. Если для каждой конкретной категории писать правила, то мы можем попробовать выделить общие правила для всех. Я решила, что можно выделить claim «ключевое слово». Это первая именная группа: артикль, существительное и между ними прилагательное. И, соответственно, переход выделяется тоже отдельно, и дальше уже пункты. Паттерн зависимой формулы другой, мы можем его разбить на две части: первая — это отсылка к предыдущим формулам, а вторая — уточнение.
Сейчас я занимаюсь особенностями работы правил, как они наслаиваются одно на другое, ищу универсальные правила, потому что чем универсальнее, тем лучше. Совсем универсальные не получатся, и мне сейчас предложили провести небольшое корпусное исследование и посмотреть, как эти правила ложатся на текст.
Я был на практике в лаборатории ИППИ РАН, где делают систему «ЭТАП-3». Изначально это машинный переводчик, но сейчас он развился в более сложную систему, которая берет на вход текст, анализирует его, делает некоторый логический вывод, и которой можно потом задавать вопросы. «ЭТАП» отвечает на это очень неплохо, мне это продемонстрировали.
Когда меня попросили рассказать о себе, оказалось, что несмотря на лингвистическое тестовое задание, задачи у руководителя были подготовлены далеко не лингвистические, и он попросил еще времени на подготовку подходящих задач. В итоге я делал в их машине онтологию про футбол. Игроки, матчи, стадионы, лиги — все это нужно было скачать, сделать в их формате, связать. Для этого мне нужно было пользоваться DBpedia и языком SPARQL для запросов к онтологиям. DBpedia — это большое хранилище с информации из Википедии. Там нельзя просто так править, в отличие от Википедии, и основная информация хранится в табличке.
А.А.: А главное про DBpedia — это то, что такое место, где вся информация закодирована на определенном семантическом языке, то есть она представлена в машиночитаемом виде, например: name: Иван Иванович Иванов; born: 1900-01-01. Это информация, которая или внутри спрятана в разметке Википедии, или была добавлена в DBpedia вручную. Это большой склад «википедийных» фактов с удобной разметкой.
Матфей: Да, это такой здоровенный информационный граф. И для него мне нужен был SPARQL, в котором я долго разбирался, а теперь он мне понадобился в проекте Tolstoy Digital, где я привязываю сущности тоже к DBpedia.
А.А.: А что SPARQL позволяет?
Матвей: Гулять по графу и брать фрагменты, которые тебе нужны, и задавать вопросы к Википедии в очень формализованном виде. Там очень хорошо и подробно все прописано, фильтры очень легко настраиваемые, и можно делать классные выборки.
Записала Надежда Катричева, 1 курс ОП «Компьютерная лингвистика»