Возможно, для различения антонимов нужна модель, обученная на перевод, перефразирование, или другой сигнал, в явном виде подчёркивающий семантические различия. Если нужны эмбеддинги предложений, я рекомендую USE или Laser (обе мультиязычные и есть русский)
Да, мы пробовали Bert, Laser, Muse - почти одинаковые результаты.
Да, но это SBERT, которые по идее должны такое ловить
Теоретически, в идеале - да. По факту SBERT - это обычный BERT, немножко пофайнтюненный на задачу NLI. Я подозреваю, что датасет SNLI, который там использовался, недостаточно большой, чтобы нормально выучить различия даже в базовых антонимах типа "хорошо-плохо".
Можно попробовать обучить с нуля на корпусе относящемся только к одному домену и проверить там.
Не, совсем с нуля - это жёстко. Как бы учил его я: - Взял бы русский BERT или даже SBERT за основу - Взял бы какой-нибудь большой датасет с парами парафраз (если для нужного домена их нет, нагенерировал бы их переводом туда-сюда) - Обучался бы на том же триплет лоссе, но отрицательные примеры бы брал не рандомно, а адверсариально (ближайшие по всё той же косинусной близости), иначе задача слишком лёгкая