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

对多语言推特数据集仅处理德语内容时出现KeyError: 'lang'问题

解决KeyError: 'lang'问题

错误原因

KeyError: 'lang' 说明你的DataFrame test 中不存在名为lang的列,或者列名拼写有偏差(比如大小写、额外空格、别名如language/lang_code等)。


分步解决方案

1. 先确认DataFrame的列名

运行以下代码查看所有列名,找到存储语言标识的正确列名:

print(test.columns.tolist())

如果输出中有类似language、Lang、language_code的列,把代码里的s['lang']替换成对应的列名即可。

2. 如果没有语言标识列,先添加语言检测

如果数据集本身没有标注语言,用langdetect库自动检测:

  • 先安装依赖:
pip install langdetect
  • 添加语言检测代码:
from langdetect import detect

def detect_lang(text):
    try:
        return detect(text)  # 返回语言代码(如德语返回'de')
    except:
        return None  # 处理无法检测的文本

# 生成lang列
test['lang'] = test['text'].apply(detect_lang)

完成后再运行原预处理代码即可。


原代码的额外小问题修正

原preprocess函数存在几处语法/正则错误,修正后的版本:

def preprocess(sentence):
    sentence = str(sentence)
    sentence = sentence.lower()
    sentence = sentence.replace('{html}', '') 
    # 移除HTML标签
    cleanr = re.compile('<.*?>')
    cleantext = re.sub(cleanr, '', sentence)
    # 移除URL(支持http/https)
    rem_url = re.sub(r'https?://\S+', '', cleantext)
    # 移除数字
    rem_num = re.sub('[0-9]+', '', rem_url)
    # 分词(修正正则转义)
    tokenizer = RegexpTokenizer(r'\w+')
    tokens = tokenizer.tokenize(rem_num)  
    # 过滤停用词和短词
    filtered_words = [w for w in tokens if len(w) > 2 and w not in stopwords.words('german')]
    return " ".join(filtered_words)

内容的提问来源于stack exchange,提问作者Daniel AG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:35:39