P粉2384338622023-08-16 13:13:46
在每個組中選擇一個子音作為該組的「代表」。然後,建立一個將單字分組在一起的映射,當它們的輔音被代表輔音替換時,它們變得相同。
重要提示:此方法僅在子音組形成等價類別時有效。特別是,輔音的相似性必須是傳遞的。如果'bp'
相似,'bv'
相似,但'pv'
不相似,則此方法無效。
以下是用Python範例的程式碼; 我讓你寫JavaScript程式碼。
f
是一個將每個子音對應到其代表子音的對映;d
是一個將每個代表單字對應到具有此代表的單字清單的對應。 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']}
最後,我們可以看到哪些單字是相似的:
print([g for g in d.values() if len(g) > 1]) # [['dolbar', 'dolpar'], ['jumaq', 'xumaq'], ['txindan', 'txintan']]