После появления на рынке API для беседы с ChatGPT 3.5 каждый второй заказчик решения на основе машинного обучения (ML) хочет внедрить у себя ИИ, который может красиво и содержательно общаться на русском языке.
Меня зовут Екатерина, я IT-архитектор команды SimbirSoft, специалист по ML и поклонница всего, что связано с обработкой текстов на естественном языке (NLP). Сегодня будем разбираться в тонкостях решения одной из популярных на рынке задач – автоматического составления аннотаций. Для эксперимента мы использовали две GPT-подобных модели, «заточенных» на русский язык: GigaChat и YandexGPT. Заявленный потенциал систем тестировали на текстах трёх жанров: научном, научно-популярном и художественном. Что из этого получилось, расскажем в статье.
Материал будет полезен тем, кто следит за тенденциями развития машинного обучения на рынке и в целом интересуется внедрением больших языковых моделей (LLM) в ML-проектах – для оценки их возможностей «из коробки».
Аннотация текста: особенности работы с задачей и основные требования
Аннотация – краткое содержание, пересказ текста (иначе, text summarization). Выделяют два подхода к её автоматическому составлению: экстрактивный (extractive) и абстрактивный (abstractive). Экстрактивные аннотации представляют собой компиляцию, «нарезку» предложений из исходного текста. В классическом варианте системе заранее сообщают максимальное количество (N) предложений, которые необходимо вытащить из текста. Далее модель ранжирует предложения по смысловой важности и выдаёт ключевые для понимания общего содержания текста.
При создании абстрактивных аннотаций одна из задач модели – изложение основного содержания «своими словами». Зачем? Потенциально это обеспечивает большую связность и стилистическое единство аннотаций.
Тут мы подходим вплотную к трём основным требованиям к качественной аннотации:
Фактологическая точность: модель оперирует фактами, а не фантазирует.
Содержательная полнота: аннотация включает все ключевые моменты исходного текста.
Стиль: краткое содержание представляет собой связный текст, написанный в едином стиле.
Для экстрактивных методов фактологическая точность потенциально является нативным результатом, поскольку модель компилирует исходный текст без собственных дополнений. Однако экстрактивные методы не могут гарантировать содержательную полноту, извлекая N предложений, а тем более связность и стилистическое единство итоговой аннотации. Для этого оптимальнее использовать абстрактивные методы, в частности, генеративные модели – большие языковые модели, обученные на задаче продолжения последовательности.
Сможет ли генеративная модель «говорить правду, только правду, ничего, кроме правды» – большой вопрос, поскольку именно генеративные модели известны своей склонностью выдавать ложь за реальные факты, убедительно подражая стилистике текста.
Ещё один ограничивающий момент доступных генеративных моделей – объём памяти. Если вы хотите составить краткое содержание «Войны и мира», этот фокус не пройдёт. Память модели ограничена количеством токенов, которые она способна обработать за одно обращение.
Токен – последовательность часто встречающихся символов, свойственных какому-то языку. Он может представлять слово или его кусочек и обычно состоит из 3–4 символов, включая пробелы и знаки препинания.
Все предложения перед загрузкой в модель токенизируются и заранее предсказать, сколько токенов в том или ином тексте невозможно – из-за различий в используемых алгоритмах. К сожалению, в память модели не войдет даже одна глава «Войны и мира», поместится всего несколько страниц. Проблемы обработки длинных текстов заслуживают отдельного исследования.
Мы же сосредоточимся на коротких текстах, чтобы сопоставить качественные возможности YandexGPT и GigaChat в передаче смысла текста красивым языком. Для сравнения мы брали по три текста научной, научно-популярной и художественной литературы. Небольшое количество объясняется трудоёмкостью процесса поиска/подготовки текстов, а также анализа результатов посредством экспертной оценки.
Популярные количественные метрики типа ROUGE, BLEU, BERTScore, METEOR, которые оценивают совпадения в лексике между оригинальным текстом и аннотацией, нам не подходят, поскольку подобные показатели указывают на соответствие между двумя текстами косвенно. Нам же важно оценить прямое соответствие аннотации тем характеристикам, которые мы перечислили выше, а именно: фактологической точности, содержательной полноте и связности/стилю.
Как решали задачу
Для базовой оценки качества мы использовали API моделей GigaChat и YandexGPT с промпт-режимом. У YandexGPT есть отдельный режим по составлению кратких содержаний. Однако этот вариант нам не подошёл, поскольку полученные аннотации были составлены не в виде пересказа своими словами, а как набор списка тезисов. Кроме того регулировать длину аннотации в нём невозможно.
Мы использовали коробочные модели без подачи примеров аннотированного текста. В качестве промпта взяли стандартную формулировку: «Составь краткое содержание на 3–4 предложения следующего текста».
У YandexGPT в настройках есть параметр «температуры» с диапазоном [0, 1], который определяет, насколько креативным будет сгенерированный моделью текст: большему значению соответствует большая непредсказуемость. Мы тестировали режимы 0,6 и 0,3, выбрав первый – с чуть более высокими усреднёнными показателями оценки содержания. Поскольку API YandexGPT имеет строгое ограничение на 2000 токенов (GigaChat более гибкий в этом отношении), нам пришлось вручную сокращать исходные тексты с сохранением их смысла и структуры.
Периодически обе системы давали сбой: GigaChat отказывался отвечать, а YandexGPT выдавал ошибку. В этих случаях мы запрашивали «иной ответ», пока не получали какой-то текст. Первый полученный текст использовался для анализа.
К каким результатам пришли
Обратимся к сводной таблице и обсудим интерпретацию результатов.
Первое, что бросается в глаза – YandexGPT получил значительно более высокие оценки по критериям фактологии и полноты содержания. GigaChat в 2 раза чаще (0,4 против 0,2) придумывает или додумывает факты, которых нет в поданном ей тексте, а также почти на 20% хуже отражает ключевые смысловые моменты текста.
Второе наблюдение – обе системы получили высокие оценки стиля и связности изложения. GigaChat с этой задачей справился лучше, но и у YandexGPT не было ни одной оценки ниже 8. Как мы и ожидали, системы прекрасно владеют знаниями о грамматике и нюансами изложения мыслей на красивом русском языке.
Третье важное наблюдение – сложность работы с художественными текстами характерна для обеих больших языковых моделей. Системы слабо справляются с изложением фактов при переплетающихся и неструктурированных сюжетных повествованиях, свойственных художественной литературе. Кроме того, они упускают важные авторские акценты и неверно интерпретируют ситуации, которые легко считываются человеком.
Остальные закономерности – менее очевидные, из которых сложно делать выводы из-за малого размера нашей выборки. Делегируем это авторам более широких исследований.
Анализ ошибок
Поделюсь некоторыми казусами аннотаций, за которые я снижала баллы. Фактологические ошибки совершали и GigaChat, и YandexGPT.
Например, при пересказе первой главы «Собачьего сердца», хотя я не подавала никаких идентификаторов автора или расширенного контекста, обе модели узнавали оригинал. GigaChat рассказывал мне, как бездомный пёс становится питомцем профессора и «получает имя Полиграф Полиграфович Шариков» (хотя это имя фигурирует только в более поздних главах), а YandexGPT с первого предложения заявил, что текст является отрывком «из произведения М.А. Булгакова “Собачье сердце”».
Иной тип фактологической ошибки присутствовал в аннотациях к фрагменту первой главы «С неба упавших трёх яблок». В оригинале отрывка фигурируют два временных пласта: настоящее время, где героиня Анатолия думает, что умирает от кровотечения, и прошлое, где рассказывается о родовом проклятии семьи, причиной которому стала странная свадьба родителей Анатолии – Капитона и Воске. У Воске была старшая сестра Татевик, которая должна была выйти за Капитона, но Татевик умерла накануне своей свадьбы. Вместо неё за Капитона выдали младшую сестру, а похороны отложили. Дух Татевик не слишком обрадовался, с этого всё и началось. При пересказе обе модели признавали, что от кровотечения умирает Анатолия, но дальше обе принимали Анатолию за её мать, считая, что это она вышла за Капитона (своего отца) и была сестрой Татевик (своей тёти).
Баллы за содержание я снимала, когда система упускала факты, которые являются ключевыми для адекватного понимания текста. Например, в «С неба упавших трёх яблоках» GigaChat ничего не говорил о проклятии, просто о факте свадьбы. YandexGPT при изложении статьи про кохлеарные импланты не объяснял, что это такое, и опускал целый раздел о перспективах развития – двусторонней имплантации.
Напоследок о нарушениях стиля. YandexGPT нередко отклонялся от формата. Например, модель предлагала два варианта краткого содержания в одной аннотации или советовала ознакомиться с полным текстом: «Стоит отметить, что это лишь краткое содержание, для более полного потребуется более широкий пересказ текста».
GigaChat иначе нарушал стилистику текста. Например, мне бросился в глаза оборот «так как истекает кровью», а также указание возраста и места жительства героини, как это делают в журналистике, а не в художественном тексте: «Анатолия Севоянц, пятидесятивосьмилетняя жительница Марана, готовится к смерти, так как истекает кровью».
Другой пример – про Шарика из «Собачьего сердца», которого GigaChat описывает то «пострадавшим от рук повара столовой», то «бездомным псом, страдающим от обвара кипятком». Оба оборота являются канцеляризмами, которые нередко встречаются в юридических документах, журналистике, но никак не в художественных текстах.
В целом возможности GigaChat и YandexGPT «из коробки» по составлению аннотаций порадовали, особенно в плане связности и стиля изложения. Для продуктовых задач необходима более тонкая настройка модели и доработка пайплайна подачи текста. Но это отдельная для обсуждения тема?
Спасибо за внимание! Надеемся, что статья была для вас полезна?
rodion-m
Спасибо за статью, сравнений российских LLM действительно мало. Поделитесь, пожалуйста, как они смотрятся на фоне популярных опенсорсных решений (OpenChat, Command R(+), llama 3) или, например, в сравнении с Claude 3 Haiku?