Page 162 - 《软件学报》2026年第3期
P. 162

刘孟怡 等: 基于大语言模型的空间数据库自然语言查询转换方法                                                  1125


                 后基于大语言模型       GPT-4o  构建高质量的空间数据查询语料库 (第           5  行), 使用  BiLSTM  网络训练语料库, 对查询
                 的类型进行预测 (第      6、7  行). 在可执行语言生成过程中, 先利用数据库中的运算符和查询语法为所有类型的查询
                 生成结构化语言模型 (第        8  行), 根据已识别的类型确定合适的结构化语言模型 (第              9  行), 然后基于映射规则将实
                 体映射到结构化语言模型中, 构造可执行的数据库查询并返回 (第                    10、11  行).

                 算法  1. 空间数据自然语言查询转换.

                 输入: 自然语言查询      NLQ, 数据库信息   DB;
                 输出: 可执行的数据库查询        EDQ.

                 1.   KBs ← generateKB(DB)
                 2.   doc ← nlp(NLQ)
                 3.   for word i  ∈ doc do // 实体提取
                 4.    E ← entityExtraction(KBs)
                 5.   Corpus ← generateCorpus()
                 6.   model ← BiLSTM(Corpus) // 查询类型识别
                 7.   QType ← predictQueryType(model, doc)
                 8.   SLM ← generateSLM(DB)
                 9.   slm ← selectSLM(SLM, QType)
                 10. EDQ ← constructEDQ(E, slm) // 查询映射
                 11. return EDQ

                  3   空间数据自然语言查询理解

                    自然语言理解阶段的任务是对输入的空间数据                 NLQ  进行解析, 创新性工作包括实体信息提取算法和空间数
                 据查询语料库.
                    (1) 实体信息提取算法的创新点在于采用双层候选实体生成策略, 先提取数字列表和信息列表, 确保涵盖不同
                 类型的查询要素, 然后结合空间关系知识库和地点知识库进行筛选与剪枝, 从而提升实体识别的准确性和可解释
                 性. 相比于传统方法, 该算法不仅能提取查询地点, 还能识别最近邻居数、距离阈值和空间关系, 适用于多种复杂
                 的空间查询类型, 增强了系统的泛化能力和对空间语义的理解能力.
                    (2) 空间数据查询语料库的创新点体现在基于领域论文抽取真实查询, 确保语料的专业性, 并结合                             GPT-4o  进
                 行数据增强, 通过关键数据实体替换、句法结构变化和语言风格调整等方式生成变体, 提升查询的多样性和覆盖
                 范围. 通过这种方法, 语料库得以扩展至           3 500  条高质量查询, 相比于传统的手工构造或规则生成方法, 能够提高系
                 统在不同查询场景下的适应性和鲁棒性.
                  3.1   相关定义
                    定义  1 (空间数据查询实体). 在空间数据自然语言查询中, 关键实体是一个元组                    E = (k, d, relation, location), 其
                 中, k 存储最近邻居数, d    存储距离阈值, relation  是一个存储空间关系的字典数组, location        是一个存储查询地点的
                 字符串数组.
                    定义  2 (最近邻居数). 令    k 是最近邻居数, word_NN   是集合{“nearest”, “closest”, “neighbor”}中的一个英文单
                 词. 如果自然语言查询不包含         word_NN  中任一单词, 则   k = 0. 反之, 令  K  是自然语言查询中的基数集合, 则      k 按照
                 如下  3  种情况取值.
                           |K| = 0, 则  k = 1.
                    (1) 如果
                    (2) 如果  |K| = 1, 则  k = k 1 ∈ K.
                    (3) 如果  |K| > 1, 令  D(word 1 , word 2 ) 是  word 1 和  word 2 相隔的单词数, 则   k = n ∈ K, 对于  ∀k i ∈ K, n  满足:
   157   158   159   160   161   162   163   164   165   166   167