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

Sentence Transformers中出现Key Error:111该如何解决?

Sentence Transformers编码遇Key Error:111的排查方案

我正在开展基于DataFrame的语义文本提取商品匹配项目,此前多次使用Sentence Transformers进行文本编码,但目前遇到Key Error:111问题,尝试多种方法仍无法解决。相关代码如下:

a = model.encode(H['Text_HE'], convert_to_tensor=True)
b = model.encode(DN['Text_DNE'], convert_to_tensor=True)
c = model.encode(TH['Text_TE'], convert_to_tensor=True)
d = model.encode(TH['Text_TE'], convert_to_tensor=True)

Key Error:111本质是tokenizer编码时找不到对应ID的词汇,结合你用DataFrame列作为输入的场景,给你几个可行的排查和解决步骤:

  • 检查DataFrame文本列有效性
    确认H['Text_HE']、DN['Text_DNE']、TH['Text_TE']这些列里没有异常数据:空值、非文本类型(比如数字、None)、乱码字符。可以用df['列名'].isna().sum()统计空值数量,或者抽几行内容手动检查。
  • 确保tokenizer与模型配套
    有时候加载模型时tokenizer没正确匹配,导致词汇表不对应。可以打印tokenizer词汇表大小验证:
    from sentence_transformers import SentenceTransformer
    model = SentenceTransformer('你的模型名称')
    print("Tokenizer词汇表大小:", len(model.tokenizer.vocab))
    
    如果发现异常,重新加载模型,或者手动指定对应tokenizer。
  • 预处理文本列
    对文本列做清洗,过滤或替换异常内容:
    # 填充空值为空白字符串
    H['Text_HE'] = H['Text_HE'].fillna('')
    # 强制转换为字符串类型
    H['Text_HE'] = H['Text_HE'].astype(str)
    
  • 单条文本测试定位问题
    先拿DataFrame里的单条文本做编码测试,看是单条异常文本导致,还是批量处理的问题:
    test_text = H['Text_HE'].iloc[0]
    print(model.encode(test_text, convert_to_tensor=True))
    
    如果单条没问题,再逐步扩大测试范围,找到出错的那条文本单独处理。
  • 调整Sentence Transformers版本
    版本兼容性也可能引发这类错误,试试升级到最新稳定版或者回退到常用版本:
    pip install --upgrade sentence-transformers
    # 或者指定稳定版本
    pip install sentence-transformers==2.2.2
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:21:07