NLP問答任務
相似度和規則匹配,都是早期的方法,現在主流的方法,都是基於生成的方法
結構化資料問答,有兩種形式,一種是知識圖譜形式、一種是關係型資料庫形式。
主要應用在企業中,減少銷售的成本
應用於商業智慧,用於報告生成,解放了財務能力,降低人力成本
結構化資料問答:基於給定的結構化知識庫和自然語言問題,給出問題對應的答案
任務能力:
結構化形式儲存,不盡儲存了問題的知識和答案,這種儲存有利於推理和計算
結構化問答能夠輸出查詢語句,是人類可讀可理解的,相對於其它問答形式,這種是可控的。
表格問題中,一般用語意解析技術(Text-to-SQL)
表格問答:核心技術,將自然語言問題轉成資料庫上可執行的SQL查詢語句
兩大功能:
常用的有兩種,這兩種是不等價的。
分母是問題集合大小N,預測的SQL和標準的SQL相等的問題數量,在判斷相等的時候會忽略順序的影響
這種方式和第一種相比,分子是通過答案相比,這兩種方式是不等價的。
在實際應用在選擇評估方式時,
一般是按資料集化分,要麼問題在訓練集中,要麼在測試集中,多領域是按資料庫劃分的,在一個資料集中
多領域(cross-domain):訓練/測試集使用的資料庫是否相同或交叉,資料集是包含多個資料庫的,每個資料庫有一個領域,每個領域有一個或多個資料庫,資料集劃分時,是按訓練集、測試集劃分的。一個資料庫所有的問題,只能屬於一個集合,要麼屬於訓練集,要麼屬於測試集。這會導致測試集中的資料庫和問題,在訓練集中是沒有見過的。多領域化分,是用來劃分模型的泛化性。同時也給任務帶來很大的挑戰
單/多表(multi-table):構成資料庫的表的數量,多表涉及到表的檢索,一張表為單表,涉及多張表的表示多表
簡單/複雜:從SQL角度評估,是否包含高階從句、集合操作、巢狀等,簡單 SQL只包含SELECT WHERE(答案、條件),複雜:有可能包含排序、分組、集合操作
CSpider 資料庫是英文,問題是中文
基於規則的方式,已經不用了,主流的有以下兩種
有監督方法:以生成的SQL是否正確,來指導模型的學習,這種學習方法依賴於標準資料,由於正確的SQL語句標註比較困難
弱監督方法:給出資料庫問題,以及問題對應的答案,標註答案要比標註SQL相對容易很多,在這情況下,SQL是中間輸出,會以答案指導SQL的生成,能夠輸出正常答案的SQL就是正確的。這種需要在整個資料庫中去搜尋合理或正常的正確語句,搜尋空間比較大。這種方式比較適合簡單的資料集,複雜的資料集很難執行下去。
https://github.com/salesforce/WikiSQL
為了各類資料集都適用,後面都是基於有監督方法的介紹
encode-decoder 中英文翻譯,中文句子翻譯成英文句子,
encode 把中文句子對映到表示空間上,完成編碼的作用
decode 從表示空間上,解碼出對應的英文句子
從下往上看,把多輸入進行拼接,自然語言和DB Schema 的拼接,將拼接輸入給 Encoder 編碼器,解碼器按順序輸出每個元素,直到遇到結束符,最終生成序例(SQL語句)
Decode 引入了兩個開關,generate、copy 多領域資料集在劃分訓練集和測試集時,是按資料庫進行化分的,測試集中的一些問題在訓練集中沒有見過,如何在生成的時候把這些沒有見過的生成出來。輸出資訊,應該包含在輸入定義的 db schema 資訊中,這時候就可以把定義的輸入資訊copy到輸出資訊中。
對於 SQL 關鍵詞,是生成的,資料庫和問題中的元素是copy的
領域泛化:測試集中資料庫未在訓練集中出現過
輸出結構化:生成的SQL語句在資料庫上可執行,即滿足資料庫結構、SQL語法
解決方案
編碼:Relation-awarerepresentation 利用匹配關係強化編碼方式
解碼:Grammar-baseddecoder 利用語法解碼,保證生成的SQL是滿足語法的
Encode => 隱式表示 => Decode
輸入部分仍然是自然語言+Schema的拼接,在這邊為了更好的識別條件值,增加了條件值的一個拼接,
使用基礎的編碼器,對資料進行一個表示,得到一個隱式表示,
在基礎編碼器上,又增加了一個 Relation-aware Transformer Encoder:用匹配關係增強表示,
接下來在Decode中引入了 Grammar-based Decoder 語法解碼,這種解碼不是在每次輸出時輸出一個個元素,而是輸出的一個語法序列。
https://github.com/PaddlePaddle/PaddleNLP/tree/develop/examples/text_to_sql
自然語言和資料庫Schema進行匹配對映,把匹配資訊構成匹配關係矩陣,這個矩陣作為後面模組的輸入,
先對自然語言進行分詞
問題中的每個詞與DB Schema中的成分進行匹配,標註出匹配方式和程度,構建出關係矩陣,顏色表示匹配關係,不同的顏色表示不同的關係
基本思想:根據SQL語法設定上下文無關文法,將SQL生成看作文法序列生成,即文法選擇過程
不再生成單獨的 query元素,而是生成符合SQL語言的語法,最後生成的語法序列是可以構成 sql query的。
是經過領域泛化的,換一個庫不需要重新標註,除非需要很高的準確率。
應用範例演示:https://ai.baidu.com/unit/v2