Соответствие имени местоположения
У меня есть набор названий мест, например:
{ "athens", "munich", "athenes", "αθηνα", "munchen", "μοναχο" }
Я хотел бы сгруппировать этот набор в N-подгруппы таким образом, чтобы каждое подмножество содержало одно и то же местоположение, например, взяв в качестве входных данных предыдущий набор данных, мы должны получить 2 подгруппы:
{ "athens", "athenes", "αθηνα" }
а также
{ "munich", "munchen", "μοναχο" }
Каждое название местоположения в подгруппе может отличаться следующими способами:
- язык
- небольшие правописания
Мы можем предположить, что каждое слово в нижнем регистре и ударение удаляется, поэтому чувствительность к регистру и чувствительность не являются проблемой.
С точки зрения разработчиков, я думаю, что мне нужно реализовать метод
double CompareNames(string name1, string name2);
это берет входные 2 строки для сравнения и возвращает показатель их сходства (где сходство измеряется в терминах представления одного и того же местоположения). Если сходство выше предварительно определенного порога, то name1 и name2 принадлежат к одной группе.
Я провел исследования в следующих областях: фонетическое сопоставление, лингвистическое сопоставление, сходство текста (например, Левенштейн), но я не смог найти компактную библиотеку (предпочтительно в.NET), которая бы решала подобные проблемы в целом.
Может ли кто-нибудь, имеющий опыт решения подобных проблем, помочь мне, предложить подходящий подход или даже предложить какие-нибудь инструменты?