CoolFace
Modelpublic

KKvision/PSTU_AI_sem-1_bert-language-classifier

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
Model Card

Классификатор языка документа

Лабораторная работа — задание 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.

ЭпохаTrain LossTrain AccVal Acc
10.235195.53%99.25%
20.010699.80%99.29%
30.004999.90%99.36%

Точность на тестовом множестве: 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 языков — даже для бессмысленного набора символов. На практике такие входные данные часто классифицируются как суахили или другой язык с небольшой долей в датасете, поскольку у модели нет возможности отказаться от ответа.

Границы применимости. Модель хорошо работает на связных текстах достаточной длины. На коротких фрагментах (одно-два слова) точность ниже, поскольку меньше контекста для уверенной классификации.