Page 269 - 《软件学报》2025年第5期
P. 269
琚江舟 等: 多粒度单元格对比的文本和表格数值问答模型 2169
是因为模板由行名 (row header)、列名 (column header) 及单元格数值 (cell value) 这三者构成, 而这些行名、列名
通常较为简短, 甚至单元格句子可能仅会相差一个行名或者列名, 往往难以提供足够的信息区分它们. 例如, 图 3
中展示的两个经过线性化处理的句子: “The Masco of 2013 is $229.59.”和“The Masco of 2010 is $125.92.” , 其主要
区别仅在于列名 (2013 vs. 2010) 的不同. 这种微小的差异会导致一个问题: 生成器难以区分检索器返回的支撑单
元格句子 (即回答问题所必需的单元格句子) 和干扰单元格句子 (即与回答问题无关的单元格句子), 最终容易选择
干扰单元格数值来生成错误的计算程序.
Table and Sentences Top n
text Table and text sentences Program
linearization Retriever Generator
图 2 基于文本和表格数值问答任务流程
2009 2010 … 2013
Template:
·The [row header] of [column header] is [cell value]
Masco $128.21 $120.32 … $229.59 Table
Output:
linearization ·The Masco of 2009 is $128.21.
S&P 500
$125.92 $144.58 … $225.85 ·The Masco of 2010 is $125.92.
index
·…
·The Masco of 2013 is $229.59.
S&P 500
·…
industrials $120.19 $151.89 … $243.73
·The S&P industrials index of 2012 is $120.19.
index
·The S&P industrials index of 2013 is $151.89.
… … … … … ·…
图 3 表格线性化示意图
为了解决生成器难以区分差异较小的支撑单元格句子和干扰单元格句子的问题, 当前的工作试图通过提升检
索器的能力来去除干扰单元格影响. Chen 等人 [5] 最初提出用模板将单元格转化为代表单元格语义的单元格句子,
然后以表格整行的单元格句子作为基本检索单位, 之后将返回的检索句子作为生成器的输入. Wang 等人 [6] 认为检
索表格的行会不可避免引入同行的干扰单元格, 因此他们提出了专门的单元格检索器来克服这个挑战. Li 等人 [7]
设计了一个 RankNet 成对损失来提升检索器. 尽管提升检索性能可以降低干扰单元格的负面影响, 但考虑成本和
检索的难度, 完美的检索器仍难以实现. 因此, 生成器的输入必然包含检索返回的干扰单元格句子. 为了更好地应
对生成器难以区分支撑和干扰单元格句子的挑战, 本文认为可以优化支撑单元格句子和干扰单元格句子的表示,
增加它们之间的距离, 使生成器可以有效地区分它们.
本文探索使用对比学习增加支撑单元格句子和干扰单元格句子表示间的距离. 对比学习可以减少同类别表示
间的距离, 增加不同类别表示间的距离 [17−19] , 这种方法已在多种自然语言任务验证了其有效性 [4,20−24] . 鉴于单元格
句子整体语义及其语义构成元素这两种粒度都可以用于区分单元格句子, 本文在生成器上提出了一种多粒度单元
格语义对比 (multi-granularity cell semantic contrast, MGCC) 学习方法, 以实现增加支撑和干扰单元格句子表示距
离的目标. 这个多粒度对比方法包括粗粒度单元格语义对比和细粒度单元格语义构成元素对比. 后者进一步细分
为单元格行名对比、单元格列名对比和单元格数值对比. 对于粗粒度单元格语义对比, 本文目的是增大支撑单元
格句子的整体语义表示 S _support 和干扰单元格句子的整体语义表示 S _distrub 之间的距离. 以问题作为锚点, 本
文通过 InfoNCE 损失 [24] 拉近问题表示和 S _support 之间的距离, 同时拉远问题表示和 S _distrub 之间的距离. 但
是, 这一过程需要模型学习如何区分单元格句子语义构成元素差异, 例如行名、列名或单元格数值差异. 为了降低
学习难度, 本文进一步提出了细粒度单元格语义构成元素对比. 对于细粒度对比, 本文期望增加支撑单元格句子语
义构成元素表示 E_support 和干扰单元格句子语义构成元素表示 E_distrub 之间的距离. 本文通过 InfoNCE 损失
E_distrub 之间的距离. 由于单元格句子反映了单元格语
减少问题表示和 E_support 之间的距离, 增加问题表示和
义, 因此本文将对比方法称为多粒度单元格语义对比. 粗粒度单元格语义对比和细粒度单元格语义构成元素对比
是互补的方法, 用于区分单元格的语义.