Maison > Questions et réponses > le corps du texte
P粉2384338622023-08-16 13:13:46
Choisissez une consonne dans chaque groupe pour être le "représentant" de ce groupe. Ensuite, créez une carte qui regroupe les mots de telle sorte qu'ils deviennent identiques lorsque leurs consonnes sont remplacées par leurs consonnes représentatives.
Remarque importante : Cette méthode ne fonctionne que lorsque les groupes de consonnes forment des classes d'équivalence. En particulier, la similarité des consonnes doit être transitive. Si 'bp'
相似,'bv'
相似,但'pv'
n’est pas similaire, cette méthode n’a aucun effet.
Voici le code de l'exemple en Python ; je vous laisse écrire le code JavaScript.
f
est une cartographie qui mappe chaque consonne à sa consonne représentative d
est une carte qui mappe chaque mot représenté à une liste de mots avec cette représentation. bigwordlist = '''dolbar dolpar jumaq txindan txintan txintoq txiqbal txiqfun txiqwek txiqyal txinton txonmiq txoqwul txoqxik xumaq'''.splitlines() consonant_groups = '''zs xj pb td kg'''.splitlines() f = {} for g in consonant_groups: for c in g: f[c] = g[0] print(f) # {'z': 'z', 's': 'z', 'x': 'x', 'j': 'x', 'p': 'p', 'b': 'p', 't': 't', 'd': 't', 'k': 'k', 'g': 'k'} d = {} for word in bigwordlist: key = ''.join(f.get(c, c) for c in word) d.setdefault(key, []).append(word) print(d) # {'tolpar': ['dolbar', 'dolpar'], 'xumaq': ['jumaq', 'xumaq'], 'txintan': ['txindan', 'txintan'], 'txintoq': ['txintoq'], 'txiqpal': ['txiqbal'], 'txiqfun': ['txiqfun'], 'txiqwek': ['txiqwek'], 'txiqyal': ['txiqyal'], 'txinton': ['txinton'], 'txonmiq': ['txonmiq'], 'txoqwul': ['txoqwul'], 'txoqxik': ['txoqxik']}
Enfin, nous pouvons voir quels mots sont similaires :
print([g for g in d.values() if len(g) > 1]) # [['dolbar', 'dolpar'], ['jumaq', 'xumaq'], ['txindan', 'txintan']]