Загрузка
Загружаем соревнования
Дано: короткие тексты на двух языках (английский и русский), представленные в двух модальностях — обычный текст или картинка с этим текстом (JPEG в base64). Нужно классифицировать каждый пример в одну из 7 тематических категорий:
# | Категория |
|---|---|
1 | science/technology |
2 | travel |
3 | politics |
4 | sports |
5 | health |
6 | entertainment |
7 | geography |
Ключевая сложность: половина примеров представлена только картинкой — текст из неё нужно распознать самостоятельно (OCR). Тексты не дублируются:
если пример пришёл картинкой, его текста нет в колонке text ни на одном языке.
contest_for_teachers/
├── data/
│ ├── train.csv # обучающая выборка, 1402 строки, с метками
│ ├── test.csv # тестовая выборка, 408 строк, БЕЗ меток
│ ├── labels.txt # список из 7 категорий (по одной на строке)
│ └── sample_submission.csv # пример submission от бейзлайна
├── baseline.ipynb # бейзлайн-решение (OCR → TF-IDF → LogisticRegression)Каждая строка в CSV — один пример. Колонки:
Колонка | Тип | Описание |
|---|---|---|
| int | Номер примера; одинаков у английской и русской версии. |
| str | Язык: |
| str | Модальность: |
| str | Текст примера. Пусто, если |
| str | JPEG в base64. Пусто, если |
| str | Метка класса. Отсутствует в |
Ровно одна из колонок
text/image_b64заполнена в каждой строке.
python
import base64, io, pandas as pd
from PIL import Image
df = pd.read_csv("data/train.csv", keep_default_na=False)
row = df[df.modality == "image"].iloc[0]
img = Image.open(io.BytesIO(base64.b64decode(row["image_b64"])))Важно: при чтении CSV используйте
keep_default_na=False, иначе пустые строки в колонкахtext/image_b64превратятся вNaN.
Файл submission.csv должен содержать предсказания для всех строк из
test.csv. Формат:
Колонка | Тип | Описание |
|---|---|---|
| int | Идентификатор строки из |
| str | Предсказанная категория |