Унифицирование подойдет как препроцессинг текста. Т.е, есть некоторое множество < K, V >, где K - числовое описание класса синонима ( например, различные синонимы в один класс ), V - тензор синонимов, где по 0-й оси отложены вектора со словами, содержащие кодированные ( Unicode, так понимаю в данном случае ) слова. Стоит обратная задача нахождения по V соответствующего K, почти как словарь, но наоборот. Предложение трансформируется в последовательность K_i, после чего эта унифицированная, как вы правильно сказали, анализируется. Перед анализом унифицированный вектор надо отобразить в пространство фиксированной размерностью, чтобы все предложения были как бы одинаковой длины. Можно просто дописать нули, например, чтобы вектор стал с 5 компонентами ( максимальная длина предложения )
Тут два варианта. 1-й более эффективный и сложный, 2-й более простой
1) LSTM-сети. Почему LSTM? Потому что данный вид RNN сетей наиболее подходит для анализа последовательностей.
По выходу определяете смысловой класс. Т.е, имеем RNN с 5 входами, и выходами, равными количеству смысловых классов, дающее k-мерный вектор распределения вероятностей по классам. argmax(output) будет наш класс. Типичная задача мультиклассовой классификации, но при помощи RNN сетей. Если с рнн не разберетесь, можно обычную MLP-сеть, но выход будет хреновеньким, т.к это последовательность завязанная на предыдущих состояниях элемента. У нас не бывает предложений вроде "привет нет да пока эх машина".
Нужно предобучение на огромной базе размеченной вручную. Т.е, такой вектор - такой класс.
2) Можно пойти по простому пути, без нейронных сетей использовать норму разницы между двумя векторами. Требуемым, и введенным, чем меньше норма - тем более близкое по смыслу предложение. Ведь числовая последовательность предложения является вектором в n-мерном пространстве. В нашем случае после нормализации в 5-мерном пространстве. А норма - это обобщение расстояния на большие размерности, т.е при разницы векторов предложений мы получаем третий вектор, чья длина - расстояние между векторами. Можно использовать различные метрики. Какая больше нравится. Я бы предпочел метрику минковского c p = 2.
Предобучение не требуется, никаких сложностей тоже. Просто школьная арифметика. Но и предложения, например:
"Сегодня я пошел в школу снова" и "Завтра я поеду в командировку опять" могут показаться одинаковыми по смыслу. О чем и говорил Максим Чернятевич, имея ввиду, что с базой синонимов можно сделать только самый простой анализ, т.к после нормализации по синонимам в один вектор, скорее будут полностью равны.