You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于独特字母的语言文本分类实验:求简洁的独特字母提取方法

嘿,我来分享几个简洁易懂的实现方案,完全不用复杂的数学公式,都是基于基础的集合操作,很容易上手:

方法一:利用集合差集快速计算

先把所有语言的字母合并成一个全局集合,然后通过集合差集快速定位每个语言的独有字母:

# 假设你的语言-字母字典是这样的
lang_letters = {
    'ru': {'ё'},
    'uk': {'ї', 'ґ'},
    'pl': {'ę', 'ś'},
    'en': set(),
    'de': {'ß'},
    'be': {'ё'}
}

# 第一步:合并所有语言的字母到一个大集合
all_letters = set().union(*lang_letters.values())

# 第二步:计算每个语言的独有字母
unique_letters_per_lang = {}
for lang, letters in lang_letters.items():
    # 其他所有语言的字母 = 全局集合 - 当前语言的字母
    other_lang_letters = all_letters - letters
    # 当前语言独有的字母 = 当前字母集合 - 其他语言的字母集合
    unique_letters_per_lang[lang] = letters - other_lang_letters

print(unique_letters_per_lang)
# 输出结果:
# {'ru': set(), 'uk': {'ї', 'ґ'}, 'pl': {'ę', 'ś'}, 'en': set(), 'de': {'ß'}, 'be': set()}

这个方法的优势是效率较高,集合操作的底层优化能帮你在语言和字母数量较多时节省时间。


方法二:直观遍历检查每个字母

如果你更喜欢可读性更强、逻辑直白的代码,可以逐个检查每个字母是否在其他语言中出现:

lang_letters = {
    'ru': {'ё'},
    'uk': {'ї', 'ґ'},
    'pl': {'ę', 'ś'},
    'en': set(),
    'de': {'ß'},
    'be': {'ё'}
}

unique_letters_per_lang = {}
for lang, letters in lang_letters.items():
    unique = set()
    for letter in letters:
        # 检查该字母是否未出现在任何其他语言的字母集合中
        is_unique = True
        for other_lang, other_letters in lang_letters.items():
            if other_lang != lang and letter in other_letters:
                is_unique = False
                break
        if is_unique:
            unique.add(letter)
    unique_letters_per_lang[lang] = unique

print(unique_letters_per_lang)
# 输出和方法一完全一致

还可以用更紧凑的生成式写法,保持可读性的同时缩短代码:

unique_letters_per_lang = {
    lang: {
        letter for letter in letters
        if not any(letter in other_letters for other_lang, other_letters in lang_letters.items() if other_lang != lang)
    }
    for lang, letters in lang_letters.items()
}

这个方法虽然效率略低于第一种,但胜在逻辑简单,哪怕是刚接触Python的开发者也能一眼看懂。

内容的提问来源于stack exchange,提问作者Moris Huxley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:45:20