• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      聊天式數(shù)據(jù)查詢的技術(shù)方案探討

      2019-10-21 12:38王悅林
      關(guān)鍵詞:語(yǔ)義解析解決方案

      王悅林

      摘要:人工智能領(lǐng)域近年發(fā)展十分迅猛,其中自然語(yǔ)言處理(NLP)領(lǐng)域從2016年起進(jìn)入高速發(fā)展期,以BERT為代表的各種新模型層出不窮,解決了文本數(shù)據(jù)分析和信息提取的問題。其中有一個(gè)子領(lǐng)域,即NL2SQL領(lǐng)域,是解決如何用自然語(yǔ)言問句進(jìn)行數(shù)據(jù)庫(kù)查詢的問題。具體方案是通過語(yǔ)義解析,將自然語(yǔ)言問句翻譯成SQL,再送到數(shù)據(jù)庫(kù)中進(jìn)行查詢,大大降低了數(shù)據(jù)查詢的難度,提升了交互友好度和查詢效率。本文探討具體的技術(shù)解決方案。

      正文

      NL2SQL領(lǐng)域目前的數(shù)據(jù)集英文以WikiSQL和Spider為主,中文有追一科技提供的競(jìng)賽數(shù)據(jù)集。WikiSQL數(shù)據(jù)集支持單表、單列、多Where子句查詢,現(xiàn)有模型可以較好地支持。而耶魯大學(xué)提供的Spider數(shù)據(jù)集要求支持Group By、Order By、Having,還需要Join不同表,這更貼近于真實(shí)場(chǎng)景,也帶來了更大的難度。追一科技的競(jìng)賽數(shù)據(jù)集的難度介于兩者之間,要求支持多列查詢,支持多Where子句間不同操作符操作。本文以追一科技數(shù)據(jù)集的難度為準(zhǔn),探討解決方案。

      1.主流模型

      目前業(yè)內(nèi)的三大技術(shù)解決方案依次是SQLnet,SQLova和X-SQL,其中X-SQL在WikiSQL數(shù)據(jù)集上測(cè)試效果最好,但仍然滿足不了追一科技數(shù)據(jù)集的要求。我們主要參考后兩個(gè)模型,提出我們的解決方案。

      2.方案思路

      解決此問題有兩大思路,增強(qiáng)學(xué)習(xí)和解耦任務(wù)。增強(qiáng)學(xué)習(xí)是端到端的解決方案,比較先進(jìn),但實(shí)際應(yīng)用尚不成熟,達(dá)不到準(zhǔn)確率的要求。因此解耦任務(wù)的思路成為首選。解耦的思路是將任務(wù)拆解為8個(gè)子任務(wù),分別是

      Select-Number:選擇幾列

      Select-Column:選擇哪一列

      Select-Aggregation:使用什么聚合函數(shù)

      Where-Number:有幾個(gè)條件

      Where-Column:篩選條件是針對(duì)哪幾列

      Where-Operator:各個(gè)條件的操作符

      Where-Value:各個(gè)條件的條件值

      Where-Operator:各個(gè)條件之間的關(guān)系。

      為了將整體準(zhǔn)確度提升到80%以上,需要8個(gè)子任務(wù)的平均準(zhǔn)確度達(dá)到97.5%,這對(duì)方案提出了非常高的要求。

      整體解決方案分為三部分:語(yǔ)義解析模塊、執(zhí)行引導(dǎo)模塊和SQL增強(qiáng)模塊。以下分別加以說明。

      3.語(yǔ)義解析模塊

      語(yǔ)義解析模塊是整個(gè)解決方案最重要的部分,共分為三個(gè)層次:編碼層、語(yǔ)義增強(qiáng)層和輸出層。

      編碼層采用2019年7月由Facebook公司推出的RoBERTa作為基礎(chǔ)預(yù)訓(xùn)練模型。和2018年10月谷歌公司推出的BERT相比,此模型在CoLA和SST-2兩項(xiàng)任務(wù)中分別領(lǐng)先16個(gè)百分點(diǎn)和3個(gè)百分點(diǎn)。而這兩個(gè)任務(wù)是評(píng)判文本語(yǔ)義解析能力的重要指標(biāo)。RoBERTa已經(jīng)有支持中文的版本。

      我們也考慮了其它的可能性,例如MT-DNN,XLnet,ERNIE2.0和DistilBERT,經(jīng)過對(duì)可行性的分析和對(duì)性能的比較,最終選用RoBERTa。

      語(yǔ)義增強(qiáng)層的思路是將問題的文本表示和組成數(shù)據(jù)列的token的文本表示進(jìn)行融合,將融合后的結(jié)果結(jié)合注意力機(jī)制,然后進(jìn)行數(shù)學(xué)相加,最后再加上問題的文本表示,以得到數(shù)據(jù)列的文本表示。

      其中將問題與token進(jìn)行融合的時(shí)候,加入兩個(gè)多維訓(xùn)練參數(shù)(m*d),以構(gòu)成神經(jīng)網(wǎng)絡(luò)層。那么數(shù)學(xué)上,兩個(gè)多維表示如何變成一個(gè)注意力參數(shù)的呢?問題和token都是((m*d)*(d*1)),點(diǎn)積后成為(m*1)向量,再次轉(zhuǎn)制和點(diǎn)積后成為(1*1)向量,即一個(gè)注意力參數(shù)。

      最后再次加上問題的文本表示,是為了增強(qiáng)問題表示的比重,將問題和toke比重由1:1改為2:1,以增強(qiáng)最終效果。此處問題權(quán)重設(shè)為0.5。

      到此已經(jīng)增加了一層神經(jīng)網(wǎng)絡(luò)層。在輸出層為所有的子任務(wù)還要再增加一層神經(jīng)網(wǎng)絡(luò)層,以Where Number子任務(wù)為例進(jìn)行說明。這個(gè)子任務(wù)是二分類模型,可選值為1或2,而是否有Where子句由empty column指定。此子任務(wù)增加一層MLP層。其余子任務(wù)由不同的公式加上神經(jīng)網(wǎng)絡(luò)參數(shù)計(jì)算。所有輸出層的損失函數(shù)都是交叉熵?fù)p失函數(shù)。

      這些子任務(wù)并不是每個(gè)獨(dú)立進(jìn)行訓(xùn)練,在每一個(gè)batch size里,所有子任務(wù)按順序依次正向傳播,然后計(jì)算損失函數(shù),按照梯度下降原理,進(jìn)行整體反向傳播,更新參數(shù),使整體損失函數(shù)值最低。

      4.執(zhí)行引導(dǎo)模塊

      執(zhí)行引導(dǎo)模塊參考arxiv.org/abs/1807.03100直接進(jìn)行增強(qiáng),可有效提升執(zhí)行準(zhǔn)確率2%左右。

      SQL增強(qiáng)模塊

      SQL增強(qiáng)模塊在把生成的SQL送到數(shù)據(jù)庫(kù)之前,進(jìn)行調(diào)整如下:

      ●對(duì)于表中的類別型列數(shù)據(jù),需要將生成的列值與數(shù)據(jù)庫(kù)里的此列的類別值進(jìn)行相似度匹配,以替換成正確值。例如解析后的Where Value為“黃蜂”,而數(shù)據(jù)庫(kù)里的數(shù)據(jù)為“大黃蜂”,則修改為“大黃蜂”。

      ●如果兩個(gè)Where子句的列名相同,要檢查兩個(gè)Where Value是否相同,相同的話將其中一個(gè)替換為相似度最高的另一個(gè)值。

      ●如果Where Value里包含中文“和”字,則拆成兩個(gè)值

      ●如果問題中有中文“或”字,或者兩個(gè)Where子句的列名相同,則兩個(gè)Where子句的關(guān)系為“or”,其它情況均為“and”。

      5.總結(jié)

      以上是整體設(shè)計(jì)及方案的關(guān)鍵點(diǎn)。綜合以上方案,可以有效提升SQL轉(zhuǎn)化的準(zhǔn)確度,取得較好效果。

      參考文獻(xiàn):

      [1] Matthew E Peters,Mark Neumann,Mohit Iyyer,Matt Gardner,Christopher Clark,Kenton Lee,and Luke Zettlemoyer.2018.Deep contextualized word representations.arXiv preprint arXiv:1802.05365.

      [2] Jason Phang,Thibault Fevry,and Samuel R Bowman.2018. Sentence encoders on stilts:Supplementary training on intermediate labeled-data tasks.arXiv preprint arXiv:1811.01088.

      [3] Alec Radford,Karthik Narasimhan,Tim Salimans,and Ilya Sutskever.2018.Improving language understanding by generative pre-training.

      [4] Pranav Rajpurkar,Jian Zhang,Konstantin Lopyrev,and Percy Liang.2016.Squad:100,000+ questions for machine comprehension of text.pages 2383–2392.

      [5] Aarne Talman and Stergios Chatzikyriakidis.2018.Testing the generalization power of neural network models across nli benchmarks.arXiv preprint arXiv:1810.09774.

      (作者單位:聯(lián)想集團(tuán))

      猜你喜歡
      語(yǔ)義解析解決方案
      韓國(guó)語(yǔ)“容入-離析”關(guān)系表達(dá)及認(rèn)知語(yǔ)義解釋
      解決方案和折中方案
      一種端口故障的解決方案
      基于數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)傾斜解決方案研究
      睡夢(mèng)解析儀
      復(fù)合場(chǎng)中類拋體運(yùn)動(dòng)解析
      “Fe2+與Fe3+”相關(guān)解析
      對(duì)稱巧用解析妙解
      2016中國(guó)大數(shù)據(jù)·最佳解決方案獎(jiǎng)
      金华市| 嘉鱼县| 台中市| 聂拉木县| 汤阴县| 青州市| 湟中县| 万山特区| 宁蒗| 威宁| 花莲县| 金华市| 泗水县| 霍邱县| 扶余县| 法库县| 定边县| 佛坪县| 嫩江县| 出国| 常熟市| 久治县| 德阳市| 芦山县| 张家口市| 涟源市| 康马县| 天气| 垦利县| 交口县| 雷州市| 凉城县| 包头市| 阳春市| 保德县| 大埔县| 陆川县| 南郑县| 云龙县| 和田市| 霍邱县|