Не изобретайте велосипед.
Возьмите какую-нибудь реализацию стемминга на php и сделайте вот такую матрицу:
$words = [
"слово"=>["кол-во вхождений", "корень", "длинна слова"],
...
];
где "корень" - это результат работы стемминг-функции над словом. Такие слова как Бык и Быки будут преобразованы к слову Бык.
Далее эту матрицу сортируем во всем столбцам в том порядке в котором они указаны - по вхождениям, по корню, по длине. Таким образом, одинаково встречающиеся слова отсортированные по корню будут в алфавитном порядке, но когда корни одинаковые - будет играть роль их длинна.