例如,我有一组位置名称:
{ "athens", "munich", "athenes", "αθηνα", "munchen", "μοναχο" }
我想以每个子集包含相同位置的方式将此集合分为N个子组,例如,以先前的数据集为输入,我们应将其分为2个子组:
{ "athens", "athenes", "αθηνα" }
和
{ "munich", "munchen", "μοναχο" }
子组中的每个位置名称可能在以下方面有所不同:
我们可以假设每个单词都是小写并且删除了重音符号,因此区分大小写和重音符号不是问题。
从开发人员的角度来看,我认为我需要实现一种方法
double CompareNames(string name1, string name2);
,它需要输入2个字符串进行比较并返回它们相似度的度量(其中相似度是根据表示相同位置来衡量的)。如果相似度高于预定义的阈值,则name1和name2属于同一组。
我在以下领域进行了研究:语音匹配,语言匹配,文本相似性(例如levenshtein),但我找不到 一个紧凑的库(最好是.NET),可从整体上解决这些问题。
任何在这类问题上有经验的人都可以指导我,提出适当的方法甚至建议我使用任何工具吗?