У меня ошибка в строке: category: random.choice(df_train_balanced[df_train_balanced['category'] == category]['text'])  KeyError: 153
Вот мой код целиком:
# Импортирование необходимых библиотек
import random
import re
from typing import Dict, List, Union

from datasets import load_dataset
from fuzzywuzzy import fuzz, process
from sklearn.metrics import classification_report
from tqdm.notebook import tqdm
from transformers import pipeline
import torch
from transformers import AutoTokenizer
from collections import Counter
from imblearn.over_sampling import RandomOverSampler
import pandas as pd

# Ваша функция для подготовки сообщений осталась без изменений

# Токенизация и предобработка
tokenizer = AutoTokenizer.from_pretrained('distilbert-base-multilingual-cased')

def preprocess(text):
    # Приведение к нижнему регистру и очистка
    text = text.lower()
    # Удаление знаков пунктуации и небуквенных символов
    text = re.sub(r'\W+', ' ', text)
    return text

# Загрузка данных
DATASET_NAME = 'Davlan/sib200'
DATASET_LANGUAGE = 'rus_Cyrl'
train_set = load_dataset(DATASET_NAME, DATASET_LANGUAGE, split='train')
validation_set = load_dataset(DATASET_NAME, DATASET_LANGUAGE, split='validation')
test_set = load_dataset(DATASET_NAME, DATASET_LANGUAGE, split='test')

# Предобработка текста
train_set = train_set.map(lambda x: {'text': preprocess(x['text'])})
validation_set = validation_set.map(lambda x: {'text': preprocess(x['text'])})
test_set = test_set.map(lambda x: {'text': preprocess(x['text'])})

# Проверка на количество классов и их баланс
print(Counter(train_set['category']))

# Преобразование в DataFrame для использования с imbalanced-learn
df_train = pd.DataFrame(train_set)
ros = RandomOverSampler(random_state=42)
df_train_balanced, y_balanced = ros.fit_resample(df_train, df_train['category'])
print(Counter(y_balanced))

# Инициализация pipeline для zero-shot классификации
llm_pipeline = pipeline(
    'zero-shot-classification',
    model='distilbert-base-multilingual-cased',
    device=0 if torch.cuda.is_available() else -1
)

# Подготовка примеров для классификации
examples_by_categories = {
    category: random.choice(df_train_balanced[df_train_balanced['category'] == category]['text'])
    for category in df_train_balanced['category'].unique()
}

def prepare_dataset_for_llm(dataset):
    return dataset.map(lambda it: prepare_message_for_llm(it['text'], examples_by_categories))

# Подготовка данных для LLM
validation_set_for_llm = prepare_dataset_for_llm(validation_set)
test_set_for_llm = prepare_dataset_for_llm(test_set)

# Генерация предсказаний для валидационного набора
y_pred = list(map(
    lambda messages: llm_pipeline(
        messages[1]['content'],
        candidate_labels=list_of_categories,
        hypothesis_template="Этот текст связан с категорией {}."
    )['labels'][0],
    tqdm(validation_set_for_llm['message_for_llm'])
))

y_true = validation_set['category']

print(f"Первое предсказание: {y_pred[0]}")
print(classification_report(y_true=y_true, y_pred=y_pred))

# Нормализация предсказаний
y_pred_with_normalization = list(map(
    lambda it: process.extractOne(it, list_of_categories, scorer=fuzz.token_sort_ratio)[0],
    y_pred
))

print(f"Первое нормализованное предсказание: {y_pred_with_normalization[0]}")
print(classification_report(y_true=y_true, y_pred=y_pred_with_normalization))

# Генерация предсказаний для тестового набора
y_pred_test = list(map(
    lambda messages: llm_pipeline(
        messages[1]['content'],
        candidate_labels=list_of_categories,
        hypothesis_template="Этот текст связан с категорией {}."
    )['labels'][0],
    tqdm(test_set_for_llm['message_for_llm'])
))

y_true_test = test_set['category']

# Печать отчета о классификации для тестового набора
print(classification_report(y_true=y_true_test, y_pred=y_pred_test))

# Нормализация предсказаний для тестового набора
y_pred_test_with_normalization = list(map(
    lambda it: process.extractOne(it, list_of_categories, scorer=fuzz.token_sort_ratio)[0],
    y_pred_test
))

print(classification_report(y_true=y_true_test, y_pred=y_pred_test_with_normalization))