AlibabaResearch / DAMO-ConvAI

DAMO-ConvAI: The official repository which contains the codebase for Alibaba DAMO Conversational AI.
MIT License
1.1k stars 178 forks source link

BIRD数据集相关问题 #72

Closed steph730 closed 10 months ago

steph730 commented 10 months ago

请问sqlcoder有在bird上进行过测试嘛,我测试的效果准确率显示13.几,是sqlcoder效果就这样还是我的实验过程有问题呢

image
accpatrick commented 10 months ago

@steph730 非常感谢您关注我们的工作。首先请下载我们最新的数据。请您仔细检查错误类型并关注输出的SQL中是否存在大量拼写错误,例如 “SELECT100”,同时注意诸如 "Charter School (Y/N)" 这类带有空格的字段是否被反引号(`)包围。可以通过后处理来解决这类拼写错误问题,或者在导入数据库数据进prompt时,使用规则对带有空格或关键字重复(order`)的字段进行预处理。此外,不同模型会有自己擅长的prompt,请按照sqlcoder的演示案例进行prompt设计和分析。若对所有SQL都进行了类似处理,但结果仍然较低,则可能表明该模型在BIRD上的ICL能力需要改进。BIRD的数据库约束较diverse和difficult(多个column组合的pk或者fk),问题难度较大(需要对value和知识有深入理解),此外,我们的数据集(尤其是开发集和测试集)从未暴露给任何模型的预训练过程。因此,观察到模型的zero-shot ICL效果不佳是可以理解的。

近期,我们也在积极评估一些受关注的开源模型,如Codellama、starcoder和sqlcoder。再次感谢您的建议。一旦我们完成,我们会第一时间更新到leaderboard上,谢谢。

steph730 commented 10 months ago

@steph730 非常感谢您关注我们的工作。首先请下载我们最新的数据。请您仔细检查错误类型并关注输出的SQL中是否存在大量拼写错误,例如 “SELECT100”,同时注意诸如 "Charter School (Y/N)" 这类带有空格的字段是否被反引号(`)包围。可以通过后处理来解决这类拼写错误问题,或者在导入数据库数据进prompt时,使用规则对带有空格或关键字重复(order`)的字段进行预处理。此外,不同模型会有自己擅长的prompt,请按照sqlcoder的演示案例进行prompt设计和分析。若对所有SQL都进行了类似处理,但结果仍然较低,则可能表明该模型在BIRD上的ICL能力需要改进。BIRD的数据库约束较diverse和difficult(多个column组合的pk或者fk),问题难度较大(需要对value和知识有深入理解),此外,我们的数据集(尤其是开发集和测试集)从未暴露给任何模型的预训练过程。因此,观察到模型的zero-shot ICL效果不佳是可以理解的。

近期,我们也在积极评估一些受关注的开源模型,如Codellama、starcoder和sqlcoder。再次感谢您的建议。一旦我们完成,我们会第一时间更新到leaderboard上,谢谢好的

@steph730 非常感谢您关注我们的工作。首先请下载我们最新的数据。请您仔细检查错误类型并关注输出的SQL中是否存在大量拼写错误,例如 “SELECT100”,同时注意诸如 "Charter School (Y/N)" 这类带有空格的字段是否被反引号(`)包围。可以通过后处理来解决这类拼写错误问题,或者在导入数据库数据进prompt时,使用规则对带有空格或关键字重复(order`)的字段进行预处理。此外,不同模型会有自己擅长的prompt,请按照sqlcoder的演示案例进行prompt设计和分析。若对所有SQL都进行了类似处理,但结果仍然较低,则可能表明该模型在BIRD上的ICL能力需要改进。BIRD的数据库约束较diverse和difficult(多个column组合的pk或者fk),问题难度较大(需要对value和知识有深入理解),此外,我们的数据集(尤其是开发集和测试集)从未暴露给任何模型的预训练过程。因此,观察到模型的zero-shot ICL效果不佳是可以理解的。

近期,我们也在积极评估一些受关注的开源模型,如Codellama、starcoder和sqlcoder。再次感谢您的建议。一旦我们完成,我们会第一时间更新到leaderboard上,谢谢。

好的谢谢!再有请问一下我看sqlcoder是针对postgresql进行优化的,而bird是sqlite数据库,这个对于结果会有很大影响嘛

accpatrick commented 10 months ago

@steph730 您好,会有一定的影响的。大多的text-to-SQL benchmark的数据库基本都来源于sqlite,因为其很方便用户去下载无需配置,因此我们也选定sqlite为BIRD的数据库。根据我们的实验经验,主要影响的在以下方面: 1)keyword不同,有一些语法会有不同,比如sqlite表示时间的function为STRFTIME(),postgre和mysql为Year(), Month(), ... 2) 计算浮点数的位数不同,比如sqlite中默认只保留整数部分,如果想要更进一步的结果,必须要用CAST()先将其转化成REAL(postgresql里的浮点数表示),在进行计算。而postgresql和mysql则默认返回小数部分,无需额外转换。

其他的影响可能不会很大。因此可以通过后处理将sqlcoder结果处理成sqlite,或者将bird的sql部署成postgresql。在我们的prompt中,我们明确要求最后生成的结果为SQLite。不过很感谢您的意见,我们会加入postgresql版本。

shellhuang1227 commented 4 months ago

@steph730 您好,请问您有继续在sqlcoder上测试嘛?效果有改进吗?我今天测试了sqlcoder-7b-2,效果准确率是18.25,也挺低的。