Семантический парсер научился языку по видео

Katz et al. 2018

Разработчики из Массачусетского технологического института придумали семантический парсер, который учится новым словам по парам видеоролик-аннотация. Примерно так же, по словам ученых, языку учатся маленькие дети, поэтому такой парсер не только упростит задачу автоматического распознавания текста, но и расскажет больше о языковом восприятии человека. Проект презентовали на конференции Empirical Methods in Natural Language Processing, которая сейчас проходит в Брюсселе, а с препринтом статьи можно ознакомиться здесь.

Несмотря на то, что многими лингвистами (в основном, сторонниками порождающей грамматики) способность к языку считается врожденной (а точнее — сформировавшейся у человека в процессе эволюции и развивающейся в процессе онтогенеза), его развитие практически полностью обусловлено внешними факторами. Базовый словарь в первый год жизни ребенка формируется из наблюдений: женщина, которая показывает на себя и произносит «мама», называется мамой и, следовательно, откликнется, если ее так назвать. То же самое происходит, например, с глаголами: слова «есть» и «пить» учатся в процессе кормления.

Такой процесс обучения естественен и не требует так много усилий и данных, как, к примеру, процесс обучения иностранному языку в сознательном возрасте. Разработчики из MIT под руководством Бориса Каца (Boris Katz) решили использовать такой метод обучения для автоматической обработки естественного языка, а именно — для работы семантического парсера (или анализатора). Работа такого парсера заключается в том, чтобы соединить лексему (оболочку слова) с его значением (то есть семантической наполняющей). Такой анализ очень важен, во многом потому, что в языке могут встречаться омонимы, семантику которых определить с помощью автоматических средств достаточно сложно. 

Для обучения такого парсера разработчики сняли несколько коротких видео с действиями людей и попросили добровольцев описать их с помощью одного предложения, например, «Женщина проходит мимо стола с желтой чашкой». Всего в работе использовались 840 пар предложений и видео для обучения и 360 — для тестирования системы.

Сам алгоритм работал следующий образом. Его задача заключалась в том, представить определенное предложение в формальной системе лямбда-исчисления. К примеру, уже упомянутое «Она берет кружку» можно представить в виде λxy по следующей формуле:


В этом примере глагол «брать» обозначен xy, что связывает двух участников действия: субъект (человека) и объект (кружку). Это значит, что такая формула должна соответствовать видео, в котором x приближается к y, x должен быть человеком, а y — предметом, а xy должен обозначать «брать», при этом у системы — достаточно большое количество информации о том, что значит x или y. Затем алгоритм покадрово анализирует видео, следя за происходящим на нем взаимодействием объектов и ищет самую подходящую формулу. Полученная формула затем переводится в итоговое предложение — аннотацию к видео.

Для оценки работы алгоритма ученые использовали количество точных попаданий (полного соответствия реальной аннотации и выданной алгоритмом) и неточных попаданий (в этом случае допускалась неправильная расшифровка предиката). При анализе видео без наложения дополнительного шума к анализу коэффициенты составили 0,841 и 0,911 соответственно.


По мнению ученых, работа такого алгоритма напоминает процесс обучения языку маленьких детей: наблюдая за миром вокруг и слушая, как его описывают люди, они учатся сопоставлять одно и другое, в конечном итоге обучаясь языку. У такого метода, однако, есть несколько недостатков: к примеру, разделить «брать» и «прикоснуться» в такой формальной системе (и на видео тоже) без дополнительных средств может быть очень сложно. В целом, такой метод обучения семантического парсера удобен из-за сравнительно небольшого объема необходимых для обучения данных.

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

Елизавета Ивтушок

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.