Выборка похожих результатов / MySQL
Вы сначала определитесь как вы будете выделять кластера. Если в ваш список добавить «Людвиг Аристархович Пупкин» — куда его отнесёте? К Пупкиным, или к Людвигам, или к обоим одновременно?
После того как решите как выделять кластера, можете воспользоваться расстоянием Левенштейна для определения принадлежности к кластеру.
I. Если вы хотите посчитать количество одинаковых слов, то есть:
Пупкин — встречается 3 раза
Вася — встречается 2 раза и т.д, то это можно сделать либо с помощью хранимой процедуры, либо другим методом перебора (в php), либо (лучше) нормализовать данные, чтобы в одной строке было только одно слово, тогда можно будет использовать оператор GROUP BY.

II. Если выхотите посчитать количество одинаковых фамилий (что я думаю вы и хотите), то базу данных опять же лучше нормальзовать по такому принципу:

1. Самое длинное слово в строке брать за фамилию, если оно не оканчивается на «ич», «еч» и другие характериные для отчества окончания, в противном случае брать следующее наиболее длинное слово в строке.
2. Самое короткое слово в строке брать за имя.

Эти данные записать в таблицу с колонками Фамилия и Имя (или какой-то другой подходящий формат) при этом можно сохранить ключи на исходные заиписи. После чего по полю Фамилия можно использовать GROUP BY.

Как-то так. Ваша проблема в ненормализованных данных.