开源项目 test-suite-sql-eval 使用教程
1. 项目介绍
test-suite-sql-eval 是一个用于评估文本到SQL任务的语义准确性的开源项目。该项目通过蒸馏测试套件(Distilled Test Suites)来计算更严格的语义准确性上界,相比其他当前的评估指标,能够更高效地进行评估。该项目在EMNLP 2020论文中提出,并已成为Spider、SParC和CoSQL的官方评估指标。此外,它还适用于其他经典的文本到SQL数据集,如ATIS、Advising、Geography、IMDB、Restaurants、Scholar和Yelp。
2. 项目快速启动
2.1 环境准备
在开始之前,请确保你已经安装了Python 3,并且安装了以下依赖库:
pip3 install sqlparse
pip3 install nltk
2.2 下载测试套件
首先,你需要从项目提供的链接下载测试套件(数据库),并将其放置在database/目录下。
2.3 运行评估
以下是一个简单的示例命令,用于计算Spider、CoSQL和SParC开发集的测试套件准确性:
python3 evaluation.py --gold [gold file] --pred [predicted file] --etype exec --db [database dir] --table [table file] --plug_value --keep_distinct --progress_bar_for_each_datapoint
参数说明:
[gold file]:包含黄金SQL查询的文件,每行格式为gold SQL \t db_id。[predicted file]:包含预测SQL查询的文件,每行格式为预测的SQL查询。[database dir]:包含所有数据库和测试套件的目录。[table file]:包含每个数据库的外键信息的table.json文件。
3. 应用案例和最佳实践
3.1 应用案例
test-suite-sql-eval 主要用于评估文本到SQL模型的语义准确性。例如,在Spider、SParC和CoSQL等数据集上,研究人员可以使用该工具来评估其模型的性能,并与其他模型进行比较。
3.2 最佳实践
- 使用
--plug_value参数:如果你的模型不预测SQL查询中的值,建议使用--plug_value参数,该参数会将黄金查询中的值插入到预测查询中。 - 保持
distinct关键字:如果你希望在评估过程中保留distinct关键字,可以使用--keep_distinct参数。 - 监控进度:使用
--progress_bar_for_each_datapoint参数可以监控每个测试输入的执行进度,确保评估过程不会卡在某个特定的测试输入上。
4. 典型生态项目
test-suite-sql-eval 是文本到SQL任务评估领域的一个重要工具,与其相关的典型生态项目包括:
- Spider:一个大规模的文本到SQL数据集,用于评估文本到SQL模型的性能。
- SParC:一个跨领域的文本到SQL数据集,用于评估模型在不同领域中的泛化能力。
- CoSQL:一个对话式的文本到SQL数据集,用于评估模型在对话场景中的表现。
这些项目与test-suite-sql-eval 紧密结合,共同推动了文本到SQL任务的研究和应用。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



