feat: enforce single-dimension counterfactual in AR distractor rules
This commit is contained in:
@@ -49,9 +49,9 @@ _PREMATURE_EVIDENCE_ANCHORING = SubPattern(
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
distractor_rules=(
|
distractor_rules=(
|
||||||
"将视频前段出现的局部匹配动作设为强干扰项。"
|
"将视频前段真实出现的局部匹配动作设为强干扰项——它真实发生,"
|
||||||
"其余干扰项使用语义相近但未出现的动作,"
|
"仅在【时点】这一单一维度上与正解不同(前段 vs 最终结论段)。"
|
||||||
"确保仅看前段片段的 Agent 有高概率选错。"
|
"其余干扰项亦须是视频中真实发生的动作,严禁缺席事件。"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -81,8 +81,9 @@ _TEMPORAL_REASONING_FAILURE = SubPattern(
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
distractor_rules=(
|
distractor_rules=(
|
||||||
"干扰项使用其他次出现时的关联动作(如第 1 次或第 2 次的准备动作)。"
|
"干扰项必须是视频中真实发生的事件,仅在【事件时序/顺序】这一单一维度上与正解不同——"
|
||||||
"确保各选项在视频中确实出现过,只是对应的时间点不同。"
|
"即同一组真实事件的错误排列或错误的第 N 次定位。"
|
||||||
|
"严禁使用视频中未出现的缺席事件作为干扰项。"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -111,8 +112,9 @@ _SEMANTIC_RIGIDITY = SubPattern(
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
distractor_rules=(
|
distractor_rules=(
|
||||||
"干扰项使用与正确答案表面相似但语义不同的表达。"
|
"干扰项须基于视频真实内容,仅在【表述/语义】这一单一维度上做文章:"
|
||||||
"保留一个与视频原始字幕字面接近但含义偏移的选项作为陷阱。"
|
"保留一个复用视频原始字幕字面、但在题干限定下语义为假的选项作为陷阱,"
|
||||||
|
"其余选项描述真实动作的不同同义表述。严禁凭空编造缺席动作。"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -141,9 +143,9 @@ _FINE_GRAINED_VISUAL_ACTION = SubPattern(
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
distractor_rules=(
|
distractor_rules=(
|
||||||
"干扰项使用同一大类动作的不同执行方式(同一动词的不同修饰)。"
|
"四个选项须是【同一大类动作】的不同执行方式,全部为视频中真实可见的做法,"
|
||||||
"确保所有选项描述的都是合理的执行方式,仅细节不同。"
|
"仅在【执行方式】这一单一维度上不同(如顺/逆时针、扳手/螺丝刀)。"
|
||||||
"避免使用明显不相关的动作作为干扰。"
|
"严禁使用明显不相关或视频中未出现的动作作为干扰项。"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -177,7 +179,9 @@ _CROSS_SEGMENT_ENTITY_TRACKING = SubPattern(
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
distractor_rules=(
|
distractor_rules=(
|
||||||
"干扰项遗漏某些片段的动作或混入其他实体的动作。构造一个只包含部分片段信息的选项作为强干扰。"
|
"干扰项须是视频中【另一真实实体】在相应片段真实做过的动作,"
|
||||||
|
"仅在【动作主体】这一单一维度上与正解不同;或构造只覆盖部分片段的真实子集。"
|
||||||
|
"严禁编造任何实体未做过的缺席动作。"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -206,8 +210,9 @@ _EVIDENCE_GAP_CONFABULATION = SubPattern(
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
distractor_rules=(
|
distractor_rules=(
|
||||||
"干扰项使用看似合理但缺乏视频证据支持的因果推断。"
|
"正解仅陈述视频中可观测的事实或诚实承认证据不足;"
|
||||||
"至少一个干扰项应构造完整的虚假因果链以诱导 Agent 选择。"
|
"干扰项在【因果完整性】这一单一维度上越界——补上一段视频未展示的因果链,"
|
||||||
|
"但其前提元素仍取自视频真实内容(诱导 Agent 顺势编造),而非完全凭空的缺席事件。"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
"""AR 6 个 SubPattern 的 distractor_rules 含单维反事实约束关键词。"""
|
||||||
|
|
||||||
|
from app.question_gen.strategy_action_recognition import AR_SUB_PATTERNS
|
||||||
|
|
||||||
|
_REQUIRED = ["真实", "单一维度"] # 每个 distractor_rules 都需强调 grounded + 单维
|
||||||
|
|
||||||
|
|
||||||
|
def test_all_sub_patterns_enforce_single_dimension_counterfactual():
|
||||||
|
for sp in AR_SUB_PATTERNS:
|
||||||
|
rules = sp.distractor_rules
|
||||||
|
assert "真实" in rules, sp.name # 干扰项须真实发生
|
||||||
|
assert ("单一维度" in rules or "只在" in rules or "仅在" in rules), sp.name
|
||||||
|
|
||||||
|
|
||||||
|
def test_sub_pattern_count_unchanged():
|
||||||
|
assert len(AR_SUB_PATTERNS) == 6
|
||||||
Reference in New Issue
Block a user