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

1126                                                       软件学报  2026  年第  37  卷第  3  期



                                              D(n,word_NN) = min D(k i ,word_NN)                      (1)
                                                           1⩽i⩽|K|
                    NLQ 2 : List the 12 closest parks to the border of Nanjing.
                    NLQ 3 : List the 12 closest parks to the road 3.
                    以  NLQ 2 为例, 它包含 “closest”, K = {12}. 由定义  2  可得  k = 12. 以  NLQ 3 为例, 它包含 “closest”, K = {12, 3}.
                 对于  K  中所有基数词来说, 12    和单词 “closest” 之间的距离是最小的. 由定义        2  可得  k = 12.
                    定义  3 (距离阈值). 给定短语     D = (N, U), N  是一个数字, U  表示距离单位 (如  kilometer、meter), 每个单位  U  对
                 应一个到   meter 的转换因子               d = N×f U .
                                      f U , 则距离阈值
                                                     {
                                                       1,   U = meter
                                                 f U =                                                (2)
                                                       1000, U = kilometer
                    NLQ 4 : Please provide a list of POIs within 2 kilometers of each district in Nanjing.
                    以  NLQ 4 为例, D = (2, kilometer), 由定义  3  可得  d = 2×1000 = 2000.
                    定义  4 (空间关系). 令   relation  是存储空间关系的字典数组,      relation = {R 1 ,R 2 ,...,R n }, 则空间关系  R i 的完整结
                 构为:

                                         R i = {“ID”: id i ,“Name”: name i ,“Attribute”: attribute i }  (3)
                 其中, ID  属性表示空间关系的唯一标识符, Name 属性表示空间关系的名称, Attribute 属性用于描述空间关系的几
                 何类型,  attribute i ∈ {point,line,region}.
                    定义  5 (查询地点). 令  location  是存储查询地点的字符串数组,       location = {L 1 ,L 2 ,...,L m }, 其中  L i 是有效地理位
                 置, 如城市、区域、建筑物等.
                  3.2   查询实体提取
                    在提取实体信息之前, 基于空间数据库构造空间关系和地点知识库. 地点知识库存储地理空间实体的信息, 而
                 空间关系知识库则用于记录空间数据库中的表信息. 地点知识库的主要功能是完整表达每个地点的语义信息, 因
                 此需要包含地点的名称、类型以及其存储方式. 地点的存储方式可能是几何对象, 如区域 (region)、线 (line) 或点
                 (point), 也可能是某个空间关系表中的记录. 空间关系知识库存储空间数据库中所有空间关系表的信息, 包括唯一
                 标识符、名称和空间属性. 地点知识库中的地点如果是通过某一关系表存储的, 那么地点知识库中的该条记录会
                 引用空间关系知识库中的表标识符. 将地点和空间关系的信息分别存储为                        CSV  文件, 就构成了地点知识库和空间
                 关系知识库. 为了提升知识库的搜索效率, 采用哈希表结构进行管理. 使用链表存储冲突的元素, 并使用动态调整
                 容量的策略来提高性能和内存利用率. 给定元素数量                 size 和哈希表容量   capacity, 负载因子被定义为    load_factor =
                 size/capacity. 当负载因子  load_factor 超过阈值或过低时, 扩展或缩小哈希表容量并重新哈希所有元素.
                    空间数据自然语言查询中的关键实体信息提取如算法                    2  所示. 首先, 对输入的   NLQ  进行初步处理, 利用     NLP
                 工具识别句子中潜在的关键信息, 并将如 “10-minute walk”“nearby” 等模糊自然语言表达转换为明确的空间距离
                 阈值. NLP  工具需满足以下条件: 高效的处理速度、广泛的功能支持、易于集成的开发环境. 基于这些考虑,
                 spaCy  是优先选择, 主要因为其在      Python  环境中的优秀性能及丰富的功能集. spaCy         不仅支持高效的分词和命名
                 实体识别, 还能够对复杂的语法结构进行解析, 特别适合处理多样化的自然语言查询. 为了提高系统的鲁棒性, 将
                 NLTK  作为替代方案. 利用    spaCy 对输入的  NLQ  进行处理, 生成两类候选实体的集合: 数字列表            N_L  和信息列表   I_L.

                 算法  2. 实体信息提取算法.

                 输入: 自然语言查询      Q, 地点知识库   LKB, 空间关系知识库     SRKB;
                 输出: 空间数据查询实体       E.
                 1.   doc ← nlp(Q)
                 2.   for word i ∈doc do
   158   159   160   161   162   163   164   165   166   167   168