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

基于MPNET的三类情感分析:Embedding与质心生成报错及标签疑问

问题分析与解决办法

首先明确:用标签分组计算对应类别的质心是完全正确的思路,你遇到的KeyError不是因为不该用标签,而是代码里的索引匹配或数据类型出了问题,下面说具体原因和修复方案:

  • 最常见的原因:sentence_embeddings_mpnet(PyTorch张量)的索引是位置索引(0、1、2...),但train_df['label'] == label生成的布尔Series用的是train_df的原始索引(比如如果你的df是筛选过的,索引可能不是连续的0开始),两者索引体系不匹配,直接用布尔Series索引张量就会触发KeyError。

    修复代码很简单,把布尔Series转成numpy数组即可:

    for label in [-1, 0, 1]:
        mask = train_df['label'] == label
        # 用.values提取numpy布尔数组,匹配张量的位置索引
        centroid = sentence_embeddings_mpnet[mask.values].mean(dim=0)
    
  • 另一个可能:train_df里的标签数据类型和你遍历的整数[-1,0,1]不匹配。比如df里的标签是字符串类型(比如"-1"、"0"),但你用整数去匹配,会导致mask全为False,后续操作也可能引发异常。这种情况下,先把df的标签转成整数:

    train_df['label'] = train_df['label'].astype(int)
    
  • 最后确认:train_df的行数必须和sentence_embeddings_mpnet的样本数完全一致,保证每个文本对应一个embedding,顺序完全对应,否则筛选出来的embedding会和标签不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:20:59