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

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


                 与查询地点边界矩形框相交的对象, 初步筛选出候选子集. 最后对候选子集使用                         intersects 运算符, 进行精确的空
                 间交集计算, 确定与查询地点真实相交的对象.
                    query tmp_rtree road windowintersects [bbox(road feed filter [.Name = “Zhixing Road”] extract[GeoData])] filter
                 [.GeoData intersects (road feed filter [.Name = “Zhixing Road”] extract[GeoData])] consume;
                    案例  2: Can you tell me the total area of the districts of Nanjing intersecting with the Yangtze River Basin?
                    自然语言理解阶段得到的类型为统计总和的聚合查询, 空间关系为                       district, 查询地点为  Yangtze River Basin.
                 基于映射规则, 将关键实体信息映射到结构化语言模型中, 生成可执行语言为:
                    query district feed extend [IntersectionArea: area(intersection(.GeoData, Yangtze River Basin))] sum [IntersectionArea];
                    接下来进行查询优化, 先为空间关系创建             R  树索引.
                    derive tmp_rtree = district creatertree[GeoData];
                    然后使用    bbox  和  windowintersects 运算符得到候选子集. 最后使用    intersection  运算符精确计算候选子集中
                 每个对象与查询地点相交的部分, 使用            area 运算符计算相交部分的面积, 使用         sum  运算符对所有相交面积进行汇
                 总, 得到总面积.
                    query tmp_rtree district windowintersects [ bbox(Yangtze River Basin)] extend [IntersectionArea: area ( intersection
                 (.GeoData, Yangtze River Basin))] sum [IntersectionArea];
                    案例  3: Please find the POIs in each district that are located within a 15-minute walk of a university.
                    该查询可用于支持城市规划与公共服务评估任务, 帮助相关部门分析高校周边约                            1 000 m (按平均步行速度
                 4 km/h  估算的  15 min  步行距离) 范围内的商业、生活及文化设施的空间分布情况, 进而评估高校是否处于功能完
                 备的区域. 这类信息对于大学城发展规划、教育产业园区选址以及服务资源均衡配置具有重要参考价值. 自然语
                 言理解阶段得到的类型为空间           Join  查询, 空间关系为   poi、district 和  university, 距离阈值为  1 000, poi 和  district
                 之间的连接条件为包含关系, poi 和         university  之间的连接条件为距离约束 “within a 15-minute walk”. 基于映射规
                 则, 将关键实体信息映射到结构化语言模型中, 生成以下两个候选可执行查询.
                    EXE1: query poi feed {a} university feed {b} symmjoin [distance(.GeoData_a, ..GeoData_b) <= 1000.0] district
                 feed {c} symmjoin [.GeoData_a within ..GeoData_c] consume;
                    EXE2: query poi feed {a} district feed {b} symmjoin [.GeoData_a within ..GeoData_b] university feed {c}
                 symmjoin [distance(.GeoData_a, ..GeoData_c) <= 1000.0] consume;
                    上述两个查询在语义上等价, 但在执行顺序上存在差异. 为了优化查询性能, 系统对两个候选查询进行代价估
                 算, 主要依据第    1  次连接后的中间结果规模和第         2  次连接时的计算开销. 具体估算如下.
                    Cost EXE1  = |poi ⋈ university| × (1 + |district|),
                    Cost EXE2  = |poi ⋈ district| × (1 + |university|).
                    通过实际数据库中的查询执行结果可得 |poi ⋈ university| = 397, |poi ⋈ district| = 1000, |district| = 11, |university| =
                 89, 进而计算得到    Cost EXE1  = 4764, Cost EXE2  = 90000. 由于  Cost EXE1  < Cost EXE2 , 系统最终选择  EXE1  作为最优可执
                 行查询返回给用户.
                  5   实验分析

                    在一台运行 Ubuntu 20.04 (64 位, 内核版本  5.14.0-1051-oem) 的电脑 (Intel(R) Core(TM) i5-10210U CPU, 1.60 GHz,
                 8 GB 内存, 512 GB 硬盘) 上对  NALSpatial 进行开发并进行实验评估. 在       SECONDO  系统中以代数模块的形式实
                 现了  NALSpatial, 并通过该代数实现一个运算符, 名为          spatial_nl. 用户可以在  SECONDO  数据库上使用运算符
                 spatial_nl 将空间数据的自然语言查询转换为可执行语言.
                  5.1   数据集与评估指标
                    ● 数据集. 使用   berlintest、nanjingtest、londontest 和  chinawater 数据集, 空间数据统计如表  4  所示. berlintest
   165   166   167   168   169   170   171   172   173   174   175