两名标注员对两千条意图样本各标一遍,脚本算出的 Cohen kappa 只有 0.31,但逐条对比重合率有百分之八十六,怀疑是标签顺序不一致导致混淆矩阵错位,标签集合里还有两个近义类别。
把日志和配置对完,能解释这个现象的基本就这几处。两人导出的标签顺序不同,混淆矩阵按位置对齐错了;近义标签的边界两人理解不一致;标签表里存在别名,同一类别出现两种写法;空标注被当成一个独立类别参与计算。
上来先按样本 id 对齐两人的标签再算一次
python -c "import pandas as pd;a=pd.read_csv('rater_a.csv').sort_values('item_id');b=pd.read_csv('rater_b.csv').sort_values('item_id');print((a.label==b.label).mean())"
然后打印混淆矩阵看错位集中在哪几类
python -c "import pandas as pd;print(pd.crosstab(pd.read_csv('rater_a.csv').label,pd.read_csv('rater_b.csv').label))"
接着合并近义类别后重算一致性
python -c "from sklearn.metrics import cohen_kappa_score;a=[1,2,3,3];b=[1,2,2,3];print(cohen_kappa_score(a,b))"
等前面都确认过,再按类别抽样复核分歧样本
python sample_disagree.py --n 50 --out review.csv
恢复的判定其实很直接。对齐标签顺序并合并近义类别后 kappa 升到 0.78,混淆矩阵对角线占比明显,剩余分歧集中在两类边界样本。
补一句。kappa 低不一定是标注质量差,先看两边的标签顺序和类别定义有没有对齐,再看真实分歧。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
