id随机选择另一张表格的 sql_表格问答1:简介
在公眾號的第一篇文章中我們介紹了一個厲害的開放域問答系統(tǒng) REALM,它可以根據(jù)自然語言問題從知識庫中找到相關(guān)文章并從文章中找到問題的答案。REALM 這種直接從文章中獲取答案的設(shè)定在問答領(lǐng)域稱為非結(jié)構(gòu)化文檔問答,接下來我們將用幾篇文章介紹一下與之相對應(yīng)的結(jié)構(gòu)化文檔問答中的一個重要分支表格問答。
什么是表格問答
表格大家都不陌生,誰電腦里沒幾個excel文件呢。它其實是一種信息密度很高的文檔類型,與文章相比,更加適合作為電商、查詢等場景的知識源。用表格來提供信息不僅方便業(yè)務(wù)端梳理知識,而且結(jié)構(gòu)化的數(shù)據(jù)給算法端進(jìn)行信息聚合、比較甚至推理提供了更肥沃的土壤。
下圖是 MSRA在2018 年底發(fā)的一篇文章[1]的插圖,里面對表格相關(guān) NLP 問題有一個比較完整的呈現(xiàn)。其中涉及了檢索、語義解析、生成和對話等多個方向。
MSRA博文插圖。本文的重點是其中的Semantic Parsing部分,即將自然語言問題轉(zhuǎn)化為結(jié)構(gòu)化查詢語句,并在數(shù)據(jù)庫中運(yùn)行后得出結(jié)果。如圖所示,表格問答就是針對一個自然語言問題,根據(jù)表格內(nèi)容給出答案。
表格問答主要涉及的是圖中檢索和語義解析兩個模塊。檢索模塊在文檔問答里也有,文檔問答的檢索模塊是為了找到和問題相關(guān)的文檔,而表格問答里檢索模塊的目標(biāo)則是找到和問題相關(guān)的表格。這個模塊只有在涉及大量表格(例如搜索引擎)的時候才會用到。
語義解析是和文檔問答中差別比較大的部分。在文檔問答中是使用一個 reader 模型來處理檢索到的文檔(context),而表格問答的側(cè)重點則是處理問題(query)。語義解析模型的目標(biāo)是結(jié)合表格信息將問題(如圖中的Which city hosted Summer Olympic in 2008?)轉(zhuǎn)化成一個機(jī)器可理解和執(zhí)行的規(guī)范語義表示,對二維表而言這種表示通常就是 SQL 語句(如圖中的SELECT City FROM SummerOlympic WHERE Year="2008")。有了 SQL 語句就可以執(zhí)行得到針對問題的答案(如圖中的Beijing)。
在不需要表格檢索的場景中,表格問答就簡化成了一個自然語言轉(zhuǎn) SQL(nl2sql)問題,我們后面的介紹也主要聚焦在 nl2sql 這個問題上。
NL2SQL 數(shù)據(jù)集
我認(rèn)為語義解析算是 NLP 界“最初的夢想”了,籠統(tǒng)地說就是要建立起非結(jié)構(gòu)化自然語言和結(jié)構(gòu)化機(jī)器語言間的橋梁。NL2SQL 由于其實用性漸漸成為了語義解析領(lǐng)域一個重要的方向,近幾年也誕生了很多有代表性的 nl2sql 數(shù)據(jù)集。
英語世界兩個著名的數(shù)據(jù)集是WikiSQL[2]和Spider[3];去年國內(nèi)的追一科技在天池平臺上舉辦過一次中文 nl2sql 挑戰(zhàn)賽[4],為中文 NLP 世界貢獻(xiàn)了一個高質(zhì)量的數(shù)據(jù)集。
WikiSQL 相對比較簡單,也比較典型,我們從它開始講起。宏觀上數(shù)據(jù)集分為兩個部分:問題和表格數(shù)據(jù)。
下面是一個問題的例子,每條數(shù)據(jù)包含三個主要字段。
{"phase":1,
"question":"who is the manufacturer for the order year 1998?",
"sql":{
"conds":[
[
0,
0,
"1998"
]
],
"sel":1,
"agg":0
},
"table_id":"1-10007452-3"
}
- question是自然語言問題
- table_id是與這個這個問題相關(guān)的表格編號
- sql字段是標(biāo)簽數(shù)據(jù)。這個數(shù)據(jù)集進(jìn)一步把 SQL 語句結(jié)構(gòu)化(簡化),分成了conds,sel,agg三個部分。
- sel是查詢目標(biāo)列,其值是表格中對應(yīng)列的序號
- agg的值是聚合操作的編號,可能出現(xiàn)的聚合操作有['', 'MAX', 'MIN', 'COUNT', 'SUM', 'AVG']共 6 種。
- conds是篩選條件,可以有多個。每個條件用一個三元組(column_index, operator_index, condition)表示,可能的operator_index共有['=', '>', '四種,condition是操作的目標(biāo)值,這是不能用分類解決的目標(biāo)。
可以看出 WikiSQL 里的自然語言查詢語句并不會太難,而且由于將SQL語句做了進(jìn)一步的結(jié)構(gòu)化,多數(shù)目標(biāo)可以建模成分類問題進(jìn)行解決。
WikiSQL 是針對單表場景的數(shù)據(jù)集,每一個問題只會對應(yīng)一張表格。表格數(shù)據(jù)大概長下面這個樣子,其中id與問題中的table_id對應(yīng),header是表頭(列名),types是每一列的數(shù)據(jù)類型,rows則是每一行數(shù)據(jù)。
{"id":"1-1000181-1",
"header":[
"State/territory",
"Text/background colour",
"Format",
"Current slogan",
"Current series",
"Notes"
],
"types":[
"text",
"text",
"text",
"text",
"text",
"text"
],
"rows":[
[
"Australian Capital Territory",
"blue/white",
"Yaa\u00b7nna",
"ACT \u00b7 CELEBRATION OF A CENTURY 2013",
"YIL\u00b700A",
"Slogan screenprinted on plate"
],
[
"New South Wales",
"black/yellow",
"aa\u00b7nn\u00b7aa",
"NEW SOUTH WALES",
"BX\u00b799\u00b7HI",
"No slogan on current series"
]
]
}
Spider 數(shù)據(jù)集比 WikiSQL 困難,它需要構(gòu)造的 SQL 語句更加復(fù)雜,而且有的問題需要做多張表的聚合。下圖是 Spider 數(shù)據(jù)集里一些不同難度查詢語句的例子,WikiSQL 基本上處在其中的 easy 水平。
Spider數(shù)據(jù)集樣例最后那個Extra Hard的例子真是看得我頭皮發(fā)麻,我感覺我自己都寫不出相應(yīng)的SQL語句,真是太難了。
中文 NL2SQL 數(shù)據(jù)集的形式幾乎和 WikiSQL 一模一樣,但難度高出不少。它更加接近業(yè)務(wù)場景一些,主要體現(xiàn)在表格內(nèi)容非常豐富、自然語言問題的表達(dá)也更加多樣。這兩點從當(dāng)時比賽冠軍的答辯 ppt[5]里就可見一二。要取得好成績需要做很多文本規(guī)范化的工作。
中文NL2SQL挑戰(zhàn)賽冠軍隊伍采用的預(yù)處理策略??梢钥闯鰯?shù)據(jù)中存在中文數(shù)字、年份縮寫、同義詞等棘手的問題。性能評價
NL2SQL 一般有兩種評價方式,一種是直接比較生成的 SQL 與標(biāo)簽的差別,另一種是比較生成的 SQL 執(zhí)行結(jié)果與標(biāo)簽 SQL 執(zhí)行結(jié)果的差別。在 WikiSQL 中這兩個指標(biāo)分別稱為 logical form accuracy 和 execution accuracy。由于不同的 SQL 語句可能產(chǎn)生相同的結(jié)果,所以用后一種評價方式的得分一般高于前一種。
Spider 原來的評價指標(biāo)比較接近于 logical form acc,今年剛開放了 execution acc 賽道。由于難度有差異,目前模型在各數(shù)據(jù)集上的水平也有一些差別。WikiSQL 目前排行榜上第一名的執(zhí)行準(zhǔn)確率已經(jīng)達(dá)到 92%,邏輯形式準(zhǔn)確率也達(dá)到了 86.5%,而 Spider 由于難度更大,SOTA 成績只有 61.9%。
WikiSQL排行榜上目前的前五名以上就是今天的全部內(nèi)容,相信你已經(jīng)對 NL2SQL 問題有了一個比較直觀的了解。后面會有兩篇關(guān)于表格問答算法和落地產(chǎn)品的文章,下一期將會先介紹來自微軟的兩個相繼在 WikiSQL 獲得 SOTA 成績的模型 HydraNet 和 X-SQL,不要錯過哦。
參考資料
[1]你已經(jīng)是個成熟的表格了,該學(xué)會自然語言處理了: https://www.msra.cn/zh-cn/news/features/table-intelligence
[2]WikiSQL數(shù)據(jù)集: https://github.com/salesforce/WikiSQL
[3]Spider數(shù)據(jù)集: https://yale-lily.github.io/spider
[4]中文NL2SQL挑戰(zhàn)賽: https://tianchi.aliyun.com/competition/entrance/231716/introduction?spm=5176.12281957.1004.7.38b02448CvVgo8
[5]中文NL2SQL挑戰(zhàn)賽冠軍方案: https://github.com/nudtnlp/tianchi-nl2sql-top1/blob/master/%E5%A4%A9%E6%B1%A0NL2SQL%E5%86%A0%E5%86%9B%E6%96%B9%E6%A1%88.pdf
推薦閱讀
AINLP年度閱讀收藏清單
數(shù)學(xué)之美中盛贊的 Michael Collins 教授,他的NLP課程要不要收藏?
自動作詩機(jī)&藏頭詩生成器:五言、七言、絕句、律詩全了
From Word Embeddings To Document Distances 閱讀筆記
模型壓縮實踐系列之——bert-of-theseus,一個非常親民的bert壓縮方法
這門斯坦福大學(xué)自然語言處理經(jīng)典入門課,我放到B站了
可解釋性論文閱讀筆記1-Tree Regularization
征稿啟示 | 稿費(fèi)+GPU算力+星球嘉賓一個都不少
關(guān)于AINLP
AINLP 是一個有趣有AI的自然語言處理社區(qū),專注于 AI、NLP、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、推薦算法等相關(guān)技術(shù)的分享,主題包括文本摘要、智能問答、聊天機(jī)器人、機(jī)器翻譯、自動生成、知識圖譜、預(yù)訓(xùn)練模型、推薦系統(tǒng)、計算廣告、招聘信息、求職經(jīng)驗分享等,歡迎關(guān)注!加技術(shù)交流群請?zhí)砑覣INLPer(id:ainlper),備注工作/研究方向+加群目的。
總結(jié)
以上是生活随笔為你收集整理的id随机选择另一张表格的 sql_表格问答1:简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021抖音数据报告(完整版)「建议收藏
- 下一篇: gis地理加权回归步骤_地理加权回归权重