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

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



                 3.    if word i 是最近邻居数 then // 基于定义  2 进行判断
                 4.     E.k ← word i  // 提取最近邻居数
                 5.    if word i 是距离阈值 then // 基于定义  3  进行判断
                 6.     E.d ← get_threshold(word i ) // 提取距离阈值
                 7.    if word i .pos=NOUN  或者  word i .pos=PROPN then
                 8.     noun_list.append(word i .text)
                 9.   for noun i  ∈ noun_list do
                 10.  if search(noun i , SRKB.name) then
                 11.   E.relation.append(noun i ) // 提取空间关系
                 12.  if search(noun i , LKB.name) then
                 13.   E.location.append(noun i ) // 提取查询地点
                 14. return E

                    (1) 数字列表   N_L = {n 1 ,n 2 ,...,n k }, 存储被识别为数字、基数或数量的实体. 数字实体通常与查询中的数量或
                 距离相关, 代表查询条件中重要的参数.
                    (2) 信息列表   I_L = {i 1 ,i 2 ,...,i m }, 包含词性为名词或专有名词的单词. 这些词通常代表空间实体或地点名称等
                 信息, 是查询的核心空间实体.
                    以  NLQ 2 为例, N_L  中包含 “12”, I_L  中包含 “parks”“border”“Nanjing”.
                    通过细粒度实体提取对候选实体进行剪枝, 获得实体                  E=(k, d, relation, location). 具体来说, 对于列表  N_L  中
                 的每个数字, 根据定义      2  进行判断, 如果一个数字在       NLQ  中与关键字 “nearest”“closest” 或 “neighbor” 在语义距离
                 上很近, 则将该数字识别为最近邻居数            k. 例如, 在  NLQ 2 中, “12” 紧邻 “closest”, 因此被提取为查询中的最近邻居
                 数. 距离阈值用于限制查询范围, 以确保查询结果符合用户的期望. 该阈值的提取过程依赖于列表                              N_L  中的数量
                 短语, 这些短语通常由数字和距离单位 (如            meter、kilometer 等) 组成. 例如, 在  NLQ 4 中, 短语 “2 kilometers” 被解
                 析为距离阈值, 通过将单位转换为           meter, 系统可以获得精确的距离阈值         d. 最后, 通过判断列表    I_L  中的单词是否
                 位于知识库中来确定空间关系          relation 和查询地点  location. 例如, 在  NLQ 2 中, “parks” 被识别为空间关系, “Nanjing”
                 被识别为地点.
                    ● 算法  2  的时间复杂度分析. 假设一个       NLQ  中包含的单词数为       len, 地点知识库中包含的地点数为         m, 空间关
                 系知识库中包含的关系数为          n, 可以推断   m  大于  n (因为一个空间关系至少包含一个地点信息). 利用哈希表查找
                 知识库的时间复杂度为        O(1), 因此算法  2  的时间复杂度为     O(len).
                  3.3   查询类型识别
                    空间查询的种类繁多, 这种多样性使得为每种查询设计通用的翻译模板难以实现. 因此, 准确识别查询类型成
                 为生成可执行语言的前提和重要步骤. 针对这一需求, 先利用大语言模型构建涵盖丰富空间查询类型的高质量语
                 料库, 确保语料库内容在表达多样性、语法一致性和语义清晰度等方面的高标准. 同时, 通过对比                           TextCNN、LSTM、
                 BiLSTM、DistilBERT  和  BERT  的基本原理以及在实际场景中的应用, 从而确定最适合训练语料库的模型为
                 BiLSTM. 虽然此方法增加了模型设计的成本与复杂性, 但显著提升了自然语言查询到可执行语言转换的精度.
                    语料库包含     3 500  条自然语言查询, 覆盖了     5  种常见的空间数据查询类型: 基础空间查询、范围查询、最近
                 邻居查询、空间      Join  查询和聚合查询. 每条查询都严格标注了类型, 保证了语料库在训练任务中的分类准确性.
                 这些查询是从相关领域的论文中抽取出来并进行数据增强得到的. 语料库的构建过程如下.
                    ● 查询提取. 先从空间数据处理和自然语言查询相关领域的文献中抽取                       60  条高质量的空间数据自然语言查
                 询. 查询的选择过程涉及多层筛选和领域专家的指导, 以保证每条查询都能够涵盖空间数据库的典型需求. 在选择
                 过程中, 领域专家检查了查询在语义上是否符合自然语言查询的表达方式, 以及是否能够被转化为有效的空间数
   159   160   161   162   163   164   165   166   167   168   169