Автоматизация разметки в цифровых научных изданиях
Введение
Как готовить цифровые научные издания, не разоряясь? В этой заметке — первой из серии об экономном издании текстов — я оцениваю, какую роль предобученные языковые модели могут сыграть в автоматизации издательских задач, например семантической разметки.
Содержание
Проблема
Труд по любви
Когда любишь, не считаешь… во всяком случае, так гласит старая пословица. К цифровым научным изданиям это относится в полной мере: транскрипция, перевод и комментирование, из которых они складываются, требуют тысяч часов работы, и выполняют её — как в случае Secrets of Craft and Nature in Renaissance France — сотни высококвалифицированных сотрудников.
В каком-то смысле то, что заметные проекты в цифровых гуманитарных науках способны собрать огромные средства, необходимые для их работы, — благо. И всё же тяжёлая зависимость от щедрости богатых фондов, университетов и государственных ведомств, затяжная потребность в больших людских ресурсах — не та экономическая модель, на которой можно строить будущее.
В сущности, если мы хотим, чтобы учёные по всему миру открывали исторические документы широкой публике, стоимость цифровых критических изданий должна упасть на порядки .
Высокий порог
Как ни парадоксально, решение могут дать сами трудоёмкие проекты вроде Secrets of Craft and Nature in Renaissance France: они представляют собой ценный обучающий набор , на котором можно автоматизировать самые отталкивающие и однообразные операции цифрового издания — например, разметку.
Не то чтобы разметка была делом второстепенным. Напротив, разметка стала непременной составляющей любого серьёзного цифрового научного проекта. Стандартизованная Text Encoding Initiative, она позволяет зафиксировать как можно больше сведений о документе и о тексте, который он передаёт: структуру, маргиналии, вычёркивания, разночтения, сорт бумаги, пятна, почерк… что угодно.
Следующий пример, взятый из Secrets of Craft and Nature in Renaissance France, показывает, как разметка обогащает текст дополнительной информацией (категория, структура, семантические поля, вычёркивания и т. д.), в конечном счёте давая цифровым изданиям серьёзное преимущество перед их бумажными предками.
| Plain Text | XML Markup |
|---|---|
| |
Эти сведения ценны не только для архивных целей, но и — как я уже показывал прежде — для синтеза и анализа. Тем не менее подобное аннотирование может отнимать чрезвычайно много времени, ведь один и тот же текст зачастую должен существовать в нескольких обличьях: как перевод, как транскрипция, как модернизированная версия и т. д.
Решение
Трансформеры: кратчайший путь к автоматизации?
В 2020 году OpenAI с большой помпой выпустила новое семейство универсальных больших языковых моделей под названием GPT-3 — «Generative Pre-trained Transformer 3». Трансформеры — сравнительно недавний прорыв в области искусственного интеллекта. Новым задачам они обучаются поразительно быстро: достаточно прочесть промпт и посмотреть на очень небольшое число примеров. Их можно и дообучить на специально подобранном наборе данных (fine-tuning), улучшив скорость отклика и точность. Потому GPT-3 и подобные ей трансформеры называют few-shot learners — моделями, которым хватает нескольких примеров.
По словам OpenAI, GPT-3 содержит рекордные 175 млрд параметров и обучена более чем на 570 ГБ текста, по большей части английских документов, взятых, надо думать, из интернета. Благодаря одним своим размерам GPT-3 задала новую планку в этой области: прямо «из коробки» она выполняет самые разные задачи с тревожным правдоподобием. Она пишет убедительные колонки, общается с людьми в чатах, отвечает на письма, реферирует тексты, переводит документы, объясняет жаргон и т. д.
Получив ранний доступ к API OpenAI в мае 2021 года, я смог проверить, как модель справляется с задачами, которые слывут трудными: переводом французской поэзии и новолатинских текстов на английский, объяснением аналогий и даже пересказом третьего раздела кантовского «Основоположения к метафизике нравов» для семилетнего ребёнка (правда, не слишком убедительным).
Codex
Одно из последних ответвлений GPT-3 посвящено языкам программирования. Модель под названием Codex переводит с естественного языка на язык программирования и обратно. Скажем, если мне нужно регулярное выражение, которое «находит только слова, начинающиеся с заглавной буквы», GPT-3 тут же превращает эту фразу в рабочее регулярное выражение: [A-Z]+\w+.
По словам OpenAI, Codex работает с дюжиной языков программирования, включая Python, JavaScript, Go, Perl, PHP, Ruby и Swift. Гладко превращая псевдокод в код, Codex позволяет сосредоточиться не на утомительном синтаксисе языка, а на логических шагах и стратегиях, благодаря которым программы решают задачи.
Не только OpenAI
Разумеется, OpenAI — не единственный игрок на поле. Как уже говорилось, Пекинская академия искусственного интеллекта объявила в 2021 году о ещё более крупной и мощной модели Wu Dao 2. Nvidia и Microsoft объединили усилия и выпустили модель с говорящим названием Megatron-Turing NLG 530B. Стартапы поменьше, такие как AI21 Labs и Cohere, тоже предлагают публике свои API. Стоит упомянуть и инициативы с открытым исходным кодом вроде EuletherAI. Сцена ИИ, конечно, меняется очень быстро; чтобы следить за новыми начинаниями в этой области, загляните на Hugging Face.
Эксперименты
Цель этих экспериментов — найти самый экономный путь к надёжной автоматизации издательских задач. Можно возразить, что некоторые из них поддаются автоматизации и с помощью алгоритмов обучения с учителем. Эту гипотезу мы рассмотрим в одной из следующих заметок.
Может ли трансформер вроде GPT-3 научиться аннотировать, скажем, технико-научную рукопись XVI века?
Эксперимент 1. Классификация текстов
Начнём с чего-нибудь относительно простого. Как «few-shot learner», GPT-3 должна быстро уловить, по какому принципу наша редакционная группа классифицировала статьи Ms Fr 640.
Составление промпта
Для обучения я взял самый минималистичный промпт и выбрал в качестве примеров четыре коротких статьи в виде простого текста — в том числе о «медицине», «оружии и доспехах» и «живописи».
Проверка
Затем я скопировал ещё один отрывок, которого не было в исходной подборке:
Working neatly
Never put down, if you can, two colors one on top of the other.
But next, having made your design carefully, keep the place of shadows for them alone,
& also separately that of lights & highlights, without layering one color all over & then highlighting or else shading on it.
And in this way, you further your work, economize your colors & work neatly.
Which is the reason that, the colors not being muddled nor mixed together, they do not die & you soften the colors better, since they are not so thick.
Результат полностью соответствует содержанию:
<categories="painting">
Если же взять статью из категории, которой вообще не было среди текстов, отобранных для обучения GPT-3, результат удивляет.
<categories="jewelry">
Итог
Категории «jewelry» (ювелирное дело) в нашем издании Ms. Fr. 640 нет. Редакционная группа предпочитает более широкую категорию «Stones» (камни). Впрочем, чутьё у GPT-3 хорошее, и это значит, что, немного доучившись, она сможет классифицировать любую статью Ms. Fr. 640, а возможно, и других технических текстов XVI века.
Эксперимент 2. Семантическая разметка
Поднимем планку. Если трансформеры вроде GPT-3 способны научиться классифицировать тексты по определённым редакционным критериям, могут ли они распознавать и часть разметки текста?
Secrets of Craft and Nature использует сочетание семантических и структурных тегов. К сожалению, GPT-3, в отличие от других проектов вроде Wu Dao 2, не обрабатывает изображения. Вероятно, будущие версии GPT получат эту способность, без которой не распознать большинство структурных и материальных особенностей документа. Эти теги мы пропустим и сосредоточимся на разметке, не требующей распознавания изображений.
Составление промпта
Семантические теги охватывают упоминания животных, растений, топонимов, чувственных ощущений и т. д. В обучающий промпт я включил несколько примеров из издания:
<!--Input prompt-->
The following is a list of words and their corresponding semantic tags
cannons: <wp>cannons</wp>
powder: <m>powder</m>
flasks: <tl>flasks</tl>
wooden: <m>wooden</m>
iron: <m>iron</m>
parchment: <m>parchment</m>
goats: <al>goats</al>
lambs: <al>lambs</al>
leather: <m>leather</m>
earth: <m>earth</m>
fine fatty earth: <m>fine fatty earth</m>
Venice: <pl>Venice</pl>
Flemish: <pl>Flemish</pl>
almond: <pa>almond</pa>
almond oil: <m><pa>almond</pa> oil</m>
walnuts skin: <m><pa>walnuts</pa> skin</m>
molten lead: <m>molten lead</m>
today: <tmp>today</tmp>
In the past: <tmp>In the past</tmp>
Clockmakers: <pro>Clockmakers</pro>
red copper: <m>red copper</m>
crucible: <tl>crucible</tl>
bellows: <tl>bellows</tl>
charcoal: <m>charcoal</m>
founders: <pro>founders</pro>
Проверка
Попробуем несколько простых слов на модели Davinci-codex: Apothecary (аптекарь), smoke (дым), glassmakers (стеклодувы), latten (латунь) и snake (змея). Результат мгновенный и безупречный:
<!--Output-->
Apothecary: <pro>Apothecary</pro>
smoke: <m>smoke<m>
glassmakers: <pro>glassmakers</pro>
latten: <m>latten</m>
snake: <al>snake</al>
Задача посложнее — составные выражения вроде copper plates (медные пластины), walnut oil (ореховое масло) и wood block (деревянная колода). Цель здесь — проверить, справляется ли GPT-3 с вложенными тегами.
<!--Output-->
copper plates: <m>copper plates</m>
walnut oil: <m><pa>walnut</pa> oil</m>
wood block: <m>wood block</m>
Результат, однако, неоднозначен: Davinci-codex правильно разметила только walnut oil, не распознав вложенные теги tl и m в copper plates и wood block. Впрочем, как показывает следующая проверка, эти ошибки можно исправить, улучшив обучающий промпт. Стоило добавить ещё пять примеров вложенных тегов, и Davinci-codex выдала почти безукоризненный результат с единственной ошибкой (oil paintbrushes):
<!--Output-->
cannon powder: <m><wp>cannon</wp> powder</m>
arquebus powder: <m><wp>arquebus</wp> powder</m>
oil paintbrushes: <m><al>oil</al> paintbrushes</m>
sheep footbones: <m><al>sheep</al> footbones</m>
bronze mortar: <tl><m>bronze</m> mortar</tl>
Заключение
Важно помнить, что эти испытания проводились на небольших фрагментах текста. Подозреваю, что, дай мы в примерах и в промпте больше контекста, модели GPT-3 показали бы ещё лучшие результаты. Более того, дообучение модели на специально подобранных данных, без сомнения, ещё повысило бы точность разметки.
Пусть для доказательства надёжности предобученных языковых моделей эти эксперименты ещё предстоит повторить в большем масштабе, мы всё же можем заключить, что
такой подход позволяет издателям автоматизировать целый ряд задач аннотирования в несколько простых шагов, потенциально экономя огромное количество времени и денег.
