开源项目 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任务的研究和应用。