Можно использовать наивный метод: в базе данных создать таблицу `table`: `word`|`count_words` (primary key `word`). Потом брать все слова по порядку, и добавлять в таблицу. Если такое слово уже есть - увеличивать его количество повторений на 1, примерно так:
INSERT INTO `table` (`word`) VALUES ('$new_word') ON DUPLICATE KEY UPDATE `count_words`=`count_words`+1;
В любом языке не так уж много слов, ну к примеру 50 000, а тескт может быть сколь угодно большим.
А потом сделать выборку, сортированную по количеству повторений.
То-же самое можно сделать без базы данных, при помощи хешей: слово переводить в транслит, и увеличивать счетчик соотв хеша.