推荐理由:
提出了一种GEE知识提取与复用框架;
提出了使用抽象语法树 (AST)来弥补GEE专家知识获取的挑战;
采用 ChatGPT (GPT-3.5 Turbo) 模型快速理解 GEE 工作流脚本并提取其专业知识。
Liang J, Zhao A, Hou S, et al. A GPT-enhanced framework on knowledge extraction and reuse for geographic analysis models in Google Earth Engine[J]. International Journal of Digital Earth, 2024, 17(1): 2398063.
在地理空间大数据时代,地理分析模型变得越来越重要。作为一个将海量地理空间数据资源与强大计算能力相结合的云平台,Google Earth Engine (GEE) 收集了大量针对不同地理分析任务的工作流脚本,并逐渐演变为一个综合知识库。然而,由于 GEE 工作流脚本的复杂性,从这些 GEE 工作流脚本中提取建模知识仍然是一个挑战。此外,这些 GEE 工作流脚本通常与 GEE 环境紧密耦合,这限制了它们在更广泛的地理空间社区中的重用。为了解决这些问题,本文提出了一个 GEE 知识提取和重用框架,该框架利用 ChatGPT 和抽象语法树 (AST) 揭示了嵌入在 GEE 工作流脚本中的事实元信息和建模过程。开发了一个 GEE 知识封装模板来系统地描述这些建模知识。通过案例研究,我们证明了该框架可以与现有的地理空间服务技术集成,简化从 GEE 工作流脚本中提取建模知识的过程,并增强其在不同建模环境中的应用。此外,通过结合 ChatGPT,该框架展现了智能生成地理分析模型的潜力。1.利用ChatGPT获取GEE 工作流脚本中的信息,包括特定的时间范围、空间范围、数据资源和主题任务。2.使用抽象语法树 (AST)开发了一种程序性知识提取方法。利用该方法与ChatGPT结合构建每个节点的功能。3.通过每个节点的功能关系,模拟GEE 工作流脚本的结构建模过程。其流程图如下所示:图 1. 所提出的知识提取和重用框架的概念架构
GEE 工作流脚本的描述性知识主要由其应用的函数、参数及其组合逻辑生成。通常,从脚本代码中提取描述性知识依赖于定制的启发式规则或深度学习驱动的代码理解模型,这些模型不仅耗时而且复杂。相反,本研究采用 ChatGPT (GPT-3.5 Turbo) 模型和快速工程技术来理解 GEE 工作流脚本并提取其描述性知识。下面介绍了适用于此任务的快速工程的设计和开发,以及优化 ChatGPT 响应的补偿策略。
图 2. 使用 ChatGPT 进行快速设计和交互
由于ChatGPT的不确定性对其输出产生影响,即使在提示模板中进行了明确规范,生成的回复可能仍然无法与预期的格式和要求对齐。为了解决这一问题,设计了补偿机制。例如,ChatGPT可能会忘记提示模板中声明的输出要求,生成无结构的自然语言句子回复;或者,尽管遵循了格式规范,但所生成的关键词与指定的关键词不同。为此,补偿机制实现了一个输出检查模块,该模块利用正则表达式对生成的输出进行检查,确保其符合预定的格式和完整性标准。如果ChatGPT的响应未能符合预定义的模式,该模块将判断是否可以根据特定规则(例如,通过切割输出字符串)调整输出。如果可以,模块会自动纠正输出并返回预期结果;否则,将生成一个描述具体异常的指令,并以“发生异常”开头,与ChatGPT进行二次交互。最终,通过将设计的提示模板与补偿机制相结合,可以系统地提取GEE工作流脚本中的描述性知识,并为后续使用做好准备。图3. 采用角色扮演和一次性策略进行描述性知识提取的提示模板。
一个典型的 Google Earth Engine (GEE) 工作流脚本通常由多个代码片段组成,每个代码片段包含一系列 API 调用,用于处理栅格或矢量数据,并且每个 GEE API 都对应于一个 GEE 对象或方法,执行相应的地理处理操作。以图 4 中的建模过程为例,该过程包括三种不同的地理处理操作:基于时间范围过滤影像集合、合成单幅影像以及根据特定范围裁剪影像。这些操作涉及不同类型的输入参数,从而建立了代码片段中的多层嵌套逻辑。图 4. GEE 代码片段中表示的地理建模过程实例及其在 AST 结构中的表示。
如图 5 所示,该算法采用迭代分析方法来处理多层嵌套逻辑,每次迭代都从抽象语法树(AST)的每一层中检索并处理一个子集。对于当前的 AST 子集,算法从下到上遍历其路径,并记录遍历过程中遇到的所有节点的顺序。这一顺序反映了同一逻辑层次中服务节点的调用顺序。接下来,算法会识别每个服务节点中包含的参数类型。如果参数是简单的标识符或常量(例如字符串),则直接将其提取为当前服务节点的子节点。否则,如果参数包含复杂的表达式或涉及函数调用,算法会将这一复杂参数识别为指向嵌套层内子建模过程的指针。然后,从 AST 中提取相应的子集,作为一个新的层进行迭代解析,以揭示代码片段中更深层次的嵌套逻辑。图5.基于 AST 的算法识别代码片段中的服务节点和关系。
如图 6 所示,基于代码片段中的标识符,开发了上下文元素关联机制,用于将 GEE 工作流脚本中的代码片段进行链接,从而将孤立的子建模过程整合为整个脚本的统一建模过程。标识符表明前一个代码片段的输出作为当前代码的输入,因此,这些标识符可以作为确定不同代码片段之间依赖关系的依据。图 6. 基于标识符的 GEE 代码片段的上下文元素关联。
为了获得 GEE 工作流脚本的完整建模过程,还需要解决服务节点中出现的功能模糊性问题。例如,GEE 中有多个名为‘union’的函数,但它们的实际行为取决于被调用函数所属的类或对象。这种差异可能导致对服务节点功能的误解,从而影响建模过程的准确性。基于上下文元素关联机制,本研究开发了两种算法,利用充分的上下文信息来解决这一问题,如图 7 所示。图 7. 区分服务功能的推理算法 (a) 未区分的服务节点接收来自三个前置服务节点的输入,并为一个后续服务节点生成输出;(b) 基于前置服务节点的映射和推理;(c) 基于后续服务节点的反向推理。
GEE 工作流脚本中的描述性和过程性知识被封装为一个统一且结构化的模板。如图 8 所示,GEE 建模知识封装模板包含三个模块:ModelingKnowledge、SourceCode 和 Mapping。ModelingKnowledge 模块由两个子模块组成,Fact 和 Process,分别用于记录提取的描述性知识和过程性知识;SourceCode 模块复制了 GEE 工作流脚本,并为每一行代码提供相应的描述;Mapping 模块则捕捉建模过程与 GEE 工作流脚本中特定代码片段之间的映射关系。图 8. GEE建模知识封装模板的结构。
以 GEE 中的坡度分析模型为例,图 9(a) 展示了该模型的 GEE 工作流脚本。经过建模知识提取后,坡度分析模型被封装到所提议的 GEE 知识模板中。如图 9(b) 所示,模板中的 Fact 节点包含四个描述性知识维度:时间范围、空间范围、数据来源和主题任务。图 9. (a) 在GEE环境中实现坡度分析模型;(b) GEE坡度分析模型的知识模板示例。
我们呈现了一个应用场景,评估某一特定区域的滑坡易发性。该模型主要在 GEE 环境中实现,作为一个工作流脚本,整合了多种数据源和函数,如图 10 所示。用于滑坡易发性评估的因素包括土地利用类别、NDVI 指数和坡度。为了计算这些因素,土地利用/覆盖(LULC)影像、Landsat 影像和数字高程模型(DEM),以及矢量边界数据被用作输入数据源。图 10. GEE工作流脚本在滑坡易发性评估中的应用示例。
如图 11(a) 所示,GEE 建模知识提取与重用框架作为 GeoSquare 的扩展,能够使 GeoSquare 解释 GEE 工作流脚本并生成知识模板。基于这一扩展,研究人员可以在服务链构建器(Service Chain Builder)中集成、共享和重用 GEE 工作流脚本。如图 11(b) 所示,模型提供者通过输入面板将 GEE 工作流脚本上传到 GeoSquare,脚本经过建模知识提取后作为知识模板进行存储(步骤 1)。随后,知识模板中的建模过程可以在服务链构建器中表示并可视化为一个抽象的地理处理工作流(步骤 2)。图 11. (a) 将GEE建模知识提取和封装框架与GeoSquare架构的集成;(b) 在服务链构建器中共享GEE地理分析模型。
为了验证这一点,本文在 GeoSquare 中进行了一项案例研究,使用所提议的滑坡易发性评估模型。如图 12(a) 所示,开发者 A 将该滑坡易发性评估模型实现为 GEE 工作流脚本并上传至 GeoSquare。经过建模知识提取后,生成了该模型的知识模板 A。图 12. 通过GEE知识封装模板在GeoSquare中重用滑坡易发性评估模型。
然而,研究者希望克服 GEE 环境的限制,以更灵活的方式开发滑坡易发性评估模型。他选择利用 GeoSquare 中的地理空间 Web 服务开发地理处理工作流,从而实现滑坡易发性评估模型。知识模板中的建模过程能够帮助完成这一任务。如图 13 所示,知识模板 A 中记录的建模过程指示了在此滑坡易发性评估模型中使用的具体功能及其连接顺序,这些信息可用于重现该模型。同时,多种异构的 GWS 已作为 WPS、SOAP 格式集成到 GeoSquare 中。此外,基于 GEE 的功能也可以作为 OGC 服务发布到 GeoSquare。这些 GWS 可用于开发滑坡易发性评估模型的可执行地理处理工作流。图 13. 从建模过程到可执行的地理处理工作流:滑坡易发性评估。
所提框架中的 GEE 知识封装模板可以通过与 ChatGPT 进一步集成,促进地理建模研究。研究表明,ChatGPT 可以生成用于地理分析的代码,包括基于 ArcPy 的代码。然而,由于对地理建模的理解有限,ChatGPT 仍然难以自动生成满足用户需求的地理分析模型。在这种情况下,知识模板可以作为外部知识来源,提供必要的信息来指导 ChatGPT 按需创建地理分析模型,如图 14 所示。图 14. 使用GEE知识模板和ChatGPT在ArcPy中开发滑坡易发性评估模型。
数据和可用性代码来源于项目:https://github.com/GenuineJianyuan/GEEKnowledgeFramework