Сравнение выполнялось по f1 weighted метрике на
датасете с ~5100 сэмплов через 8-фолдовую кросс-валидацию. Чуть больше 70 интентов с большим дисбалансом.
Финальные результаты:
LinearSVC ~0.77
BERT ~0.815
ELMo ~0.817
Базовая модель использует символьные шинглы длиной от 2 до 6 символов и
LinearSVC для классификации. Выбор классификатора и параметры векторизации делались через grid search.
Исходный код доступен тут.
Классификатор на базе BERT использует
многоязычную модель из проекта Deep Pavlov. Векторы от BERT поступают в однослойную нейросетку. Параметры и архитектура сетки подбиралась через grid search. Исходник тренера
доступен тут. Я не выкладываю его в реп, так как получающаяся модель еще никак не используется в самом чатботе.
Классификатор на базе ELMO аналогичен BERT, только используется
ELMOEmbedder из проекта Deep Pavlov.
Исходник тренера доступен тут.
При этом модель на LinearSVC намного менее требовательна к ресурсам при обучении и инференсе, поэтому я пока не хочу подцеплять в чатботе более качественную ELMo.