А датасет неразмеченный?
Если да, то ничего сильно лучше "короля+женщины" получить не удастся, а это всего лишь со-встречаемость слов, а не настоящая семантика.
Хорошие sentence encoder'ы нуждаются в supervised сигнале для обучения. Это может быть задача NLI (как в USE и некоторых версиях sentence BERT), задачи перевода (как в LABSE или Laser), задача перефразирования, и тому подобные задачи, которые в явном виде требуют понимать смысл предложения.
Если такого нет, предлагаю просто BERT на вашем датасете пофайнтюнить (на задачу MLM), и в качестве вектора фразы использовать средний вектор токенов с последнего слоя берта.