【Text2SQL 經典模型】TypeSQL

論文:TypeSQL: Knowledge-Based Type-Aware Neural Text-to-SQL Generation

???

Code: TypeSQL | GitHub

一、論文速讀

本論文是在 SQLNet 網絡上做的改進,其思路也是先預先構建一個 SQL sketch,然后再填充 slots 從而生成 SQL。

論文發現:在 question 中往往包含與特定數據相關的 rare entity 和 number,這對于在 SQL 查詢中推斷 column name 和 WHERE condition value 很重要,但這些 entity 和 number 缺乏準確的 embedding。為了解決這個問題,本工作為 question 的每個 word 分配了一個 type:知識圖譜中的 entity、“COLUMN” 或者一個 number,如下圖的最下面的 input 所示,為 question 的每個 word 都分配了一個 type:

具體來說,首先對 question 做分詞,切分成長度為 2~6 的 n-grams,然后:

  • 使用 gram 檢索數據庫的 table schema,如果能檢索到相應的 column name,那就將其 type 標注為 COLUMN
  • 為 number 和 date 標注為以下四個類別之一:INTEGERFLOARDAREYEAR
  • 為了識別命名實體,用 gram 作為 keyword 在 Freebase 上做檢索五類實體:PERSONPLACECOUNTRYORGANIZATIONSPORT,并做相應的 type 標注,這五類實體已經可以覆蓋了數據集中的絕大多數實體

由此,我們才可以看到上圖中對 question 的 type 標注結果。

拓展來開的話,如果 database 的內容也可以訪問,那我們在做 type 標注時,還會將 gram 從 table schema、column content 和 column label 中做檢索,并將 type 標注為具體的 column name。比如上圖中,question 中的 mort drucker 可以被標注為 artist,因為我們能在數據庫中檢索到這個 gram 并發現對應的 column name 為 artist

對 question 做完 type 標注后,在之后做編碼時,就可以將 question 中的原 token 和對應的 type 一起做 embedding,并將兩個 embedding 連接在一起做 encode 并進一步處理。

在之后填充 SQL sketch 做 slots 預測時,原來的 SQLNet 模型是為五種 slots 設計了五個 model 來分別訓練和預測,而本文的 TypeSQL 將其中功能相似的 model 做了合并,最終只需要 3 個 model 來完成填充任務,架構上做了簡化。具體公式可以參考原論文。

二、總結

這篇論文的工作主要是對 SQLNet 做的改進,改進主要有如下:

  • 借助于數據庫的 table schema 檢索和 knowledge graph 的檢索,為 question 的每個 word 標注一個 type,從而提高 embedding 的效果
  • 當 database content 可用時,type 標注時還會進一步對 column content 做檢索,并為其標注 column name,這樣當用戶的 question 中的所提到的列名或者條目不精確時,也可以通過這個步驟來對應到具體的數據庫 column,從而提高效果,實現所謂的“內容敏感性”。
  • 改進了 SQLNet 的 slots 填充步驟,減少了所需要的 model 數量,架構上也做了簡化

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13765.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13765.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13765.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++函數指針,鍵值對集合的學習

這段代碼使用了 std::unordered_map 來存儲 std::wstring 作為鍵&#xff08;key&#xff09;&#xff0c;而對應的值&#xff08;value&#xff09;是一個 std::function<void(std::array<int, 5>, SomeClass&, int)> 類型的函數指針。這個結構使得根據字符串…

C++ 時間處理-日期時間類

1. 關鍵詞2. 問題3. 設計理念4. 支持的能力5. 代碼實現 5.1. datetime.h5.2. timecount.cpp 6. 測試代碼7. 運行結果8. 源碼地址 1. 關鍵詞 C 時間處理 日期時間類 跨平臺 2. 問題 為什么C就沒有一個方便好用的表示日期時間的類&#xff1f; 同樣是高級語言&#xff0c;Ja…

2024 HGDD 榮耀開發者日·成都站

HGDD 榮耀開發者日成都站 活動時間&#xff1a;2024 年 5 月 27 日 活動地點&#xff1a;成都市雙流區 LA CADIERE 蔚藍湖濱城 期待與大家的見面&#xff01;

ISO 9001認證 要換版了!

ISO TC176/SC2 第50次會議2023年10月8日至13日在盧旺達基加利舉行。 會議確定ISO 9001標準的修訂從2024年1月開始&#xff0c;將包括WD&#xff08;Working Draft&#xff09;、CD&#xff08; Committee Draft&#xff09;、DIS&#xff08;Draft for International Standard&…

js+vue3+elementplus發送驗證碼實現(含倒計時重新發送)

<template><el-form :model"formValue" :rules"rules" ref"form"><el-form-item prop"phone"><el-input v-model.number"formValue.phone" class"form-input" placeholder"請輸入手機號…

[matlab]yalmip國內源yalmip下載地址所有版本匯總

概述 MATLAB是一個強大的數值計算工具&#xff0c;用于數學建模、算法開發和數據分析。在MATLAB中&#xff0c;有很多工具箱可以幫助用戶完成不同類型的任務。本文將介紹如何在MATLAB中安裝Yalmip和Cplex&#xff0c;這兩個工具箱可以幫助用戶解決優化問題。 如果不想看文字描…

【oracle004】oracle內置函數手冊總結(已更新)

1.熟悉、梳理、總結下oracle相關知識體系。 2.日常研發過程中使用較少&#xff0c;隨著時間的推移&#xff0c;很快就忘得一干二凈&#xff0c;所以梳理總結下&#xff0c;以備日常使用參考 3.歡迎批評指正&#xff0c;跪謝一鍵三連&#xff01; 總結源文件資源下載地址&#x…

RoctetMQ使用(2):在項目中使用

一、導入相關依賴 在項目中引入MQ客戶端依賴&#xff0c;依賴版本最好和RocketMQ版本一致。 <!-- rocket客戶端--><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version&…

npm常用指令

基礎 命令&#xff1a;run 解釋&#xff1a;運行腳本 示例&#xff1a;npm run dev 命令&#xff1a;list || ls 解釋&#xff1a;查看依賴列表 示例&#xff1a;npm list || npm ls 命令&#xff1a;install || i 解釋&#xff1a;安裝依賴 示例&#xff1a;npm install ||…

一文掌握python隨機數random模塊

目錄 一、常用函數 1、 random.random() 2、random.uniform(a, b) 3、random.randint(a, b) 4、random.randrange(start, stop[, step]) 5、random.choice(sequence) 6、random.shuffle(x[, random]) 7、random.sample(population, k) 8、random.choices(population, w…

Qml:錨點

import QtQuick import QtQuick.WindowWindow {width: 800height: 600visible: truetitle: qsTr("Test Anchors")///錨點 上下左右Rectangle{id: anchor1width:200height: 150color:"#EEEEEE"Rectangle{id:rect1width:50height:50color: "red"Te…

Ubuntu 20/22 安裝 Jenkins

1. 使用 apt 命令安裝 Java Jenkins 作為一個 Java 應用程序&#xff0c;要求 Java 8 及更高版本&#xff0c;檢查系統上是否安裝了 Java。 sudo apt install -y openjdk-17-jre-headless安裝完成后&#xff0c;再次驗證 Java 是否已安裝 java --version2. 通過官方存儲庫安…

動態地控制kafka的消費速度,從而滿足業務要求

kafka是一個分布式流媒體平臺&#xff0c;它可以處理大規模的數據流&#xff0c;并允許實時消費該數據流。在實際應用中&#xff0c;我們需要動態控制kafka消費速度&#xff0c;以便處理數據流的速率能夠滿足系統和業務的需求。本文將介紹如何在kafka中實現動態控制消費速度的方…

APH-Archives of Public Health

文章目錄 一、期刊簡介二、征稿信息三、期刊表現四、投稿須知五、投稿咨詢 一、期刊簡介 Archives of Public Health是一份范圍廣泛的公共衛生雜志&#xff0c;致力于出版公共衛生領域所有可靠的科學。該雜志旨在更好地了解人群的健康。該雜志有助于公共衛生知識&#xff0c;加…

【考研數學】李林《880》是什么難度水平強化夠用嗎

880是公認的質量高&#xff0c;但要是刷的方法不對&#xff0c;心態直接炸裂&#xff01;&#x1f649; 我24年二戰就是用的 880660 的黃金搭檔&#xff0c;143分逆襲上岸211&#xff01;&#xff08;為什么說逆襲呢&#xff0c;因為我23年一戰數學83&#xff0c;妥妥的菜雞&am…

2024.5.20 學習記錄

1、react 原理&#xff08;jsx的本質、事件機制原理、setState和batch Update、組件渲染更新和diff算法、fiber&#xff09; 2、代碼隨想錄貪心刷題

ArcGIS10.X入門實戰視頻教程(arcgis入門到精通)

點擊學習&#xff1a; ArcGIS10.X入門實戰視頻教程&#xff08;GIS思維&#xff09;https://edu.csdn.net/course/detail/4046?utm_sourceblog2edu 點擊學習&#xff1a; ArcGIS10.X入門實戰視頻教程&#xff08;GIS思維&#xff09;https://edu.csdn.net/course/detail/404…

銀河麒麟操作系統下使用QT連接TiDB數據庫開發步驟

目標:實現項目軟件+硬件都運行在國產化操作系統平臺上。 方法:在虛擬機中安裝麒麟系統V10Sp1+Qt5.14.2+MySql8.0+TiDB軟件,編譯MySql驅動,測試連接TiDB數據庫項目。 步驟: 1、使用虛擬機軟件VMWare安裝銀河麒麟操作系統。 2、在銀河麒麟系統上安裝QT5.14.2軟件。 3、…

Web Server項目實戰3-Web服務器簡介及HTTP協議

Web Server&#xff08;網頁服務器&#xff09; 一個 Web Server 就是一個服務器軟件&#xff08;程序&#xff09;&#xff0c;或者是運行這個服務器軟件的硬件&#xff08;計算機&#xff09;。其主要功能是通過 HTTP 協議與客戶端&#xff08;通常是瀏覽器&#xff08;Brow…

【精品】使用 v-md-editor 上傳圖片

簡介 v-md-editor 是基于 Vue 開發的 markdown 編輯器組件&#xff0c;即支持vue2也支持vue3。 gitee&#xff1a;https://gitee.com/ckang1229/vue-markdown-editor文檔&#xff1a;https://code-farmer-i.github.io/vue-markdown-editor/zh/ 服務器端代碼 RestController…