天天看點

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

歡迎關注“百度NLP”官方微信公衆号,及時擷取更多自然語言處理領域的技術幹貨!

原文連結:https://mp.weixin.qq.com/s/5lTLW5OOuRMo2zjbzMxr_Q

在上篇中,我們結合執行個體向大家介紹了語義解析技術中的Text-to-SQL任務,明确了該任務的研究動機,并從相關資料集和模型兩方面講解了Text-to-SQL的技術進展。

本篇,我們就資料集DuSQL的建設和模型DuParser的建構,向大家介紹百度在Text-to-SQL技術方面的研究,并展示百度在ToB客服業務和搜尋業務中對該技術的應用,同時也對該技術面臨的挑戰和未來發展進行了一些思考。

 百度對Text-to-SQL技術的研究

百度在一些實際業務中需要用到Text-to-SQL技術,比如基于表格的問答、ToB的客服業務等,是以結合實際應用,在資料集建設及模型建構方面做了一些工作,有一定的技術積累。

1、資料集DuSQL

由表1可見,目前Text-to-SQL資料集大部分是英文資料集,中文資料集隻有NL2SQL資料集和CSpider資料集。

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

表1

其中CSpider資料集是英文資料集Spider的翻譯版本,中英文化差異導緻問題用語和知識上存在差異,比如行政區劃相關的資料在Spider資料集上表示為“州、縣、市”等,在CSpider資料集上則表示為“省、市、縣”等,這種差異性降低了該資料集在實際應用中的價值。

NL2SQL資料集中的問題相對簡單,問題類型為基于單/多條件查詢比對的答案檢索,能夠解決如“3000元以下的手機有哪些”等簡單問題,但無法解決“便宜的手機有哪些”、“蘋果8手機256G比128G貴多少”這樣較難的問題。在實際應用中,後種難度較高的問題占比很高,尤其是在商業智能(BI)和購物相關咨詢的業務中。

我們從實際應用中随機抽取使用者問題,就問題解決所需要的操作對問題類型進行了人工分析,結果如表2所示,可以看出涉及到計算、排序、比較等操作的問題有一定的占比。

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

表2

為了更好地了解這些問題類型,我們列舉了一些問題類型及對應的問題執行個體(資料庫見上篇圖1),見表3:

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

表3: 問題類型及執行個體

為了更好地覆寫實際應用中常見的問題類型,使建構的資料集在實際應用中發揮更大的價值,我們基于實際應用分析建構了多領域、多表、包含複雜問題的資料集DuSQL。

資料集建構主要分為兩大步驟:資料庫建構和<問題,SQL查詢語句>建構。在資料庫建構中,要保證資料庫覆寫的領域足夠廣泛,在<問題, SQL查詢語句>建構中,要保證覆寫實際應用中常見的問題類型。

資料庫主要來自百科(包括三元組資料和百科頁面中的表格)、權威網站(如國家統計局、天眼查、中國産業資訊網、中關村線上等)、各行業年度報告以及論壇(如貼吧)等。

從這些網站挖掘到表格後,我們按表格的表頭對同類表格進行了聚類,并根據表格中的實體連結等資訊建構表格之間的關聯,最終保留了813張表格,分為200個資料庫。由于很多表格的内容較敏感,我們僅使用了表格的表頭,對表格内容進行了随機填充,無法保證事實性。

基于一個半自動方案建構<問題, SQL查詢語句>,首先需要基于SQL文法自動生成SQL查詢語句和對應的僞語言問題描述,然後通過衆包方式将僞語言問題描述改寫為自然語言問題。在自動生成SQL查詢語句時,我們設計了覆寫所有常見問題類型的SQL規約文法,最終建構了近2.4萬的資料。

表4展示了DuSQL資料集與其他多領域資料集的對比情況。其中,時間計算屬于常數計算,引入常量TIME_NOW(表示目前時間),比如資料庫Schema為“{公司名稱, 成立年份, 員工數, …}”,問題為“XX公司成立多少年了”, SQL查詢語句為“Select TIME_NOW – 成立年份 Where 公司名稱=XX”。在實際應用中,常數計算中的時間計算需求較大,是以我們建構了相關資料。

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

表4:CSpider來自Spider訓練集和開發集的翻譯,其統計使用Spider的統計

2、模型DuParser

基于實際應用,百度研發了一種基于表格元素識别和文法組合的解析算法DuParser,要求其在實際應用中能夠基于使用者提供的資料或回報達到快速疊代、效果可解釋、可控的要求,解析算法架構見圖5(對應的執行個體見圖6,不同顔色的箭頭表示了流程中各子產品對應輸入輸出)。

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

圖5

首先,“成分映射”子產品完成問題中表格相關成分識别(圖6黑色箭頭表示的流程),使用者提供的資料包括同義詞、應用常見問題形式等,該部分可充分利用使用者提供的資料進行效果優化。然後對識别的成分進行SQL關鍵詞識别(圖6紫色箭頭表示的流程),該部分算法基于Sequence-to-set模型改進。

前兩個過程将問題中被映射成功的詞彙替換成相應的符号,輸入到基于文法組合的解析算法中,該部分的替換使後面子產品與具體資料庫無關,這提升了模型對新資料庫的泛化能力。

最後,在基于文法組合的語義解析階段,通過改造CYK算法,DuParser建構了一個自下向上的解析架構(圖6藍色箭頭表示的流程),并且,在文法組合過程中通過引入SQL片段與對應問題片段相似度比對來選擇最優文法。

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

圖6:黑色箭頭表示成分映射,紫色表示标簽識别,藍色表示文法組合

該架構有以下幾個優點:

首先,與端到端的神經網絡模型相比,它具有良好的可解釋性和效果可控性,容易進行系統調試和針對性效果優化;其次,它可以充分利用使用者提供的資料及回報,在使用者任務上快速啟動且加快疊代優化速度;最後,該架構可以做到語言無關、領域無關,有很好的擴充能力。

該模型在單表資料集合上進行了效果驗證,結果見表5(使用的預訓練模型與對應的SOTA一緻)。

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

表5

注:

1)NL2SQL資料集的SOTA是開源最好模型[20]在開發集上的結果;

2)WikiSQL資料集的SOTA模型是不加執行指導的X-SQL[13]模型;

3)Spider單表來自Spider資料集中的單表部分資料,SOTA模型是IRNet[16],評估了其中單表上的準确率(非bert版本);

4)百度應用資料會針對資料集做優化,重點是“同義詞”部分。

 百度對Text-to-SQL技術的應用

Text-to-SQL技術主要的應用場景是基于資料庫的問答。在實際的應用中,百度将該技術應用于ToB客服業務和搜尋業務中。

對于ToB業務,以UNIT平台為輸出接口,支援結構化問答業務(參見下方連結)。支援的業務應用于車載對話系統、企業智能報表生成系統、電話客服系統等,圖7給出落地于車載對話系統中的案例。

連結:

https://ai.baidu.com/forum/topic/show/957042

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

圖7

對于搜尋業務,我們探索了搜尋中的計算類問答(圖8)和企業表格問答(圖9)。

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

圖8

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

圖9

 目前挑戰及未來思考

Text-to-SQL技術在實際應用中可直接使用,但由于實際應用領域覆寫廣泛,模型需要滿足領域無關、語言無關、問題無關。

目前模型在中間表示、樹形解碼、圖網絡模組化資料庫等方向均有探索,并取得了一定的成效,但對一些複雜操作的解決效果還不夠好,可參見Spider資料集标注為“難”和“極難”的資料效果。同時,在實際應用中,還需要考慮以下問題:

  • 表格的識别及規範化表示:表格預設以第一行為表頭,但在實際挖掘表格中,有三種情況:以第一行為表頭,以第一列為表頭,或者第一行和第一列共同表示表格;挖掘的表格存在資訊缺失問題,如表名缺失、表格值不全等;同時,面對多個表格時缺失表間連結關系。
  •  外界知識的利用:有一些常識資訊不包含在表格中,如排序操作的方向判斷(列為“出生日期”,問題為“年齡最大的員工”)、表格值進制轉換(列為“人口(億)”,問題為“人口超5千萬的城市”)等,這些資訊需要引入外界知識來協助SQL生成。
  • 融進漸進式對話:對于使用者的歧義表達和模糊表達,需要有“提問-回報-再提問”的過程,這類問題往往需要通過多輪對話解決,而使用者的問題通常是上下文相關的,是以需要模型具備基于上下文的了解和分析能力。

  參考文獻

[13] X-SQL: Reinforce Context Into Schema Representation (Pengcheng He, Yi Mao, Kaushik Chakrabarti, Weizhu Chen. CoRR2019)

[16] Towards Complex Text-to-SQL in Cross-Domain Database with Intermediate Representation (Jiaqi Guo, Zecheng Zhan, Yan Gao, Yan Xiao, Jian-Guang Lou, Ting Liu, Dongmei Zhang. ACL2019)

[20] https://github.com/beader/tianchi_nl2sql

百度自然語言處理(Natural Language Processing,NLP)以『了解語言,擁有智能,改變世界』為使命,研發自然語言處理核心技術,打造領先的技術平台和創新産品,服務全球使用者,讓複雜的世界更簡單。

語義解析 (Text-to-SQL) 技術研究及應用 下篇 百度對Text-to-SQL技術的研究 百度對Text-to-SQL技術的應用 目前挑戰及未來思考

繼續閱讀