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

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


                                     L value  这  3  部分组成, 具体见公式  (7):
                 粒度单元格数值对比损失

                                                                                                      (7)
                                                    L fg = L row +L col +L value
                          L t ∈ {L row ,L col ,L value } , 本文使用  InfoNCE  损失拉近问题表示与支撑单元格句子语义构成元素表示之
                    对任意
                 间的距离, 同时拉远问题表示与干扰单元格句子语义构成元素表示之间的距离, 具体见公式                            (8):

                                                                       
                                                                       
                                                     ∑       e sim(u † ,q)/τ   
                                                                       
                                                                       
                                                L t = −  log  ∑                                    (8)
                                                          
                                                                       
                                                                   sim(u,q)/τ 
                                                       †          e    
                                                     u † ∈U t
                                                              u∈(U ′ ∨u † )
                                                                t
                       †  为行名                                    U  是行名   (列名或者单元格数值) 对比负例表示的
                                                                   ′
                 其中,   U t    (列名或者单元格数值) 对比正例表示的集合,
                                                                   t
                                     sim(·,·) 与公式  (5) 类似.
                 集合, 其中   τ 是温度系数,

                 3.4   基于多粒度单元格语义对比的生成器训练和推理
                    在训练阶段, 生成器同时进行计算程序解码训练和多粒度单元格语义对比训练, 其训练损失如公式                               (9) 所示:

                                                 L = λ×L g +(1−λ)×(L cg +L fg )                       (9)
                      L g ,L cg ,L fg  分别表示计算程序解码损失、粗粒度单元格语义对比损失、细粒度单元格语义构成元素对比损
                 其中,
                 失;   λ 是权重, 控制解码损失和多粒度单元格语义对比损失的重要程度. 由于多粒度单元格语义对比仅在训练阶段
                 优化生成器参数, 在训练完成后, 其不参与推理过程. 因此在推理阶段, 生成器仅需自回归地生成计算程序, 多粒度
                 单元格语义对比方法不会带来额外的推理开销.

                 4   实 验
                                                                  [5]
                                                                              [8]
                    在实验部分, 本文采用文本和表格的数值问答数据集                 FinQA 和  MultiHiertt , 分别基于  FinQANet 和  MT2Net
                 的生成器来验证多粒度单元格语义对比 (MGCC) 方法的有效性.

                 4.1   数据集介绍
                    FinQA  数据集包含   8 281  个问题, 每个问题对应的文档含有一个简单表格和文本. 如图                1  所示, 这个数据集不
                 仅标注了问题, 计算程序       (Program) 及答案, 还标注了支撑单元格        (图  1  中下划线标注的单元格) 和文本中的支撑
                 事实  (图  1  中下划线标记的文本, 支撑事实是回答问题所必需的文本). 该数据集所有问题都要求模型生成计算程
                 序, 并根据此程序返回答案. 数据集被划分为            train, valid, test 集, 其占比分别是  75%, 10%, 15%, 具体大小见表  1.

                                       表 1 FinQA  和  MultiHiertt 数据集  train, valid, test 分布

                                 数据集                train            valid            test
                                 FinQA              6 251            883             1 147
                                MultiHiertt         7 830            1 044           1 566

                    MultiHiertt 数据集有  10 440  个问题, 每个问题对应的文档包含多个层次化表格和文本, 具体的样本分布信息
                 见表  1. 与  FinQA  数据集不同, 这个数据集的问题答案包括由计算程序返回答案和答案抽取两种类型, 其中答案抽
                 取指的是答案为某个单元格数值或连续的文本片段. 在                   MultiHiertt 数据集中, 计算程序问题类型占整个数据集
                 80%  以上的比例. 该数据集同样标注支撑单元格, 支撑事实和计算程序或者答案片段, 图                       5  展示了  MultiHiertt 数据
                 集一个示例, 这个示例其答案由计算程序返回. 在这个示例中, 下划线标注了支撑单元格, 方框标记了干扰单元格.
                 这里的计算程序通过引入第          i 步推理步结果#i, 使其包含推理结构         (提供了每一步推理逻辑). 这种方式相比单纯的
                 计算表达式, 更接近人类的计算顺序, 因为传统的计算表达式操作符的优先级可能与人类的计算顺序不一致.
                    因为本文的方法是针对表格数据的, 进一步, 本文探究                   FinQA  和  MultiHiertt 中问题支撑事实类型分布.
                 FinQA  和  MultiHiertt 数据集中问题的支撑事实包括仅依赖文本, 仅依赖表格, 以及同时依赖文本和表格这                     3  种主
                 要类型. 表  2  中  Table (=1) 表示问题仅依赖单个表格, Table (>1) 表示问题仅依赖多个表格, Text and Table (=1) 表
                 示支撑事实包括文本和一个表格, Text and Table (>1) 表示支撑事实包括文本和多个表格. 从表                  2  的分布可以看出
   271   272   273   274   275   276   277   278   279   280   281