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

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

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

 

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

E-mail: ling@hse.ru

По вопросам, связанным с сайтом: portalhseling@gmail.com

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

Китайский отвар XV века и онтология футбола: вторая часть отчета о летней практике компьютерных лингвистов

Рассказы студентов магистратуры «Компьютерная лингвистика» о летней производственной практике в Semantic Hub и Институте проблем передачи информации РАН.

Китайский отвар XV века и онтология футбола: вторая часть отчета о летней практике компьютерных лингвистов

CC0 Creative Commons

Студенты второго курса магистерской программы «Компьютерная лингвистика» факультета гуманитарных наук НИУ ВШЭ поделились впечатлениями от производственной практики в компьютерно-лингвистических стартапах, крупных международных компаниях и серьезных исследовательских институтах. Во второй части практиканты рассказывают об опыте, полученном в компании 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 курс ОП «Компьютерная лингвистика»