Page 272 - 《软件学报》2025年第5期
P. 272

2172                                                       软件学报  2025  年第  36  卷第  5  期


                 语言模型    (如  BERT) 构建一个二分类器, 从非结构化文本和表格文本组成的句子集合                    S  中挑选前   top n  个检索句
                 子. 给定一个问题     Q, 检索到的相关句子集合       C  可以根据公式    (2) 的事实指标集合     I 从  S  中得到:

                                                I = argsort({P θ (C i |Q)|i ∈ N}[: top n ])           (2)
                 其中,   C i  是第  i 个句子, N  是  S  中每个句子的指标集合, θ  是分类器参数,    P θ (C i |Q) 是分类器判定  C i  为支撑句子  (支
                                                                             {P θ (C i |Q)|i ∈ N} 进行降序排序, 并返
                 撑单元格句子或者回答问题所必需的文本句子) 的概率,                  argsort 指对概率集合
                 回与这些概率相对应的句子指标.

                 2.2.3    生成器
                    本文旨在通过引入多粒度单元格语义对比机制, 提升生成器区分支撑单元格句子和干扰单元格句子的能力.
                 因此, 本文首先介绍主流的生成器, 而基于对比机制的生成器将在第                        3  节介绍. 主流的生成器采用        encoder-
                 decoder 架构来做数值推理, 其以预训练语言模型为核心的               encoder 编码检索器返回的检索句子集合          C  和问题  Q.
                 然后由一个    LSMT  及  attention  机制构成的  decoder 来解码计算程序   G = {g i } N   , 其中  G  包含定义的操作符, 操作数
                                                                           i=0
                 及特殊符号    (例如代表第    i 步计算结果的特殊符号#i) 等构成元素. 这里的           g i  表示计算程序中的第     i 个构成元素. 生
                 成器一般通过计算程序        G  作为监督学习信号, 从而指导模型优化其参数配置. 公式                (3) 显示了生成器推理过程:

                                                            M ∏
                                                 P ϕ (G|C, Q) =  P ϕ (g t |C,Q,g <t )                 (3)
                                                           t=0
                 其中,   ϕ 是生成器参数, M   是计算程序长度.

                 3   基于多粒度单元格语义对比的生成器
                    文本和表格的数值推理问答中, 模型需要基于单元格句子进行数值推理, 然后生成包含单元格数值的计算程
                 序. 然而, 生成器区分支撑和干扰单元格句子是有挑战的, 主要理由是: (1) 由模板构造的单元格句子基本上由简短
                 的行名和列名组成, 但这些行名和列名在形式上差异很小, 难以提供足够的信息区分它们的语义; (2) 单元格句子
                 可能仅相差一个行名或者列名, 这进一步减少了它们之间的语义差异                      [6] ; (3) 这些简短的行名或者列名可能和问题
                 有重合词汇, 也会导致生成器难以区分它们的语义; (4) 由于标注成本昂贵, 导致训练数据是有限的. 同时, 模板句
                 子与预训练语言模型的训练语料之间存在差异. 这些都可能会使得生成器难以学习到高质量的单元格句子语义表
                 示, 进而导致生成器容易基于干扰单元格数值生成错误的计算程序. 对比学习的一个核心思想是拉近同类表示的
                 距离, 拉远不同类别表示的距离, 优化的表示可以进一步提升模型的性能                      [20−23] . 受益于对比学习的思想, 本文期望
                 用对比学习方式来优化支撑和干扰单元格句子语义表示, 拉远它们的语义表示距离, 进而帮助生成器区分它们. 除
                 了由粗粒度角度出发考虑单元格句子整体语义差别, 同时本文也从细粒度角度出发利用单元格句子语义构成元
                 素  (行名, 列名和单元格数值) 来告诉生成器模型更具体的差异. 因此, 本文提出了一种多粒度单元格语义对比
                 (MGCC) 方法, 来帮助生成器区分支撑和干扰单元格句子.
                    后文图   4  展示了基于多粒度单元格语义对比的生成器架构. 首先生成器                   encoder 对问题和检索返回的句子进
                 行编码. 然后, 本文提出的多粒度单元格语义对比用于优化                  encoder 的输出. 基于这些优化后的输出, decoder 可以
                 更好地区分支撑单元格句子和干扰单元格句子表示. 具体地, 本文将在第                      3.1 节介绍图  4 中  encoder 的输入. 图  4 中
                 的  SemContrast 是粗粒度单元格语义对比, 该部分将在第        3.2 节介绍. 图  4 中的  RowContrast, ColContrast 和  ValContrast
                 分别代表细粒度单元格语义构成元素的行名对比, 列名对比和单元格数值对比, 本文将在第                             3.3  节介绍这些内容.
                 此外, 这里提到的     decoder 与第  2.2.3  节介绍的  decoder 是一致的.

                 3.1   多粒度表格单元格语义对比的生成器输入设计
                    为了获得多粒度单元格语义对比的正负例表示, 本文对生成器的输入做了改进. 给定一个问题                               Q, 通过检索,

                 本文可以获得前      top n  个检索句子  C =< C 1 ,C 2 ,...,C top n  > , 这里  C i  是第  i 个检索句子. 不同于之前的生成器直接拼
                 接  Q  和  C, 这里本文在每个检索句子      C i  后面拼接一个特殊单词      [SEP], 其可以作为每个    C i  的表示  [4] . 具体输入为
                                                 [SEP] . 之后本文将拼接结果作为                         H  .
                                                                                              c
                 [CLS] Q [SEP] C 1 [SEP] C 2 [SEP] ... C top n            encoder 输入, 得到表示
   267   268   269   270   271   272   273   274   275   276   277