Для решения этой задачи был использован алгоритм с репозитория https://github.com/amazon-research/sccl
Модификация алгоритма: добавил слои dropout для предотвращения переобучения,добавил gradient_clipping для ограничения норм градиентов.
Обучение производилось на train,качество проверялось на val,итоговый score посчитан на test.
В этом файле есть загрузка train,val,test
Создание классов DataLoader
Запуск алгоритма
Аугментация,которая исползовалась в решении
В моем репозитории алгоритм с гита статьи был для удобства помещен в 1 файл-my_model_cluster
Я сравнил качество на разных типах аугментаций:
Аугментация данная в условии
Аугментация-замена синонимов
Аугментация-замена синонимов+Random Insertion+Random Deletion
Эти аугментации я делал как в явном виде так и во время обучения.
Лучший score дала замена синонимов+Random Insertion+Random Deletion(явная)
Провел довольно много экспериментов с гиперпараметрами,лучшие находятся в файле estimator(class args)
NMI-0.86+-0.1 ARI-0.7+-0.2