
憶往昔歲月
“你還記得第一份實習,是做什么嗎?”
我的第一份算法實習工作,是處理數(shù)據(jù)。準確地說,是每天手敲30句+SQL,從對話數(shù)據(jù)庫中分析用戶高頻問題、接通率等信息。
手寫SQL是重復性很強的工作,一不小心容易出錯,最初的兩個月每天為此忙得焦頭爛額。
剛剛?cè)腴TNLP的我天真地想著,“要是模型可以自動生成SQL該多好呀”!
碩士期間,有幸在實驗室從事了半年多Text2SQL的科研工作。2021年,我很高興地看到Text2SQL技術,即通過算法將人的自然語言轉(zhuǎn)換為數(shù)據(jù)庫查詢語言SQL,在部分場景中落地應用已經(jīng)成為了現(xiàn)實。
談談自動寫SQL的背景
Text2SQL起源于上世紀90年代,是自然語言處理語義解析領域的子任務,核心目標是打破人與結(jié)構(gòu)化數(shù)據(jù)之間的壁壘,讓普通用戶可以通過自然語言描述完成復雜數(shù)據(jù)庫的查詢工作。
例如我有一張“歌手”相關的表格,歌迷和狗仔隊們想知道:
Q:“周杰倫和林俊杰最近的演唱會是什么時候?”
Text2SQL模型自動將問題轉(zhuǎn)換為SQL語言:
A:“SELECT 近期演唱會 FROM singer WHERE 姓名 = 周杰倫 OR 姓名 = 林俊杰”
再返回查詢結(jié)果:“北京-01.08”和“上海-04.28”

簡單的說,以前想從數(shù)據(jù)庫里拿數(shù)據(jù)或者分析內(nèi)容,用戶要純手工實現(xiàn)。有了Text2SQL,相當于我雇了一個不花錢不會累的員工(ai模型),只要發(fā)布命令(Text),它就會幫我寫好SQL。

聊聊技術實現(xiàn)
明白了背景,我們來聊聊技術實現(xiàn)問題。和分類、匹配等很多NLP任務類似,Text2SQL也經(jīng)歷了從早期規(guī)則匹配,到現(xiàn)在借助深度學習技術的發(fā)展歷程,濃縮了一代又一代科學家們的心血。