借助BERT完成Text-to-SQL任务

本文介绍如何使用BERT和Pointer-networks完成Text-to-SQL任务,通过改进的编码器提升SQL生成的准确性。文章详细阐述了前人的做法及当前模型的结构,并讨论了BERT在处理SQL特有词汇时遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

借助BERT完成Text-to-SQL任务的encoder

已经完成了BERT的环境安装,下面想借助BERT和Pointer-networks来验证BERT的作用和效果。

前人做法

在这里插入图片描述

  1. BERT Encoder
    作者认为Glove还有ELMo效果有限,采用BERT来做一个输入的编码。在这里,作者将BERT应用在question和对应table的col上。句子放在最前面,每个head都采用SEP作为间隔。
    在这里插入图片描述
  2. Pointer network decoder
    完成Encoder以后,采用LSTM-Decoder.
    在这里插入图片描述在这里插入图片描述
    a. where_value中只确定q的起始位置和终止位置,默认连续。
    b. 对于有很多tok组成的column, 用第一个tok的编码信息代替。

Our Encoder BERT Model

  1. 代码中有四种输入序列, question_seq, source_seq, type_seq, newtype_seq。
    question_type
    [u’what’, u’is’, u’the’, u’lowest’, u’viewers’, u’(’, u’m’, u’)’, u’when’, u’the’, u’share’, u’is’, u’more’, u’than’, u’13’, u’?’]
    sourece_seq
    [[’<\UNK>’], [’<\END>’], [‘WHERE’], [‘AND’], [‘EQL’], [‘GT’], [‘LT’], [’<\BEG>’], [‘None’], [‘max’], [‘min’], [‘count’], [‘sum’], [‘avg’], [‘SELECT’], [u’episode’], [u’air’, u’date’], [u’rating’], [u’share’], [u’18-49’, u’(’, u’rating/share’, u’)’], [u’viewers’, u’(’, u’m’, u’)’], [u’rank’, u’(’, u’timeslot’, u’)’], [u’rating’, u’||’, u’<\NUMBER>’], [u’share’, u’||’, u’<\NUMBER>’], [u’18-49’, u’(’, u’rating/share’, u’)’, u’||’, u’<\NUMBER>’], [u’viewers’, u’(’, u’m’, u’)’, u’||’, u’<\NUMBER>’], [u’rank’, u’(’, u’timeslot’, u’)’, u’||’, u’<\NUMBER>’]]
    type_seq
    [‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘SQL’, ‘column’, ‘column’, ‘column’, ‘column’, ‘column’, ‘column’, ‘column’, ‘cell’, ‘cell’, ‘cell’, ‘cell’, ‘cell’]
    newtype_seq
    [‘none’, ‘none’, ‘none’, ‘none’, ‘none’, ‘number’, ‘number’, ‘none’, ‘none’, ‘number’, ‘number’, ‘none’, ‘number’, ‘number’, ‘none’, u’text’, u’text’, u’number’, u’number’, u’number’, u’number’, u’number’, u’number’, u’number’, u’number’, u’number’, u’number’]

  2. 存在的问题
    太多SQL特有的词汇(EQL, GT, LT), BERT的vocab中不存在。会标为unk或者尝试进行分解为substring等等。

### 关于信息系统项目管理师高级与GPT模型的关系 对于信息系统项目管理师而言,在高级阶段深入理解并应用像GPT这样的先进人工智能技术是非常有益的。这不仅有助于提升个人技能,还能为企业带来创新解决方案。 #### GPT作为工具支持决策制定 在现代信息技术环境中,利用自然语言处理(NLP)能力强大的预训练模型如GPT可以极大提高工作效率。通过构建特定领域内的对话系统或自动文档生成器来辅助日常管理和沟通工作[^1]。例如,项目经理可以通过定制化的聊天机器人快速查询历史案例、最佳实践指导方针等重要资源;也可以借助这些平台自动生成会议纪要、进度报告等内容,减少重复劳动时间成本的同时确保信息准确性。 #### 数据库集成与优化——以DB-GPT为例 针对大型企业级应用程序中的复杂数据库操作需求,DB-GPT 提供了一个全新的视角和技术路径。该项目实现了RAG(检索增强生成)、SMMF(多模型管理框架)等功能模块,并探索了Text2SQL 自动化微调机制,这些都是为了更好地服务于结构化数据查询场景下的智能化转换任务。特别是当涉及到海量异构源之间的关联分析时,这类基于深度学习算法设计出来的组件显得尤为重要[^2]。 #### 嵌入式表示法助力语义理解 从基础层面来看,掌握好GPT所采用的独特编码方式即嵌入(embedding),可以帮助专业人士更加深刻地认识计算机是如何解析人类语言表达的意义所在。通过对输入序列进行分词处理后再映射至高维空间向量表征的过程,使得机器具备了一定程度上的上下文感知能力和泛化性能,这对于开发高质量的应用程序至关重要[^3]。 ```python import torch from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') text = "Example sentence to demonstrate embedding." encoded_input = tokenizer(text, return_tensors='pt') output = model(**encoded_input) print(output.last_hidden_state[:, 0]) ``` 此代码片段展示了如何使用Hugging Face Transformers库加载BERT模型并对给定文本计算其嵌入向量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值