Какой алгоритм сортировки слов по смыслу или библиотеку использовать?
Необходимо найти сходства у этих строк по смыслу
Это все равно, что сказать: "Не встречали готовых плагинов к фотошопу, что б тысячи фотографий из сотен жанров сделать красивыми?"
Если все словосочетания у вас подобного типа, то находите "расстояния" между ними и группируйте по диапазонам.
Расстояния можно рассчитывать, например, по количеству одинаковых букв в словосочетании или строгой их последовательности.
Например, расстояние между "у человека нет проблем" и "у человека нет проблемы" = 1, а между "у человека нет проблем"  и "задачи человека решение" уже или 0 или  около "длина строки (которая длиннее или короче) минус количество букв в слове "человека)
Ну или попробуйте построить свои грамматики и факты с блэк-джеком и Томитой
P.S. А вообще это попахивает сео, и если это так, то не маскируйте неприятные запахи, а устраняйте их (с)
сходства у этих строк по смыслу и рассортировать на 3-4 группы словосочетаний
Если именно помыслу, то смотрите наверное в сторону нейросетей. Как вариант возможно хорошо сработает цепь Маркова (но она скорее для больших текстов, чем для словосочетаний )