region:us


# Infusion RESDSQL: Decoupling Schema Linking and Skeleton Parsing for Text-to-SQL with Syntactic or semantic infusion

## Overview
Apresentamos a infusão de informação sintática e semântica com a entrada do modelo RESDSQL no treinamento, para que tenha maior inteprertação sobre a intenção vista pela frase de entrada, e gere a saída associada.

## Evaluation Results
Mensuramos o RESDSQL com a apresentação de conhecimento no benchmark Spider, usando o modelo T5-base de linguagem para o transformer. As métricas foram: Exact-set-Match accuracy (EM) and EXecution accuracy (EX).

**On Spider:**

| Model | Dev EM | Dev EX | 
|-------|--------|--------|
| RESDSQL sem informação alguma | 0.5502 | 0.5754 | 
| RESDSQLcom informação sintática | 0.5909 | 0.6247 |
| RESDSQL com AMR (semântico) | **0.6392** | **0.6818** |


## Pré - requisitos
Crie um ambiente virtual anaconda:
```sh
conda create -n your_env_name python=3.8.5
```
Ative-o e instale as seguintes versões de PyTorch:
```sh
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch
```
Instale módulos e ferramentas:
```sh
pip install -r requirements.txt
pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.0/en_core_web_sm-2.2.0.tar.gz
python nltk_downloader.py
```
Faça os seguintes diretórios:
```sh
mkdir eval_results
mkdir models
mkdir tensorboard_log
mkdir third_party
mkdir predictions
```
Clone scripts de avaliação:
```sh
cd third_party
git clone https://github.com/ElementAI/spider.git
git clone https://github.com/ElementAI/test-suite-sql-eval.git
mv ./test-suite-sql-eval ./test_suite
cd ..
```

## Prepare os dados
Download [data](https://drive.google.com/file/d/19tsgBGAxpagULSl9r85IFKIZb4kyBGGu/view?usp=sharing) **(including Spider, Spider-DK, Spider-Syn, Spider-Realistic, Dr.Spider, and CSpider)**, o AMR and [database](https://drive.google.com/file/d/1s4ItreFlTa8rUdzwVRmUR2Q9AHnxbNjo/view?usp=share_link) and then unzip them:
```sh
unzip data.zip
unzip database.zip
```

## Inferência
A inferência para uma pergunta e base de dados própria pode ser feita usando o modelo disponível. Para isso, carregue o modelo do Hub, como é feito para o T5, e seu tokenizador. A entrada é simplesmente feita pela pergunta concatenada com o schema da base de dados.



## Agradecimentos
Agradecemos ao trabalho do RESDSQL(https://github.com/RUCKBReasoning/RESDSQL) pela arquitetura, que usamos para treianmento do nosso modelo. O trabalho foi conduzido no Centro de Inteligência Artificial USP/IBM/FAPESP (C4AI), com suporte da FAPESP e da IBM Corporation (2023).
