CoolFace
Modelpublic

KKvision/PSTU_AI_sem-1_bert-language-classifier

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
README.md59 linesDownload Raw Back to root
1# Классификатор языка документа2 3Лабораторная работа — задание 8. Реализован классификатор языка текста на основе BERT.4 5## Модель6 7`bert-base-multilingual-cased` — предобученная модель от Google, знает 104 языка. Поверх неё добавлен классификационный слой и выполнен файнтюнинг на датасете языковой идентификации.8 9## Датасет10 11`papluca/language-identification` с HuggingFace Hub. 90 000 текстовых фрагментов на 20 языках:12Arabic, Bulgarian, German, Greek, English, Spanish, French, Hindi, Italian, Japanese, Dutch, Polish, Portuguese, Russian, Swahili, Thai, Turkish, Urdu, Vietnamese, Chinese.13 14Разбивка: 70 000 train / 10 000 validation / 10 000 test.15 16## Результаты обучения17 183 эпохи, AdamW, lr=2e-5, batch_size=16, RTX 3060 Ti.19 20| Эпоха | Train Loss | Train Acc | Val Acc |21|-------|-----------|-----------|---------|22| 1     | 0.2351    | 95.53%    | 99.25%  |23| 2     | 0.0106    | 99.80%    | 99.29%  |24| 3     | 0.0049    | 99.90%    | **99.36%** |25 26Точность на тестовом множестве: **99.36%**.27 28## Запуск29 30Установка зависимостей:31```32pip install -r requirements.txt33```34 35Обучение (опционально, веса уже сохранены в `saved_model/`):36```37python train.py38```39 40Инференс — положить `.txt` файлы в папку `text/` и запустить:41```42python infer.py43```44 45Вывод показывает распределение языков по предложениям файла, например:46```47document.txt (12 sentences): en: 75%, ru: 25%48```49 50Для ввода текста вручную раскомментировать `run_from_input` в `infer.py`.51 52## Особенности поведения модели53 54**Смешанные тексты (code-switching).** Если в тексте перемешано несколько языков, модель классифицирует каждое предложение отдельно и выводит статистику. При подаче всего текста целиком побеждает язык с большим количеством токенов. Например, русский конспект с английскими терминами будет определён как английский, если цитат из источника больше чем авторского текста.55 56**Отсутствие класса "неизвестно".** Модель всегда возвращает один из 20 языков — даже для бессмысленного набора символов. На практике такие входные данные часто классифицируются как суахили или другой язык с небольшой долей в датасете, поскольку у модели нет возможности отказаться от ответа.57 58**Границы применимости.** Модель хорошо работает на связных текстах достаточной длины. На коротких фрагментах (одно-два слова) точность ниже, поскольку меньше контекста для уверенной классификации.59