Есть ли хорошие алгоритмы для смыслового сравнения текстов?
Задача называется Semantic Similiarity. Я с этим направлением не работал вообще, но интуитивно могу предположить LSTM/CNN и разные вариации на тему Siamese/Triplet networks.
Doc2Vec пригоден для большого количества документов (с 5-10 тысяч), хотя многое зависит от их длины. Можно увеличивать размерность векторов, количество интераций, уменьшить окно, но это для малого числа документов слабо помогает. То есть для небольшого количества данных лучше  LSI.