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

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

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

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

前人做法

借助BERT完成Text-to-SQL任务的encoder_第1张图片

  1. BERT Encoder
    作者认为Glove还有ELMo效果有限,采用BERT来做一个输入的编码。在这里,作者将BERT应用在question和对应table的col上。句子放在最前面,每个head都采用SEP作为间隔。
    借助BERT完成Text-to-SQL任务的encoder_第2张图片
  2. Pointer network decoder
    完成Encoder以后,采用LSTM-Decoder.
    借助BERT完成Text-to-SQL任务的encoder_第3张图片借助BERT完成Text-to-SQL任务的encoder_第4张图片
    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等等。

你可能感兴趣的:(借助BERT完成Text-to-SQL任务的encoder)