KKvision/PSTU_AI_sem-1_bert-language-classifier
Классификатор языка документа
Лабораторная работа — задание 8. Реализован классификатор языка текста на основе BERT.
Модель
bert-base-multilingual-cased — предобученная модель от Google, знает 104 языка. Поверх неё добавлен классификационный слой и выполнен файнтюнинг на датасете языковой идентификации.
Датасет
papluca/language-identification с HuggingFace Hub. 90 000 текстовых фрагментов на 20 языках: Arabic, Bulgarian, German, Greek, English, Spanish, French, Hindi, Italian, Japanese, Dutch, Polish, Portuguese, Russian, Swahili, Thai, Turkish, Urdu, Vietnamese, Chinese.
Разбивка: 70 000 train / 10 000 validation / 10 000 test.
Результаты обучения
3 эпохи, AdamW, lr=2e-5, batch_size=16, RTX 3060 Ti.
Точность на тестовом множестве: 99.36%.
Запуск
Установка зависимостей:
pip install -r requirements.txtОбучение (опционально, веса уже сохранены в saved_model/):
python train.pyИнференс — положить .txt файлы в папку text/ и запустить:
python infer.pyВывод показывает распределение языков по предложениям файла, например:
document.txt (12 sentences): en: 75%, ru: 25%Для ввода текста вручную раскомментировать run_from_input в infer.py.
Особенности поведения модели
Смешанные тексты (code-switching). Если в тексте перемешано несколько языков, модель классифицирует каждое предложение отдельно и выводит статистику. При подаче всего текста целиком побеждает язык с большим количеством токенов. Например, русский конспект с английскими терминами будет определён как английский, если цитат из источника больше чем авторского текста.
Отсутствие класса "неизвестно". Модель всегда возвращает один из 20 языков — даже для бессмысленного набора символов. На практике такие входные данные часто классифицируются как суахили или другой язык с небольшой долей в датасете, поскольку у модели нет возможности отказаться от ответа.
Границы применимости. Модель хорошо работает на связных текстах достаточной длины. На коротких фрагментах (одно-два слова) точность ниже, поскольку меньше контекста для уверенной классификации.
