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

Pandas apply传双参数调用Spacy多语言模型提取人名报错如何解决

报错原因

你调用apply时传参逻辑错误:

  • apply指定axis=1时,lambda里的x是当前行的完整Series对象,字典spacy_lang的key需要是'de'/'eng'这类可哈希的字符串,你直接把x作为key传入spacy_lang[x],自然会触发「不可哈希类型Series」的报错。
  • 另外你自己写的label_lang函数第一个入参本来就要求是语言标识字符串,函数内部已经实现了根据lang取对应模型的逻辑,你不需要在调用时额外套一层spacy_lang取模型。
修复代码

直接修正lambda的传参即可:

df.apply(lambda x: label_lang(x['lang'], x['text']), axis=1)
可选优化

原函数在未识别到人名、或者一句话有多个人名时,返回结果不符合预期,可以调整函数逻辑:

def label_lang(lang, text):
    model = spacy_lang[lang]
    doc = model(text)
    # 提取所有人名,用逗号分隔,未识别到返回空字符串
    persons = [ent.text for ent in doc.ents if ent.label_ == 'PERSON']
    return ','.join(persons) if persons else ''

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:36:07