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…
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 в классификаторах которые должны были бы выдавать пустой класс [])?