論文:Spider: A Large-Scale Human-Labeled Dataset for Complex and Cross-Domain Semantic Parsing and Text-to-SQL Task
?????
EMNLP 2018, arXiv:1809.08887
Dataset: spider
GitHub: github.com/taoyds/spider
一、論文速讀
本文提出了 Text2SQL 方向的一個經典數據集 —— Spider 1.0,其難度遠大于 WikiSQL,包含了 200 個數據庫,覆蓋了 138 個不同的領域,平均每個數據庫由 27.6 個 columns 和 8.8 個外鍵,總共由 10,181 個 questions 以及 5,693 個對應的復雜 SQL 查詢構成。
1.1 數據集的特點
數據集由 11 名計算機學生構建,在做數據標注時,確保了以下三個方面:
- SQL 模式的覆蓋:每個數據庫的示例覆蓋了常見的 SQL 模式,包含多列的 SELECT 和 aggregation、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT、JOIN、UNION、LIKE 等等,且每個 table 都至少出現在一個 query 中。
- SQL 一致性:有些 question 可能有多種 SQL 查詢寫法,該工作設計了標注協議,當存在多個等效 query 時,所有標注者都選擇相同的 SQL 查詢模式。
- 問題清晰化:不會創建模糊有歧義的問題,比如“最受歡迎”這種沒有明確定義的問題;也沒有需要數據庫之外的常識才能回答的問題,因為這脫離了“語義解析”的訓練目標。
標注工作可以借助 sqlite-web 來打開數據庫并查看。
1.2 任務的定義
模型將被在不同的復雜 SQL、復雜數據庫、復雜 domains 上被測試,要求模型能夠對 question 理解語義,并對新的數據庫有泛化能力。
任務不評估模型生成 value 的能力,因為這個 benchmark 側重評估預測出正確的 SQL 結構和 columns,數據集中也被排除了需要常識推理和數學計算的 querys。
論文工作還對數據庫的 table names 和 column names 做了清洗,讓這些名字清晰且自成一體。比如將 stu id
轉為 student id
二、評價指標
本論文給出了三個 metrics:Component Matching、Exact Matching 和 Execution Accuracy。
2.1 Component Matching
Component Matching 衡量的是 prediction 和 ground-truth SQL 的不同 component 的平均精確匹配效果。
SQL 中每個 keywords 視為一種 component,并將其分解為含有多個 sub-component 的 bag。比如 SELECT avg(col1), max(col2), min(col1)
被分解為一個 bag:(avg, min, col1), (max, col2)
,然后查看 prediction 和 ground-truth SQL 的 bag 是否相同。
keywords 指的是包括所有不帶 column name 和 operatiors 的 SQL 關鍵字,如 SELECT、WHERE 等。
被分解后,每一個 component 被分解為一個 bag,這個 bag 中的每一個元素對應一個 sub-component,這個 sub-component 也是被分解為一個 bag。
為了報告一個 model 在每個 component 上的整體表現,我們會計算每個 exact set matching 的 F1 score。
2.2 Exact Matching
Exact Matching 衡量的是兩個 SQL 是否整體上等同。按照上一節的描述,只有當兩個 SQL 在所有 component 上都精確匹配的情況下,這個樣本預測才算做正確。
2.3 Execution Acc
Execution Acc 比較的兩個 SQL 執行的結果集是否相同。
- Exact Matching 可能會產生 false negative
- Execution Acc 可能會產生 false positive
三、數據集示例
根據 SQL component 數量、conditions 等等,將 SQL queries 分成了四個難度:easy、medium、hard 和 extra hard。
下圖展示了四個 level 的示例:
當時論文測試了已有的幾個 Text2SQL 模型,也發現都沒有表現很好,也說明了 Spider 數據集的難度較高。
四、實驗結論
論文使用 SQLNet、TypeSQL 等模型測試了一波,發現以下整體的結論:
- 所有模型的整體表現都很低,說明 Spider 具有挑戰性,尤其是 WHERE 子句的預測,因為 WHERE 子句更有可能有多個 columns 和 operators。
- 目前的模型在 test split 上拓展到新數據庫時都表現較差,這說明 Spider 為模型泛化到新的數據庫提出了挑戰。
- 數據庫的模式復雜性也會影響模型的性能,實驗也發現,隨著數據庫的外鍵數量增多,表現也會下降。
五、代碼
GitHub 首頁中給出了 example 的格式,也給出了用于評估的腳本 evaluation.py
。