Искусственный интеллект тренируется на сказках |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2020-04-28 20:00 Окей, гугл, краткий пересказ… Искусственный интеллект уже умеет творить: вспомним рэп-альбом Алисы («YANY») или нейростихи. А умеет ли компьютер пересказывать и сочинять истории? В этой сфере есть трудности. Непросто научить машину пересказывать тексты так же хорошо, как это умеет человек, чтобы конечный материал был точным и в то же время естественным. Для этого нужно научить программу извлекать ключевое из огромного массива информации и составлять целостную и связную историю. В области компьютерной обработки языка автоматический пересказ называется «саммаризация» (от англ. summary — выжимка, краткий пересказ). К этой задаче уже придумано множество подходов. Однако метрики оценки конечного пересказа и сами механизмы работы программ все еще примитивны, а многие из них успели устареть. Разобрать по пунктам Чтобы пересказать текст, сначала необходимо понять, о чем он. Для этого нужно его проанализировать и составить «содержание» из главных мыслей. Компьютер анализирует тексты не так, как человек: он опирается только на формальные признаки. Посмотрим, как можно представить любую (или почти любую) историю в виде, понятном компьютеру. В одной далекой-далекой галактике Одним из первых ученых, занимавшимся формальной структурой повествования, был советский филолог-фольклорист Владимир Пропп. В своей книге «Морфология волшебной сказки» (1928) он исследовал русские народные сказки. Ученый обнаружил, что построение структуры сюжета как русских, так и зарубежных сказок однотипное. В них существует деление персонажей на роли с ограниченным набором функций. Герой, Злодей, Волшебный помощник, которые связаны некоторой логической цепочкой типовых действий: герой отлучается из дома, злодей строит козни герою, волшебный помощник помогает герою (часто через волшебный подарок), герой побеждает злодея и т.п. В сказках Пропп нашел много схем репрезентации того или иного персонажа. Можно по-разному интерпретировать их, создавать новые модели построения нарратива, комбинируя как сюжеты, так и отдельные функции героев. Выделение нарратива сильно абстрагировано от контекста и изучается пока только на языковом уровне. Так, генерирование новых текстов будет довольно объективным. Выделяя типичные роли и повороты сюжета, Пропп сформулировал «морфологию» волшебных сказок, которая как раз поможет выделять нарративную структуру текста. Категории любой волшебной сказки
Категории комбинируются и создают само действие сказки. Некоторые характеристики работают в паре: без одной никогда не появится другая. Причем одно действие персонажа всегда мотивирует другое (например, каждое действие светлой стороны, побуждает к поступку темную и наоборот). Функции героев, сочетаясь друг с другом, создают подвиды, что обусловливает разнообразие персонажей и разные линии сюжета. Герои и злодеи Рассмотрим подробнее типы героев в сказках. Герой побеждает зло и творит добро, Злодей — главная проблема Героя, Донор (Даритель, Волшебный помощник) — тот, кто наделяет Героя магическими способностями, Отправитель — посылает героя на задание, Невеста/Приз — главная цель героя, Псевдогерой — самозванец. Каждый герой функционирует строго в области своих действий. Некоторые герои сочетают в себе характеристики нескольких типов, описанных выше. Например, Злодей может в некоторых ситуациях играть роль Донора. Саммаризация: от краткого содержания к сложным алгоритмам Компьютер не сразу научился создавать тексты «человеческим языком». Простейшие алгоритмы работали как обычный пересказ: программа генерировала краткое содержание и отбрасывала детали и описания. Все просто: программа находила в предложениях слова, которые повторялись чаще всего, и так определяла, о чем он. Далее она выбирала предложения, в которых, собственно, они были, и формировала примитивный пересказ. Однако такой вид саммаризации совсем не похож на естественный человечески пересказ (его еще называют абстрактным). Креативный пересказ Приведенных выше алгоритмов недостаточно для того, чтобы сделать пересказ по-настоящему креативным, воссоздать историю. Откуда компьютеру знать, как должны развиваться события? Можно просто накопить определенный массив текстов — сформировать «память» программы из разных готовых историй. По ним уже можно будет строить новые рассказы. По такому принципу, например, работает система MEXICA. Чуть сложнее работает TALE-SPIN — она использует действия, которые герой уже совершил в тех или иных историях, и «додумывает» концовку. Так программа пытается решить проблемы, которые возникли перед героем в ходе повествования.Чтобы приблизить пересказ к естественности, важно, чтобы программа хорошо «понимала» исходный текст: умела правильно разрешать анафору (связывать местоимения с существительными, к которым они относятся), подбирать синонимы, оценивать эмоциональную окраску текста. А при чем тут Пропп? Формальная структура сказки (ограниченный набор ролей, список действий и взаимодействий между героями, единый принцип построения сюжета), которую описал Владимир Пропп, хорошо подходит для компьютера. Можно разметить много текстов в соответствии с «Морфологией волшебной сказки» и затем использовать их для генерации новых: будь то пересказы или новые истории. Разберемся, как это делается. Используем логику Сказку можно запрограммировать, но используя не простое, а Ограниченное Логическое Программирование (Constraint Logic Programming). В ОЛП отношения между переменными представляются как ограничения: значения, которые может принимать одна переменная, ограничены другими переменными. Используя ОЛП, мы как бы доказываем теорему: если соблюдены условия A,B,C, то возможно D. В сказке «Ограничение» есть ничто иное как взаимные «отношения» между персонажами (личное поле одного ограничивает личное поле другого, как в праве). А эти переменные в задаче есть не что иное, как роли, описанные Проппом. Количество задач, которые могут иметь персонажи, ограничено их уникальными функциями (т.е. конкретное свойство относится к конкретному герою, грубо говоря, один герой не может делать все и сразу). В каждом предложении сказки может раскрываться та или иная роль. В терминах ОЛП: каждому предложению сказки соответствует или не соответствует какая-либо функция, если в нем встретились или не встретились те или иные типы героев. Эту задачу мы и будем решать. Как представить сказку в виде «ограниченной логической задачи» Сначала для каждого предложения автоматически создается его абстрактное семантическое представление. Это позволяет представить ситуацию, описанную в предложении, в виде переменных и отношений между ними. Вот так: При этом программа не различает три разных he, которые относятся к одному и тому же персонажу (скорее всего, дракону, который похитил какую-нибудь принцессу). Такие неоднозначности приходится разрешать вручную. После этого переменным присваиваются возможные роли. Большинство функций по Проппу можно определить по ключевым словам, присутствующим во фразе. Например, переменные с ролью «злодей» часто встречаются вместе с глаголами типа «нападать», «атаковать» и прочими представителями семантического класса агрессивных глаголов. Линии жизни героев Главного героя тоже можно выделить автоматически. Важность героя вычисляется на основании количества его упоминаний в тексте. Учитывается также расстояние (в предложениях) от первого до последнего появления и номер предложения, где мы встречаем героя впервые. Взаимодействия героев тоже необходимо учитывать. Злодей встречается с героем обычно один раз за всю сказку, но важность его от этого не уменьшается. Его линия развивается отдельно, и он со стороны влияет на все остальные события. Пропп также ввел «ограничения» на функции героев (не путать с ограничениями в программировании). Это значит, что в сказке некоторые функции либо обязательно должны встретиться в одном предложении (например, злодей и победа над ним), а другие функции наоборот не могут (например, похищение и спасение) Вот и сказочке конец Таким образом, все факторы, которые мы назвали выше, могут по-разному комбинироваться и работать в совокупности в процессе построения рассказа. Учитывая важность героев, набор их характеристик и функций в «ролевой игре», количество взаимодействий и ограничений, машина может выбрать наиболее логичное и верное решение для конкретной сгенерированной проблемы. Научить машину писать сказки — это только половина дела. В работе мы можем использовать разные алгоритмы и схемы построения произведения, чтобы создать простейший текст. Он будет состоять из блоков, которые были уже написаны людьми раньше, в нашем распоряжении находятся все когда-либо написанные рассказы. Важнее здесь сделать текст креативным, создать что-то действительно новое. Для этого нужно совершенствовать существующие программы и искать новые подходы к машинному обучению. Дария Тихонова Источник: pin.it Комментарии: |
|