Page 236 - 《软件学报》2026年第5期
P. 236

张添翼 等: LLM-Extractor: 基于大语言模型的软件配置间约束提取方法                                       2115


                                                       E FS  对应的相反状态实体, 这是由于配置文档总是倾向于描述功
                 歧后, LLM-Extractor 还会检查每个   E FS  实体, 添加
                 能在特定条件下被关闭或者禁用, 而缺乏类似开启、启用的描述. 例如在图                       8  中, LLM-Extractor 在配置  bgwriter_
                 lru_maxpages 的文本表述中提取出     E F  实体“the background writer”和  E FS  实体“(the background writer) is disabled”,
                 此时  E FS  实体“(the background writer) is disabled”缺少与之对应的相反状态实体“(the background writer) is enabled”,
                          E C -E F  关系抽取造成负面影响. 为了解决这个问题, LLM-Extractor 使用一种基于关键词的启发式方法,
                 这会对后续
                 检查  E FS  实体是否具有  disabled、blocked、not used  等状态的关键词, 再添加相应的相反状态.

                                            Type     Numerical
                                                                         is disabled
                                                               LeadTo                AtStatus
                                 bgwriter_lru_maxpages
                                                    RelatedTo
                         Value
                              int(0, 1 000)            bgwriter_lru_maxpages==0    The background writer

                                         Numerical
                                 Type
                                                                                     AtStatus
                                                                         is enabled
                                                     Value  int(0, 10)
                                  bgwriter_lru_multiplier
                        Numerical
                                    int(0, 20)                                           int(1, 16)
                                                           Numerical
                                      Value
                                                                Type                     Value
                            Type
                                      recovery_max_workers             recovery_parse_workers
                                                   图 8 CFRG  初始化示例

                    完成上述处理后, 我们就完成了          CFRG  的初始化, 图   8  展示了一个   CFRG  初始化之后的部分节点和关联关系,
                 从图  8  可以看出, LLM-Extractor 在  CFRG  初始化阶段识别了配置项      bgwriter_lru_maxpages 对功能  the background
                 writer 的影响, 并抽取了相应的实体和关联关系, 而对于配置项               recovery_max_workers 和  recovery_parse_workers,
                 LLM-Extractor 仅抽取了与配置实体对应的类型和合法取值. 在后续的                CFRG  关系补全步骤中, LLM-Extractor 将
                 抽取更多的关联关系添加到          CFRG  中, 作为配置间约束推断的数据基础.
                  3.1.3    配置-功能关联图补全
                    在完成   CFRG  的初始化之后, LLM-Extractor 构建了目标软件的配置-功能骨架图, 还需要更加细粒度地分析
                                                       E F  节点, 为后续的多配置关联子图搜索提供数据基础. 这一步具
                 配置文档, 挖掘更多关联关系来链接不同的              E C  和
                 体可以分为    3  部分:  E C -E F  关系抽取、 E C -E C  关系抽取和  E F -E F  关系抽取, 接下来将详细介绍.
                    (1)  E C -E F  关系抽取
                                                                                e C Require AtStatus(e F ,e FS ). 由于
                    这一步的目的是抽取软件配置项            E C  对软件功能   E F  特定状态的依赖关系, 即
                 在  CFRG  初始化阶段, LLM-Extractor 已经提取了每个软件配置项          E C  对于软件功能实体    E F  状态的边际影响, 即
                 E Cond LeadTo E FS , 因此提取  E C  对软件功能  E F  的依赖关系可以将不同的  E C  通过同一个  E F  链接起来, 形成多个配
                 置之间的关联链路.
                    LLM-Extractor 首先识别语句中的软件功能实体          E F . 识别  E F  而不是直接识别  E FS  的原因是  E F  表述的稳定度
                 相对较高, 但是    E FS  往往有多种表达方式, 而且有可能缺乏显式表达, 例如             bgwriter_lru_maxpages 的描述“bgwriter_
                 lru_maxpages specifies the number of dirty buffers the background writer can write in each round”中隐含了
                 AtStatus(background writer, is enabled) 作为必要条件. 本文使用词向量匹配的方法搜索语句中存在的功能实体, 即
                 使用滑动窗口在语句的词序列上滑动, 计算窗口内短语与功能实体                      E F  的语义相似度, 进而判断是否匹配. 这样的
   231   232   233   234   235   236   237   238   239   240   241