<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          萬(wàn)萬(wàn)沒(méi)想到,BERT學(xué)會(huì)寫(xiě)SQL了

          共 15047字,需瀏覽 31分鐘

           ·

          2021-02-24 11:14

          ??????

          文 | Giant
          編 | NLP情報(bào)局

          大家好,我是Giant,這是我的第2篇文章。

          文本-SQL轉(zhuǎn)化任務(wù),是將用戶的自然語(yǔ)言轉(zhuǎn)化為SQL繼而完成數(shù)據(jù)庫(kù)查詢的工作。

          例如根據(jù)下表,用戶輸入一個(gè)問(wèn)題,模型將其轉(zhuǎn)換為 SQL,查詢數(shù)據(jù)庫(kù)得到結(jié)果:"-4.52, -9.55"

          ??????Query:新浪和人人網(wǎng)的周漲跌幅分別是多少???????

          SQL:SELECT 周漲跌幅 FROMWHERE 名稱=‘新浪’ OR 名稱=‘人人網(wǎng)’

          原本要辛辛苦苦寫(xiě)SQL,現(xiàn)在我用大白話告訴機(jī)器想看的內(nèi)容,就能從數(shù)據(jù)庫(kù)中拿到答案,這就是Text2SQL。

          本文將解讀Text2SQL領(lǐng)域最新論文,BERT從中學(xué)會(huì)了如何編寫(xiě)SQL語(yǔ)言。原文發(fā)表在EMNLP 2020會(huì)議上。

          論文題目

          Bridging Textual and Tabular Data for Cross-Domain Text-to-SQL Semantic Parsing

          論文鏈接:

          https://arxiv.org/pdf/2012.12627v2.pdf

          開(kāi)源代碼:

          https://github.com/salesforce/TabularSemanticParsing

          想快速獲取論文的小伙伴也可以在訂閱號(hào)【NLP情報(bào)局】后臺(tái)回復(fù)關(guān)鍵詞【0119】下載。

          01 Text2SQL定義

          Text2SQL解決的是將自然語(yǔ)言映射到數(shù)據(jù)庫(kù)查詢語(yǔ)句SQL的問(wèn)題。論文中將跨領(lǐng)域的text-to-SQL任務(wù)定義如下:

          給定自然語(yǔ)言問(wèn)句   和關(guān)系型數(shù)據(jù)庫(kù)模式   ,模型需要生成對(duì)應(yīng)的SQL查詢   。

          我們知道,一個(gè)數(shù)據(jù)庫(kù)中可能包含很多張,一張表又包含多個(gè)字段,所以   ,   。每張表的表名   和字段名   都是文本字符。表中的字段可能有主鍵、外鍵,同時(shí)字段有不同的數(shù)據(jù)類型

          表中的單元值包含了真實(shí)數(shù)據(jù)信息,例如前文的“人人網(wǎng)”和“新浪”。

          明白了什么是Q和S,我們來(lái)思考如何搭建模型。

          02 模型架構(gòu)??????????????????

          論文提出的模型BRIDGE采用了主流的Seq2Seq架構(gòu),把Text2SQL視作翻譯問(wèn)題(原序列:text,目標(biāo)序列:SQL),包含編碼器和解碼器。

          編碼器

          編碼器的目的是對(duì)Q和S分別做向量編碼,同時(shí)對(duì)兩者之間的關(guān)系充分交互

          論文中,作者將Q和S拼接為一個(gè)合的問(wèn)題-模式序列   ,作為編碼器的輸入:

          每一個(gè)表名、字段名分別用字符[T][C]分隔。問(wèn)題Q和S之間用字符[SEP]分隔。最后,在開(kāi)始位置插入[CLS]字符。

          這樣的序列既符合BERT的輸入格式,從而優(yōu)雅地編碼跨模態(tài)信息,又能快速獲取任意字段的編碼向量(提取[T]/[C]對(duì)應(yīng)特征即可)。

             首先輸入BERT,隨后經(jīng)過(guò)一層雙向LSTM獲得序列的初始編碼表示   。

             中的問(wèn)題片段繼續(xù)通過(guò)一層bi-LSTM獲得Q的最終編碼   。

          Meta-data Features

          相比于表名,字段名多了主鍵、外鍵等屬性。為了利用這些特征(meta-data),論文中用了一層前饋網(wǎng)絡(luò)對(duì)表名、字段名進(jìn)一步編碼。

          這里的   分別表示各個(gè)字段的主鍵、外鍵、類型特征,   表示字段特征。將4個(gè)向量橫向順序拼接,經(jīng)過(guò)函數(shù)   轉(zhuǎn)化,可以得到每一個(gè)字段的最終向量表示。

          表名沒(méi)有額外特征,后三個(gè)維度均用零向量替代。各個(gè)表名、字段名都進(jìn)行g(shù)函數(shù)轉(zhuǎn)化,縱向拼接得到模式的最終編碼   。

          Bridging

          截至目前,僅僅完成了Q和S的各自編碼。讀者可能會(huì)疑惑,交互在哪呢?

          為了解決這個(gè)問(wèn)題,作者使用錨文本(anchor text)將問(wèn)題Q中包含的單元值與數(shù)據(jù)庫(kù)字段鏈接起來(lái)。

          具體實(shí)現(xiàn)上,作者將問(wèn)題Q中的每一個(gè)token,與數(shù)據(jù)庫(kù)表中每一列的所有value值進(jìn)行字符串模糊匹配,匹配上的value值將被插入到序列X中。

          如上圖所示,問(wèn)題Q和表格“Properties”、“Reference Property Types”相關(guān)聯(lián)。其中Q包含的兩個(gè)單詞“houses”和“apartments”與兩張表中的同名字段“Property type code”有重合單元值

          字段名“Property type code”本身沒(méi)有在問(wèn)題Q中出現(xiàn),讓模型直接推理出“houses”、“apartments”和“Property type code”相關(guān),難度很大。

          所以作者在   中把和問(wèn)題有關(guān)的單元值人為拼接在相應(yīng)字段之后,相當(dāng)于直接告訴BERT哪些問(wèn)題片段包含引用。

          作者把這種方式稱為“bridging”,即模型BRIDGE的由來(lái)。

          解碼器

          解碼器的目的是從編碼特征中還原出相應(yīng)SQL。

          相比于前人的工作(RAT-SQL[2]、IRNet[3]等),BRIDGE解碼器設(shè)計(jì)非常簡(jiǎn)潔,僅使用了一層帶多頭注意力機(jī)制[4]的LSTM指針生成網(wǎng)絡(luò)。

          在每一個(gè)step中,解碼器從如下動(dòng)作中選擇1種:

          1、從詞匯表V中選擇一個(gè)token(SQL關(guān)鍵字)

          2、從問(wèn)題Q中復(fù)制一個(gè)token

          3、從模式S中復(fù)制一個(gè)組件(字段名、表名、單元值)

          從數(shù)學(xué)定義上分析,在每一個(gè)時(shí)刻   ,給定解碼狀態(tài)   和編碼表示   ,按照[4]中的方式計(jì)算多頭注意力

             是語(yǔ)義子空間總數(shù)量,   表示從Q或S中復(fù)制相應(yīng)token加入當(dāng)前解碼結(jié)果的權(quán)重

          緊接著,作者給出了由V和輸出分布產(chǎn)生的概率定義:

             是LSTM輸出的概率分布,   是長(zhǎng)度為   序列,只包含   中的問(wèn)題單詞和特殊標(biāo)記[T]、[C](動(dòng)作2、3)。   表示從V生成的概率(動(dòng)作1),   是最終輸出分布。

          03 數(shù)據(jù)集與評(píng)價(jià)指標(biāo)

          作者在WikiSQL、Spider[5]兩份數(shù)據(jù)集上測(cè)試了效果。

          Spider是耶魯大學(xué)發(fā)布的數(shù)據(jù)集,訓(xùn)練/驗(yàn)證/測(cè)試集數(shù)據(jù)庫(kù)不重疊,涵蓋了幾乎所有SQL語(yǔ)法,被公認(rèn)是難度最大的Text2SQL數(shù)據(jù)集。

          預(yù)測(cè)評(píng)價(jià)指標(biāo)上,作者選擇了完全匹配準(zhǔn)確率(Exact Set Match)。模型輸出SQL的各個(gè)子句(select、from、where)需要和標(biāo)注SQL一一匹配。

          04 實(shí)驗(yàn)分析

          實(shí)驗(yàn)部分,作者端到端的訓(xùn)練并測(cè)試了模型在Spider上的表現(xiàn)。

          模型訓(xùn)練

          參數(shù)設(shè)置部分,作者用交叉熵loss、Adam-SGD優(yōu)化器、uncased BERT-large訓(xùn)練模型。為確保訓(xùn)練的穩(wěn)定性,使用了L-inv學(xué)習(xí)率衰減函數(shù)。

          最終訓(xùn)練得到的   在Spider測(cè)試集上取得了65.0%的準(zhǔn)確率,超越了榜單上大部分模型。

          集成版本的   (3個(gè)模型,在解碼的每一個(gè)step對(duì)輸出分布取平均值)將準(zhǔn)確率提升至67.5%,獲得了榜單第3。

          消融實(shí)驗(yàn)

          為了證明BRIDGE各個(gè)子模塊的有效性,作者做了消融分析實(shí)驗(yàn)。

          BERT對(duì)于最終表現(xiàn)有至關(guān)重要的影響,帶來(lái)3倍以上的提升效果。

          此外,在訓(xùn)練過(guò)程中隨機(jī)打亂db中table順序(防止過(guò)擬合)、引入meta-data、bridging機(jī)制都有一定的積極作用。

          其中,bridging機(jī)制對(duì)于Ex-Hard難度的樣本有顯著的提升效果(9%)。

          05 錯(cuò)誤分析

          誤差都去哪了呢?作者用最優(yōu)的BRIDGE模型,隨機(jī)選擇dev上50條預(yù)測(cè)錯(cuò)誤的樣本進(jìn)行了分析。

          有9條樣本屬于假負(fù)樣本(False Negative)。原因在于同一句話可以翻譯成不同的SQL,E-SM指標(biāo)不能發(fā)現(xiàn)這種差異。

          # 例如“oldest age”,可以用兩種SQL表示MAX(age) ORDER BY age DESC LIMIT 1

          剩余錯(cuò)誤中,36%屬于邏輯錯(cuò)誤。由于模型的泛化能力不足,或沒(méi)有結(jié)合上下文“死記”訓(xùn)練集出現(xiàn)的固定模式,導(dǎo)致在select、where子句等處預(yù)測(cè)錯(cuò)誤。

          當(dāng)輸入的文本包含未見(jiàn)過(guò)的單詞時(shí),模型容易不知所措,不能準(zhǔn)確推理這個(gè)詞在數(shù)據(jù)庫(kù)中的含義。作者認(rèn)為“持續(xù)學(xué)習(xí)“是一種有效的解決方案。

          最后,部分文本在推理時(shí)需要結(jié)合常識(shí)才能完成。例如“older than 21”,結(jié)合常識(shí)才能推理出   而不是   。

          06 總結(jié)

          這篇論文提出了BRIDGE模型,與BERT結(jié)合取得了奇效(提升300%)

          作者也在論文中對(duì)比、總結(jié)了許多前人的工作。應(yīng)該說(shuō)這是一篇SQL解析方向非常Robust的paper!

          [1] Xi Victoria Lin, Richard Socher, Caiming Xiong. Bridging Textual and Tabular Data for Cross-Domain Text-to-SQL Semantic Parsing. Findings of theAssociation for Computational Linguistics: EMNLP, 2020: 4870–4888.

          [2] Bailin Wang, Richard Shin, Xiaodong Liu, et al. RAT-SQL: Relation-aware schema encoding and linking for text-to-SQL parsers[C]. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics. ACL, 2020: 7567–7578.

          [3] Jiaqi Guo, Zecheng Zhan, Yan Gao, et al. Towards complex text-to-SQL in cross-domain database with intermediate representation[C]. In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics. ACL, 2019: 4524–4535.

          [4] Ashish Vaswani, Noam Shazeer, Niki Parmar, et al. Attention Is All You Need[C]. Proceedings of the 31st International Conference on Neural Information Processing. NIPS, 2017: 6000-6010.

          [5] Tao Yu, Rui Zhang, Kai Yang, et al. Spider: A Large-Scale Human-Labeled Dataset for Complex and Cross- Domain Semantic Parsing and Text-to-SQL Task[C]. In Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing. EMNLP, 2018: 3911–3921.

          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人草人人看人人摸 | 韩国无码视频 | 精品秘 一区二三区免费 | 欧美爱爱网站 | 亚洲视频,中文字幕 |