👋
你们好!感谢团队为 Text-to-SQL 领域提供了如此优秀的数据集。
我在分析评测数据时,发现 BIRD-DEV 数据集中 question_id: 207 的标准答案存在表连接的逻辑错误,这会导致它返回错误的数据。
🐛
- Database:
toxicology
- Question ID: 207
- Question: "What elements are in a double type bond?"
- Evidence: "double type bond refers to bond_type = '=';"
❌ 当前的 Ground Truth SQL
SELECT DISTINCT T1.element
FROM atom AS T1
INNER JOIN bond AS T2 ON T1.molecule_id = T2.molecule_id
INNER JOIN connected AS T3 ON T1.atom_id = T3.atom_id
WHERE T2.bond_type = '='
🔍 错误分析
当前的 SQL 使用了 molecule_id 将 atom(原子表)和 bond(化学键表)进行了直接关联 (T1.molecule_id = T2.molecule_id)。
- 逻辑漏洞:这种连接方式的真实语义是:“找出包含双键的分子,并返回该分子内的所有原子”。
- 化学常识冲突:假设数据库中存在一个丙烯(C3H6)分子,它包含碳碳双键(C=C),但也包含单键连接的氢原子(H)。按照当前 GT SQL 的逻辑,由于它们同属一个
molecule_id,未参与双键的氢元素(H)也会被错误地作为“处于双键中的元素”返回。而题目实际询问的是精确构成了双键的元素。
connected 表在当前 SQL 中仅仅验证了原子“存在连接”,并没有发挥其作为“图关系边”映射具体化学键的作用。
✅ 修复建议
正确的逻辑应当通过关系表 connected 作为桥梁,实现 原子 (atom) -> 连接关系 (connected) -> 具体的键 (bond) 的映射。
建议将 Ground Truth 替换为以下 SQL:
SELECT DISTINCT T1.element
FROM atom AS T1
JOIN connected AS T2 ON T1.atom_id = T2.atom_id
JOIN bond AS T3 ON T2.bond_id = T3.bond_id
WHERE T3.bond_type = '='
👋
你们好!感谢团队为 Text-to-SQL 领域提供了如此优秀的数据集。
我在分析评测数据时,发现 BIRD-DEV 数据集中
question_id: 207的标准答案存在表连接的逻辑错误,这会导致它返回错误的数据。🐛
toxicology❌ 当前的 Ground Truth SQL
🔍 错误分析
当前的 SQL 使用了
molecule_id将atom(原子表)和bond(化学键表)进行了直接关联 (T1.molecule_id = T2.molecule_id)。molecule_id,未参与双键的氢元素(H)也会被错误地作为“处于双键中的元素”返回。而题目实际询问的是精确构成了双键的元素。connected表在当前 SQL 中仅仅验证了原子“存在连接”,并没有发挥其作为“图关系边”映射具体化学键的作用。✅ 修复建议
正确的逻辑应当通过关系表
connected作为桥梁,实现原子 (atom) -> 连接关系 (connected) -> 具体的键 (bond)的映射。建议将 Ground Truth 替换为以下 SQL: