Tautan kompetisi
Penyelenggara dataset telah dipublikasikan dan dapat diunduh di https://github.com/zhuiyitechnology/tableqa
Kode menjalankan lingkungan hingga akhir artikel
Rencana yang diadopsi dalam proyek ini menempati urutan kelima online dalam pertandingan ulang dan ketiga dalam hasil akhir.
Kode di bawah cabang utama disajikan dalam bentuk buku catatan Jupyter. Untuk tujuan pembelajaran dan komunikasi, kode asli telah disortir untuk jumlah tertentu dan tidak akan sepenuhnya mereproduksi hasil online, tetapi efeknya tidak akan jauh lebih buruk.
Model1.ipynb dan model2.ipynb dalam direktori kode adalah proses pemodelan, dan direktori nl2sql/utils berisi beberapa fungsi dasar dan struktur data yang diperlukan untuk tugas ini.
BERT-wwm, Chinese dalam kompetisi ini. Tantangan NL2SQL Tiongkok pertama menggunakan data tabular dari bidang keuangan dan umum sebagai sumber data untuk memberikan pasangan yang cocok antara bahasa alami dan pernyataan SQL yang ditandai atas dasar ini. Kami berharap pemain dapat menggunakan data untuk melatih model yang dapat secara akurat mengubah bahasa alami menjadi SQL.
Input ke model adalah tabel pertanyaan +, dan struktur SQL adalah output, yang sesuai dengan pernyataan SQL.

di dalam
sel adalah daftar, mewakili kolom yang dipilih oleh pernyataan SELECTagg adalah daftar, sesuai dengan sel , menunjukkan operasi agregasi mana yang dilakukan pada kolom, seperti jumlah, maks, min, dll.conds adalah daftar, mewakili serangkaian kondisi dalam pernyataan WHERE . Setiap kondisi adalah tiga yang terdiri dari (kolom kondisi, operator kondisi, nilai kondisi).cond_conn_op adalah int, mewakili hubungan paralel antara kondisi dalam conds , yang dapat dan atau atau Kami membuat transformasi sederhana dari label asli

agg dengan sel , buat prediksi untuk setiap kolom dalam tabel di agg , dan kategori baru NO_OP menunjukkan bahwa kolom tidak dipilihconds menjadi dua bagian: conds_ops dan conds_vals . Alasan untuk ini adalah untuk membuat prediksi dalam dua langkah. Model pertama kali memprediksi kolom dan operator mana yang akan dipilih conds , dan kemudian model lain memprediksi nilai perbandingan kolom yang dipilih. 
Model 1 Sambungkan pertanyaan dengan header secara berurutan, menambahkan penanda khusus, TEXT atau REAL sebelum setiap kolom. Dua token khusus ini dapat digantikan oleh dua token yang tidak terlatih yang dicadangkan oleh Bert.

Arsitektur Model 1 adalah sebagai berikut:

Model 2 bertanggung jawab atas prediksi cond_val . Gagasan kami adalah untuk menyebutkan cond_op dan cond_val berdasarkan cond_col yang dipilih oleh Model 1, dan menghasilkan serangkaian kombinasi kandidat, memperlakukan kombinasi ini sebagai beberapa masalah klasifikasi biner.

Arsitektur Model 2 adalah sebagai berikut:

Akhirnya, gabungkan prediksi model 2 untuk beberapa kombinasi kandidat

Untuk detailnya, silakan lihat PPT pertahanan akhir kami untuk optimasi dalam pelatihan model dan beberapa ide yang sukses dan tidak berhasil.
Kerangka belajar yang mendalam: Tensorflow, keras
Lihat persyaratan.txt untuk versi tertentu
Cara yang lebih nyaman untuk melakukan ini adalah dengan menjalankannya di Docker. Gambar Docker berikut digunakan dalam kompetisi
| GUDANG | MENANDAI | ID gambar |
|---|---|---|
| TensorFlow/TensorFlow | malam-gpu-py3-jupyter | 6E60684E9AA4 |
Karena saya perlu menggunakan Python3.6, saya menggunakan gambar TensorFlow Nightly Build. Saya melewati gambar yang saya gunakan selama kompetisi ke hub Docker, yang dapat diperoleh melalui perintah berikut.
docker pull beader/tensorflow:nightly-gpu-py3-jupyter