Описание задачи
Набор данных содержит структурированные русскоязычные комментарии (docstring) к функциям на 5 языках программирования (Python, Java, C#, Go, JavaScript). Датасет содержит 500
задач.
Основные особенности:
- Первый специализированный корпус для русскоязычной документации
- Сочетание реальных данных с GitHub (для тестирования) и синтетических данных от Qwen2.5-Coder-32B-Instruct (для обучения)
- Строгая фильтрация по полноте и соответствию стандартам документирования
- Все комментарии приведены к одному из перечисленных форматов (Python - GoogleDoc, JavaScript - JSDoc, Java - JavaDoc, C# - XML, Go - GoDoc)
Тестируемые навыки моделей: Instruction Following, Code Perception, Simulation, Documentation
Авторы: Мария Дзюба, Валентин Малых
Мотивация
Целевые модели и ограничения
Ориентирован на оценку моделей, поддерживающих генерацию структурированной документации (DeepSeek-Coder, Qwen2.5-Coder)
Не подходит для задач:
- Генерации неструктурированных комментариев
- Суммаризации кода
- Объяснения кода
Пользователи и интерпретация результатов
Основные пользователи:
- Разработчики и исследователи в сфере NLP, занимающиеся разработкой инструментов автоматической документации
Результаты позволяют:
- Оценить способность моделей генерировать технически точные комментарии, соответствующие стандартам документирования
Метрика
- chrF оценивает похожесть сгенерированного текста на эталонный по символьным n-граммам, учитывает морфологию, орфографию и грамматические окончания, особенно важные для русского языка из-за его морфологической сложности
Описание датасета
Поля датасета
instruction
[str] — Промпт-инструкция для модели, содержащая шаблон для вставки элементов вопроса.inputs
— Вводные данные, формирующие задание для модели. Могут включать одну или несколько модальностей - видео, аудио, изображение, текст.function
[str] — Функция, к которой нужно сгенерировать структурированный комментарий.
outputs
[str] — Правильный ответ на вопрос.meta
— Метаданные, относящиеся к тестовому примеру, но не используемые в вопросе (скрытые от тестируемой модели).id
[int] — Номер-идентификатор вопроса в датасете.language
[str] — Язык программирования, на котором написана функция.
Промпты
Для задачи были подготовлены 10 промптов, которые были равномерно распределены по вопросам по принципу "один вопрос – один промпт". Шаблоны в фигурных скобках в промпте заполняются из полей внутри поля inputs
в каждом вопросе.
Пример:
"Напиши русскоязычную документацию к функции.
Функция:
{function}"
Создание датасета
Этап 1: Сбор исходных данных
- Обход русскоязычных GitHub-репозиториев с разрешительными лицензиями или без них, идентификация языка через Lingua
- Извлечение функций с помощью function_parser и Code-Text
Этап 2: Синтетические данные
- Для генерации синтетики использовалась модель Qwen2.5-Coder-32B-Instruct
Этап 3: Очистка и стандартизация
- Строгая фильтрация по структуре (требование полноты покрытия всех документируемых элементов в коде)
- Стандартизация стиля всех комментариев
- Фильтрация по длине (250-1000 символов)
Метрики
Для агрегированной оценки ответов моделей используются следующие метрики:
chrF
: Метрика, оценивающая совпадение символьных n-грамм с эталонным текстом и подходящая для морфологии и орфографии русского языка