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']]