Подобные вещи нетривиальны, и вы должны привести больше примеров.
Как упоминал Даниэль Левенштейн, расстояние - это путь, но также для вашего примера вы можете предварительно обработать строки, если вы знаете, что можете безопасно отбрасывать определенные слова - например, из вашего примера видно, что слово поколения. можно бросить.
Расстояние Левенштейна будет рассматривать любое слово из четырех букв вместо gen. так же, как ген. что может быть не то, что вы хотите.
Также, если ваш набор данных будет поступать из разных источников данных, вы можете рассмотреть возможность создания словаря синонимов и исследовать существующие стандартные таксономии для вашего домена. Возможно такие как это ?