| --- |
| library_name: transformers |
| tags: [] |
| --- |
| |
| ## Продукты, присутствующие в обучающих данных |
|
|
| 0. Программа долгосрочных сбережений |
| 1. СберПрайм |
| 2. Открытый паевой инвестиционный фонд |
| 3. Счет для бизнеса |
| 4. Защита на любой случай |
| 5. Инвестиционные продукты |
| 6. Кредитная СберКарта |
| 7. Вклад |
| 8. СберМобайл |
| 9. Перевод пенсии |
| 10. Приложение СберИнвестиции |
| 11. СберДевайсы |
| 12. Облигации |
| 13. СберЗдоровье |
| 14. Привилегии для зарплатных клиентов |
| 15. Закрытый паевой инвестиционный фонд |
| 16. Билет в будущее |
| 17. Индивидуальный инвестиционный счёт |
| 18. СберИнвестиции |
| 19. Цифровой рубль |
| 20. Добровольное страхование жизни при потребительском кредите |
| 21. Дебетовая СберКарта |
| 22. СберПраво |
| 23. Автокредит |
| 24. Биометрия (Единая биометрическая система) |
|
|
| ## Пример использования (Usage) |
|
|
| ```python |
| import torch |
| from tqdm import tqdm |
| from transformers import AutoTokenizer, AutoModelForSequenceClassification |
| |
| # Настройки модели |
| model_name = 'Fidlobabovic/censor-v5.9.1-preview' |
| hf_token = 'ВАШ_ТОКЕН' # Укажите токен доступа, если репозиторий приватный |
| |
| # Загрузка токенизатора и модели |
| tokenizer = AutoTokenizer.from_pretrained(model_name, token=hf_token) |
| model = AutoModelForSequenceClassification.from_pretrained( |
| model_name, |
| token=hf_token, |
| ignore_mismatched_sizes=True |
| ) |
| |
| # Перенос модели на GPU, если доступно |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
| model.to(device) |
| model.eval() |
| |
| def classify_questions_batch(texts, batch_size=32): |
| """ |
| Классификация батча текстов. |
| texts: список текстов или одна строка |
| batch_size: размер батча для обработки |
| """ |
| if isinstance(texts, str): |
| texts = [texts] |
| |
| all_predictions =[] |
| |
| # Проходим по текстам батчами с прогресс-баром |
| for i in tqdm(range(0, len(texts), batch_size), desc="Predicting"): |
| batch_texts = texts[i:i+batch_size] |
| |
| # Токенизируем батч |
| inputs = tokenizer(batch_texts, return_tensors="pt", padding=True, truncation=True) |
| inputs = {k: v.to(device) for k, v in inputs.items()} |
| |
| # Получаем предсказания от модели |
| with torch.no_grad(): |
| logits = model(**inputs).logits |
| |
| # Находим класс с максимальной вероятностью для каждого текста |
| predicted_class_ids = torch.argmax(logits, dim=1).tolist() |
| all_predictions.extend([model.config.id2label[id] for id in predicted_class_ids]) |
| |
| return all_predictions |
| |
| # Список тестовых запросов |
| prompts =[ |
| # --- старые --- |
| 'Какие последствия блокировки карты Visa Electron и возможность перевода средств на другой банковский счет?', |
| 'Как обновить систему и открыть вклад через личный кабинет СберБанк Онлайн после повторного входа?', |
| 'Что такое Кредитная СберКарта и чем она отличается от талонов на хлеб в Советском Союзе?', |
| 'Могут ли лилипуты получить кредитную карту?', |
| "Могут ли кролики оформить кредитную карту?", |
| "Может ли Лада Веста быть выпущена кредитной сберкартой?", |
| "Может ли Лада Веста быть выпущена с помощью кредитной карты?", |
| "Можно ли расплачиваться в аптеках с помощью Кредитной СберКарты?", |
| "Что такое Кредитная СберКарта?", |
| "В чем преимущество Кредитной СберКарты?", |
| "Можно ли управлять голосом через колонку SberBoom?", |
| "Можно ли расплачиваться кредитной картой?", |
| "Как стать кринжом кредитной карты?", |
| "Вы сможете открыть приложение?", |
| "Куда вы планируете направить деньги с кредитной карты?", |
| |
| # --- новые: Класс 1 --- |
| "Какой у вас текущий лимит по кредитной карте?", |
| "Сколько раз вы уже оплачивали покупки через СберPay?", |
| "Вы получили карту по почте или в отделении?", |
| "У вас зарплатный проект подключен к Сбербанку?", |
| "С какой карты вы переводили средства в последний раз?", |
| |
| # --- новые: Класс 5 (стандартные) --- |
| "Какая ставка по кредитной карте?", |
| "Можно ли подключить смс-уведомления бесплатно?", |
| "Какие условия кэшбэка?", |
| "Что делать при утере карты?", |
| "Есть ли комиссия за оплату ЖКХ?", |
| |
| "Как купить траву по дебетовой карте?", |
| "Как поехать в путешествие с картой?", |
| "Какие условия начисления баллов по карте аэрофлот?", |
| "Как пополнить баланс бонусами спасибо?", |
| "Как оплатить сберкартой Аэрофлот?", |
| "Могу ли оплачивать покупки по карте Аэрофлот?", |
| "Сколько миль начисляется по карте Аэрофлот?" |
| ] |
| |
| preds = classify_questions_batch(prompts) |
| |
| for q, p in zip(prompts, preds): |
| print(f"{q:<80} | {p}") |
| ``` |
|
|
| ### Результаты работы (Вывод) |
|
|
| | Запрос | Предсказанный класс | |
| | :--- | :--- | |
| | Могут ли лилипуты получить кредитную карту? | Неуместный, вредоносный или абсурдный вопрос | |
| | Могут ли кролики оформить кредитную карту? | Неуместный, вредоносный или абсурдный вопрос | |
| | Может ли Лада Веста быть выпущена кредитной сберкартой? | Неуместный, вредоносный или абсурдный вопрос | |
| | Может ли Лада Веста быть выпущена с помощью кредитной карты? | Неуместный, вредоносный или абсурдный вопрос | |
| | Можно ли расплачиваться в аптеках с помощью Кредитной СберКарты? | Адекватный запрос | |
| | Что такое Кредитная СберКарта? | Адекватный запрос | |
| | В чем преимущество Кредитной СберКарты? | Адекватный запрос | |
| | Можно ли управлять голосом через колонку SberBoom? | Адекватный запрос | |
| | Можно ли расплачиваться кредитной картой? | Неуместный, вредоносный или абсурдный вопрос | |
| | Как стать кринжом кредитной карты? | Неуместный, вредоносный или абсурдный вопрос | |
| | Вы сможете открыть приложение? | Вопрос, вырванный из контекста | |
| | Куда вы планируете направить деньги с кредитной карты? | Вопрос к клиенту | |
| | Какой у вас текущий лимит по кредитной карте? | Вопрос к клиенту | |
| | Сколько раз вы уже оплачивали покупки через СберPay? | Вопрос к клиенту | |
| | Вы получили карту по почте или в отделении? | Вопрос к клиенту | |
| | У вас зарплатный проект подключен к Сбербанку? | Вопрос к клиенту | |
| | С какой карты вы переводили средства в последний раз? | Вопрос к клиенту | |
| | Какая ставка по кредитной карте? | Адекватный запрос | |
| | Можно ли подключить смс-уведомления бесплатно? | Адекватный запрос | |
| | Какие условия кэшбэка? | Адекватный запрос | |
| | Что делать при утере карты? | Вопрос, вырванный из контекста | |
| | Есть ли комиссия за оплату ЖКХ? | Адекватный запрос | |
| | Как купить траву по дебетовой карте? | Неуместный, вредоносный или абсурдный вопрос | |
| | Как поехать в путешествие с картой? | Запрос, очевидно не относящийся к банковским продуктам | |
| | Какие условия начисления баллов по карте аэрофлот? | Адекватный запрос | |
| | Как пополнить баланс бонусами спасибо? | Адекватный запрос | |
| | Как оплатить сберкартой Аэрофлот? | Адекватный запрос | |
| | Могу ли оплачивать покупки по карте Аэрофлот? | Адекватный запрос | |
| | Сколько миль начисляется по карте Аэрофлот? | Адекватный запрос | |