忆往昔岁月
“你还记得第一份实习,是做什么吗?”
我的第一份算法实习工作,是处理数据。准确地说,是每天手敲30句+SQL,从对话数据库中分析用户高频问题、接通率等信息。
手写SQL是重复性很强的工作,一不小心容易出错,最初的两个月每天为此忙得焦头烂额。
刚刚入门NLP的我天真地想着,“要是模型可以自动生成SQL该多好呀”!
硕士期间,有幸在实验室从事了半年多Text2SQL的科研工作。2021年,我很高兴地看到Text2SQL技术,即通过算法将人的自然语言转换为数据库查询语言SQL,在部分场景中落地应用已经成为了现实。
谈谈自动写SQL的背景
Text2SQL起源于上世纪90年代,是自然语言处理语义解析领域的子任务,核心目标是打破人与结构化数据之间的壁垒,让普通用户可以通过自然语言描述完成复杂数据库的查询工作。
例如我有一张“歌手”相关的表格,歌迷和狗仔队们想知道:
Q:“周杰伦和林俊杰最近的演唱会是什么时候?”
Text2SQL模型自动将问题转换为SQL语言:
A:“SELECT 近期演唱会 FROM singer WHERE 姓名 = 周杰伦 OR 姓名 = 林俊杰”
再返回查询结果:“北京-01.08”和“上海-04.28”
简单的说,以前想从数据库里拿数据或者分析内容,用户要纯手工实现。有了Text2SQL,相当于我雇了一个不花钱不会累的员工(ai模型),只要发布命令(Text),它就会帮我写好SQL。
聊聊技术实现
明白了背景,我们来聊聊技术实现问题。和分类、匹配等很多NLP任务类似,Text2SQL也经历了从早期规则匹配,到现在借助深度学习技术的发展历程,浓缩了一代又一代科学家们的心血。