Multi label russian texts classification

Can anyone point me to tutorials or notebooks or colabs or medium articles that show how to approach multi label classification of russian texts using DeepPavlov? I saw relevant tutorials here and here, but as far as I understood they cover only one lable per text classification. Only last one briefly touches the topic in last para, but only briefly…

1 Like

Hello!

The reason it touches multi-label classification briefly is that the difference only in one parameter.
If you use BERT-based classifiers, add parameter "multi_label": true to config file in dictionary with bert_classifier.
If you use Keras classifier, add parameter "last_layer_activation": "sigmoid" to config file in dictionary with keras_classification_model.

@dilyararimovna , спасибо!

(Просто, чтобы сохранить тут, в этой теме.) Насколько понимаю, вот похожий вопрос был: https://github.com/deepmipt/DeepPavlov/issues/890

Здравствуйте, подскажите пожалуйста как при текстовой multi-label классификации правильно обучать классам вне обучающей выборки (ненужным классам) - т.е. обучаем классификатор определять, например, новости про кино/музыка/эстрада/знаменитости и получаем macro f1 в районе 95%, а на реальных RSS новости про футбол/экономику массово размечаются как эстрада/кино вместо пустого класса [0 0 0 …], что явно не соответствует f1 в 95%. Причем таких неинтересных классов может же быть сколько угодно (невозможно составить полную обучающую выборку того, что не нужно) да еще и желательно чтобы они учитывались при оценке качества метрикой f1? Есть ли особенность обучения multi-label классификатора c большим количеством классов или ограничения на количество multi-label классов (где-то после добавления 60 классов bert начинает медленно снижать loss и потом застывает не показывая желаемого качества, причем уменьшение learning_rate и(или) batch_size, как и добавление эпох или даже Dense перед последним(классифицирующим) слоем не помогают, причем на меньшем количестве классов все работает, но если делать три классификатора по 20 классов, то из-за описанной вначале проблемы “неизвестных/ненужных” получается много false-positive в классификаторах которые должны были бы выдавать пустой класс [])?