Оценка ответов машины на естественном языке

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Математик Варвара Логачева о диалоговых системах, генерации текстов на естественных языках и перспективах машинного перевода

Сейчас компьютер довольно хорошо справляется со многими интеллектуальными задачами, — в частности, с задачами, которые выдают результат на естественном языке, вроде распознавания речи, машинного перевода, ведения диалога с пользователем. Есть еще всякие более экзотические задачи, например реферирование текста: компьютер читает какой-то большой текст и выдает ее краткое содержание в нескольких предложениях. Или генерация подписей к изображениям: вы даете компьютеру фотографию котенка, который нюхает цветок, а компьютер вам говорит: «Котенок нюхает цветок».

Во всех таких задачах очень много вариативности, неопределенности, и, естественно, выполняя такие задачи, компьютер делает ошибки. И тогда появляется служебная, но тоже очень важная задача — оценить качество порожденного текста, потому что нам надо узнать, достаточно ли хороша система, чтобы ее использовать для реальных задач. И даже если она плоха, то мы хотим узнать, насколько она плоха и как сильно надо ее исправлять.

В принципе, казалось бы, чего проще оценить качество системы? Надо ее запустить, дать ей несколько примеров и посмотреть, что она выдаст. Так обычно и делают: выбирают какое-то множество тестовых примеров, они подаются на вход системе, а потом мы смотрим, как она сработала. И эти тестовые примеры выбираются из реальных данных, которые планируется подавать системе на вход. Мы считаем, что обработка тестового множества говорит о том, как система работает вообще. Получается что-то вроде социологического опроса. Вы опросили тысячу людей и полагаете, что все люди думают примерно так же.

Если система выдает число или один из нескольких заранее определенных ответов, задача оценить качество ее работы становится тривиальной. Например, если система определяет, является ли письмо спамом или нет, ей можно дать тестовое множество писем, про которые уже известно, спам это или не спам, а потом посчитать, сколько процентов писем она классифицировала неправильно.

Но с системами, которые отвечают нам текстом, несколько сложнее. Если речь идет о системе машинного перевода, мы тоже выбираем какое-то тестовое множество предложений, которые она должна перевести, подаем на вход, а потом смотрим, насколько хорошо она их перевела. Самый надежный способ в таком случае оценить качество — это спросить человека, хорошо ли система справилась с переводом. Но тут возникает вопрос: как человеку определить, что перевод хорош? Если все предложение переведено правильно, кроме одного слова, то это хороший перевод или нет? Скорее всего, хороший. А вот если система перевела половину предложения правильно, а половину предложения нет, то тут уже вряд ли мы можем сказать, что это хороший перевод. Но все-таки мы и не хотим его объявлять плохим. То есть исследователи пришли к выводу, что такая бинарная оценка «хорошо или плохо» не очень подходит для объектов с такой сложной структурой и лучше оценивать, например, по какой-нибудь шкале от одного до пяти.

Но здесь возникает новая проблема: неоднозначность и субъективность оценок. Один человек может сказать, что предложение переведено на четверку, а другой — что на тройку. Поэтому часто, оценивая вручную качество работы машинного перевода, исследователи избегают просить пользователей явно оценить качество. Они чаще используют какие-то обходные пути. Например, показывают пользователю два перевода одного и того же предложения, сделанных разными системами, и просят сказать, какой из них лучше. Или, например, дают пользователю автоматический перевод и просят его исправить, то есть сделать так, чтобы он нормально звучал. И в этом случае количество исправленных пользователем слов рассматривается как метрика качества: чем больше слов исправлено, тем хуже перевод.

Оценка таких систем пользователями самая объективная, потому что это и есть целевая оценка. То есть в конечном итоге такие системы разрабатываются, для того чтобы нравиться людям и чтобы люди ими как можно больше пользовались.

Но, к сожалению, мы не можем всегда пользоваться только ручной оценкой, потому что это очень долго и очень дорого. И особенно это неудобно при разработке системы: когда мы разрабатываем систему машинного перевода (например, мы все время в нее добавляем какие-то новые компоненты, как-то меняем ее архитектуру), надо на каждом этапе, после каждого изменения понять, было ли это изменение полезно. И поэтому все-таки очень важно уметь оценить автоматически качество такого сложного вывода системы, то есть качество порожденного текста на естественном языке.

Здесь мы можем поступить точно так же, как в примере со спамом, то есть определить правильный ответ: взять тестовое предложение, которое надо перевести, определить для него эталон, а затем сравнить машинный перевод с этим эталоном.

Тут возникают новые вопросы о том, как вообще можно сравнить две строки. Можно поступить консервативно и признавать правильным переводом только тот, который полностью совпадает с эталоном, но здесь мы рискуем забраковать очень много переводов, которые будут абсолютно правильными, но не будут в точности совпадать с эталоном. В русском языке порядок слов свободный и допускает довольно много вариаций. Например, предложения «Завтра я еду в отпуск» и «Я завтра еду в отпуск» по смыслу абсолютно идентичны, у них одинаковая синтаксическая структура, но просто разный порядок слов.

Вместо того чтобы проверять точное соответствие эталона переводу, мы можем проверять соответствие на уровне так называемого мешка слов, то есть проверять без учета позиции слов. Перевод будет признан правильным, если в нем просто содержатся все те же слова, что и в эталоне, и неважно, на каких позициях. Но это не всегда правильно, потому что русский хоть и язык со свободным порядком слов, но не таким уж свободным. Он много перестановок допускает, но не все подряд. Например, если вы поменяете местами подлежащее и сказуемое, это приемлемо. Но если вы поменяете местами предлог и существительное, которым он управляет, то предложение потеряет смысл.

И еще одна проблема, более серьезная, — это то, что вариативность, о которой я говорила, не ограничивается только разным порядком слов. Вариативность в языке состоит в том, что вы можете рассказать одно и то же вообще разными словами. Например, если вы попросите десятерых переводчиков перевести одно и то же предложение, то вы получите десять разных переводов. Они будут идентичны по смыслу, они все будут правильными переводами, но они будут разными. И в этом случае непонятно, какой из них взять в качестве эталона. И даже если вы возьмете все эти десять переводов в качестве эталонов и будете все их использовать, чтобы сравнить с ними автоматический перевод, вы не можете знать наверняка, что вы охватили все возможные варианты перевода для этого предложения. И вы не можете быть уверены, что автоматический перевод не будет содержать какой-то одиннадцатый вариант, тоже правильный, но не включенный в эти десять.

И задача оценки качества сгенерированного текста до сих пор не решена. Разработано очень много разных метрик, в основе которых лежат разные процедуры сравнения строк между собой. И какие-то из этих метрик, надо сказать, довольно хороши, а какие-то не очень. Но критерием качества для таких метрик является сходство с оценкой, которую выдают пользователи. То есть если пользователь говорит, что перевод хорош, и, согласно метрике, он тоже хорош, значит, скорее всего, это хорошая метрика.

И надо сказать, что для машинного перевода эта проблема уже стоит не так остро, потому что разработано много метрик, которые довольно близко подходят к уровню пользователя, то есть они довольно близки к пользователю. И хоть никто и не добился абсолютно точного совпадения с пользовательскими оценками, все равно результат работы системы машинного перевода сейчас можно оценить автоматически довольно достоверно. Но это не так для других задач, которые генерируют текст. Например, совсем пока еще не удается достоверно оценить качество работы систем ведения диалога с пользователем, диалоговых систем, потому что, если в машинном переводе два разных перевода, они могут быть различны по форме, но совпадают по смыслу. А в диалоговой системе какой-нибудь правильный ответ на запрос пользователя часто может быть отличным не только по форме, но и по смыслу тоже. Например, на вопрос «Как дела?» существует огромное множество правильных ответов. Или даже на какой-то более специальный вопрос, например «Как ты относишься к Моцарту?», можно ответить тоже очень большим количеством способов. И это включает в себя и вариативность языка, и просто разные по смыслу ответы. Так что это сейчас довольно сложная и довольно активно исследуемая тема.


Источник: postnauka.ru

Комментарии: