Page 245 - 《软件学报》2026年第5期
P. 245
2124 软件学报 2026 年第 37 卷第 5 期
4.3.2 配置-功能实体关联抽取实验评估
该阶段 LLM-Extractor 读取每个配置项的配置文档, 在文档中使用滑动窗口算法识别文段中的软件功能实体
E F , 我们使用 Python 3.9 实现了滑动窗口算法, 并使用 bge-large-en-v1.5 模型计算文本窗口的向量表示. 完成实体
识别后, LLM-Extractor 根据匹配结果筛选出可能关联其他配置项的匹配语句 (即排除仅与当前配置项关联的功能
实体), 随后将这些语句和对应的配置文本语段装填入提示模板中, 接着调用 GPT-4o-mini 和 GPT-4o 接口分别进
行了配置-功能实体关联抽取实验. 我们首先人工分析了每条提示, 由两名研究人员, 分别独立地分析提示词并得
出关联关系, 若两人结论不同则交由第 3 名研究人员判断, 通过共同讨论确定标准答案. 在实验运行完毕后, 我们
根据事先确定的标准答案对抽取的关联关系进行了人工评估和标注.
实验结果评估如表 10 所示. 从表中可以发现, GPT-4o 效果较好而 GPT-4o-mini 的效果欠佳, 这是由于配置-
功能关系抽取涉及更复杂的文本理解和逻辑推断, 能力更强的 GPT-4o 相对于轻量化的 GPT-4o-mini 模型取得了
更好的效果, 在精确率上有 14.2%–52.8% 的提升, 在召回率上则提升不大, 说明 LLM 倾向于将潜在的配置-功能关
联均识别为关联关系. 在 openGauss 实验进行的 219 次提示中, GPT-4o 取得了超过 0.8 的精确率和超过 0.85 的召
回率, F1 分数超过了 0.83; 而在 PostgreSQL 实验的 167 次提示中, 使用 GPT-4o 的精确率略低, 为 0.725 5, 通过分
析实验结果, 我们初步推断这可能是由于 openGauss 配置文档拥有比 PostgreSQL 配置文档更详细的配置功能描
述, 从而降低了 LLM 理解文本的难度; 在 Squid 实验的 56 次提示中, GPT-4o 取得的召回率反而比 GPT-4o-mini
低 3.85%, 我们认为这是由于能力更强的 GPT-4o 拥有更为谨慎保守的策略, 而 Squid 实验相对较少的样本数可能
会放大这种影响.
表 10 E F -E C 关联抽取实验结果
软件名称 提示次数 模型 Precision Recall Accuracy F1 score
GPT-4o-mini 0.597 4 0.859 8 0.670 9 0.705 0
openGauss 219
GPT-4o 0.817 4 0.862 4 0.846 1 0.839 3
GPT-4o-mini 0.634 9 0.909 1 0.796 9 0.747 7
PostgreSQL 167
GPT-4o 0.725 5 0.880 9 0.857 1 0.795 7
GPT-4o-mini 0.545 5 0.8 0.767 9 0.648 6
Squid 56
GPT-4o 0.857 1 0.923 1 0.946 4 0.888 9
4.3.3 多配置关联抽取实验评估
该阶段 LLM-Extractor 再次读取每个配置项的配置文档, 从中筛选出包含多个配置项的语句, 分别调用 GPT-
4o-mini 和 GPT-4o 模型接口, 提取潜在的多配置逻辑关联关系. 和第 4.2.2 节配置-功能实体关联抽取部分类似, 我
们事先人工分析了每条提示并通过交叉确认讨论出标准答案, 完成实验后再由研究人员对实验结果进行评估和标
注. 实验结果如表 11 所示. 在使用 GPT-4o 的实验中, 方法都取得了更好的效果, 相比 GPT-4o-mini, 在精确度上有
26.25%–52.94% 的提升, 在召回率上则效果区别不大. 分软件来看, LLM-Extractor 在 openGauss 和 PostgreSQL 上
取得了比在 Squid 上更好的效果, 前两者精确度均在 0.86 以上, 而后者精确度不足 0.77, 经过实验结果分析我们认
为, 这可能是由于 Squid 的配置文档中缺少明确的配置条件表达, 需要 LLM 从复杂的自然语言描述中提取出明确
的配置条件, 这对模型的能力提出了更高的要求. 同时我们还注意到, 相比 openGauss 和 PostgreSQL 实验, 在
Squid 实验中使用 GPT-4o-mini 时具有更严重的效果下降, 分析实验结果我们发现, 这可能是由于 GPT-4o-mini 相
对于 GPT-4o 具有“更不谨慎”的特点, 更容易把形式各异的自然语言表述均识别为配置条件, 从而影响了关联抽取
的精确率.
4.3.4 功能实体间关联抽取实验评估
由于 Squid 配置文档并没有按照功能模块进行划分, 我们在 openGauss 和 Squid 的部分主要功能章节 (涉及
standby server、background writer、auditing、genetic query) 中进行了实验, 尝试抽取功能实体间的依赖关系. 对
于 openGauss 系统, 这些章节涉及 15 个功能实体节点, 我们以分组为单位, 在分组内取 2 的组合, 共生成 37 组功
能节点对, 从而生成 37 条提示词. 在 PostgreSQL 中以同样的方式, 生成了 45 条提示词. 为了评估 LLM 输出效果,

