本文发表于《指挥信息系统与技术》2023年第3期

作者:张笑文,汤闻易,单晶,李代祎,马宗民

引用格式:张笑文,汤闻易,单晶,等. 飞行态势知识图谱及其问答系统的构建方法[J]. 指挥信息系统与技术,2023,14(3):70-80.

简介

针对包含时间区间、坐标信息等复杂数据类型的飞行态势数据,研究飞行态势知识图谱及其问答系统的构建。首先,基于时空知识图谱模型对复杂飞行态势数据进行统一化表示,构建飞行态势知识图谱;然后,针对飞行态势相关问题理解设计问句多分类器,并采用门控循环单元(GRU)和条件随机场(CRF)对问句进行命名实体识别,将问题与问句模板进行匹配生成Cypher查询语句;最后,查询答案并返回给用户。试验结果表明,该知识问答系统在试验评价和实际使用中均具有良好性能。

引言

随着人工智能技术发展和大数据时代到来,不同领域专业数据均在爆炸式增长,基于领域大数据对行业进行数字智能化改造的需求也越来越强烈,成为当前国内外的研究热点之一。飞行区空管领域涉及飞行态势、道面和气象等大量复杂异构的领域相关数据,尤其以飞行态势为代表,除了常见的静态知识外,航班的起飞时间和降落时间等时间信息、经纬度坐标与海拔高度等空间信息的灵活表征是构建面向飞行区空管领域飞行态势知识图谱的主要难点,直接影响到当前飞行区空管领域的智能化程度。同时,传统的信息搜索方法也越来越难以满足现实场景下对答案准确性的要求,因此如何构建一种能够准确理解现实场景下查询需求的智能问答系统也是当前国内外的研究热点之一。飞行态势领域包含大量航班号、飞机识别码、备降机场、起飞时间及起飞地点等相关数据,数据结构复杂但蕴含大量有价值的信息。针对海量而复杂的飞行态势数据,智能化空管系统只有能快速、精准地从中获取专业数据信息,才能有效依据专业数据指导空管系统相关工作。研究发现,飞行态势领域下各类信息间的数据结构差异巨大,高效可视化查询方法的缺乏以及现有知识图谱模型对该领域数据在表征上的欠缺,导致很难对飞行态势数据进行深层次且有价值的信息挖掘。

针对上述问题,本文先介绍了一种可以对飞行态势进行高效表征的知识图谱模型,并结合领域相关开源数据集和由Web获取到的飞行态势相关数据,构建了中英文2种飞行态势知识图谱,同时设计并实现了一个基于飞行态势知识图谱的知识问答系统。基于知识图谱的飞行态势数据管理可以高效发现、整合和使用领域相关的异构数据。基于飞行态势知识图谱的知识问答系统可以简洁快速地回答复杂业务问题,提高用户与系统之间的交互能力。基于知识图谱的数据处理技术能够将海量异构数据转化为由领域实体、实体间关系及属性构成的结构化数据,为知识问答系统提供高质量的知识库,有效提高知识查询的准确性。知识图谱概念由Google公司在2012年首次提出,并迅速衍生出大量如DBpedia、Freebase和YAGO2等知识图谱构建项目,这些通用领域的知识图谱有效提高了数据检索的智能化水平,加快了知识问答系统的发展。

近年来,适用于飞行区空管领域的时空图谱数据模型取得了一些研究成果。例如,王益鹏等提出从概念、对象、状态、特征和关系5个层次建立时空事件知识表达模型,并充分顾及时空事件信息的多粒度特性,在模型中将不同特征信息统一至各个对象中。Meng等提出了一种将时间域和空间位置三元组附加项的知识图谱模型,可以在静态知识图谱中对时间信息和空间信息进行表示;Sheth等提出了一种时空数据模型STT,模型结构为(s p o):[t],其中t可表示时间点或时间区间;Koubarakis等进一步提出了时空四元组stRDF,模型结构为(s p o, τ),其中τ表示时空四元组的时态约束;Wang等提出了时空数据模型gst-Store,模型结构为(s p o, l, t),其中,l和t分别表明位置和时间区间;Zhu等提出了基于时空谓词的时空数据模型stRDFS,模型结构为(s, p: < t, l >, o),stRDFS还额外提供了时空RDF的语法和代数操作。研究发现,当前面向飞行区空管的知识图谱模型仍缺乏对飞行态势事件在时间域和空间域上的连续表示,针对静态知识三元组附加飞行态势知识表示也给相关应用带来了额外的系统开销。

适用于飞行区空管领域的时空知识问答系统也得到关注。例如,李伟刚等采用面向领域本体的问题分类方法和结构化的语义信息提取方法,在航空领域本体知识库中检索答案,实现了基于本体知识库的航空领域问答系统。面向通用领域的知识问答系统,Yin等设计了一种结合注意力机制的卷积神经网络模型,并基于Freebase数据库进行了知识问答系统的设计与实现;杜泽宇等构建了一种基于知识图谱的电商行业智能问答系统,在现实场景中进行了部署和使用;李代祎等设计了一个基于知识图谱的军事武器问答系统,在领域问答上取得了良好表现,具有较高应用价值。研究发现,基于知识图谱的问答系统针对同一问题可能拥有的多种不同问答方式,仍不能准确进行问句解析。同时,如何将问答对之间的知识关联转化为知识图谱上的查询语句,仍有待研究。

为了解决上述问题,本文以现有飞行态势公开数据集为基础,构建了一个面向飞行区空管的飞行态势知识图谱,设计实现了一种基于飞行态势知识图谱的知识问答系统。本文基于飞行态势领域开源数据集和Web端获取到的飞行计划、航班信息等数据,采用一种时空知识图谱模型,构建了中英文2种飞行态势知识图谱,为知识问答系统提供数据支撑,并采用Neo4j图数据库对知识图谱进行存储和管理;构建20种飞行态势知识查询模板及问答训练集,设计实现了基于支持向量机(SVM)的问句多分类器;采集飞行区空管领域文本数据,构建命名实体识别语料库,结合Word2Vec字向量语言模型设计实现了门控循环单元(GRU)和条件随机场(CRF)命名实体识别模型;基于Django框架和JavaScript库设计实现了知识问答系统的Web端交互界面。

系统架构

本文构建的基于飞行态势知识图谱的知识问答系统总体架构如图1所示。该问答系统包括以下3个模块:

1) 知识图谱构建:获取Web中经过严格整理和清晰的飞行态势公开数据集,根据飞行态势知识体系设计飞行态势知识图谱中实体、属性及关联关系的结构;将原始数据根据设计的飞行态势知识图谱模型进行映射,构建面向飞行区空管的飞行态势知识图谱;最后,将数据导入图数据库Neo4j中进行存储和管理。

2) 知识问答:设计飞行态势知识查询模板,并构建模拟用户的自然问答对训练集。首先,利用基于统计的TF-IDF(词频-逆文件频率)算法对问句进行文本向量化,结合SVM设计针对问句进行分类的多分类器;然后,从Web端“爬取”飞行区空管领域文本数据进行实体识别语料标注,采用Word2Vec字向量语言模型对文本数据进行向量化处理,设计GRU-CRF命名实体识别模型对向量矩阵进行推理计算,实现文本命名实体识别任务;最后,根据问句匹配后的模板,自动生成Cypher查询语句从知识图谱中查找答案。

3) 前端交互:基于Django框架和JavaScript库设计问答系统的Web端展示界面。

图1 知识问答系统总体架构

知识问答系统包括飞行态势知识图谱构建、自然问句的解析与分类,问句模板匹配及查询语句的自动生成、查询结果的返回与在Web端进行人机可视化交互。系统运行流程为:1) 用户在前端交互模块输入待查询问题传给后台中的知识问答模块;2) 对用户问题进行问句解析与分类,识别问句中的实体并根据分类结果为匹配问句对应的查询模板自动生成Cypher查询语句;3) 在构建的飞行态势知识图谱中进行查询,将查询结果经前端交互模块返回给用户。

系统功能模块设计

本文设计的知识问答系统分为数据层、逻辑层和展示层,并设计关联前后端的独立API接口、减少各层间的信息传递来保证系统的低耦合性。其系统结构如图2所示。各层功能如下:

1) 数据层:完成对飞行区空管领域文本数据的“爬取”及标注,获取开源数据集构建飞行态势知识图谱;

2) 逻辑层:设计实现针对输入问句的多分类模型、命名实体识别模型和模板匹配算法,自动生成相应的查询语句,实现基于飞行态势知识图谱的知识问答;

3) 展示层:完成知识问答前端交互界面的设计与实现。

图2 系统结构

2.1 飞行态势知识图谱设计与构建

2.1.1 飞行态势数据模型

飞行态势领域数据除包含航班号、飞机编号和飞机机型等静态知识外,还包含航班起飞时间、降落时间以及飞行途中的经纬度坐标、高度等时空信息。经典的知识图谱采用三元组结构(S, P, O)对知识进行表示。其中,S为主语;P为谓语;O为宾语。该知识表示模型可有效将实体与实体通过关联关系进行组织表示,但是对静态知识以外的时空信息等无法进行灵活表征。本文采用一种对表达形式进行拓展的知识三元组(S, P, O[T1, T2, L])。其中,O为拓展表示后的宾语;拓展知识结构中,T1和T2为时间点(形式为yyyy-MM-dd HH:mm:ss);L为指定宾语所具有的空间信息,如经纬度及高度。同时,T1和T2具备时间序列特点,T2≥T1。L为宾语所携带的空间信息,本文构建的知识图谱主要面向飞行态势领域,故将L表示为一组经纬度+海拔高度的空间信息组(latitude, longitude, altitude),记录机场或飞机飞行过程中三维空间位置。飞行态势知识图谱模型示例如图3所示。

图3 飞行态势知识图谱模型示例

图3中,中心节点飞机尾部编号指每架飞机尾部喷涂的飞机注册号,每个飞机尾部编号节点代表一架飞机实体。关系飞机机型和应答器识别号分别指明该飞机具有的对应属性。在飞行态势领域,每架飞机值飞时均会编写一组航班代号来方便管理和区别,航班号原则上每日不会重复出现。在本文构建的飞行态势知识图谱中将航班号表示为CA310/[(2019-07-31 00:00:00)],表明2019年7月31日的CA310航班。针对某架次飞机在起飞-飞行-降落-停机等一系列的时空信息,以降落和停机为例:降落表示为“VTBS/[(2019-07-31 06:45:00), (2019-07-31 06:45:00), (120.287 907 438 458 1, 379.539 905 89, 31)]”,表明航班CA310在2019-07-31 06:45:00降落在VTBS机场,该机场坐标约为(120.288°, 379.540°),海拔高度为31 m;停机表示为“KLDJ/[(2019-07-30 23:50:00), (2019-07-31 04:55:03), (21.028 204 449 152 54, 113.539 905 894 886 4, 103)]”,表明航班CA310在2019-07-30 23:50:00到2019-07-31 04:55:03一直停留在机场KLDJ,机场坐标大约为(21.028°, 113.540°),所处海拔高度为103 m。

2.1.2 知识图谱存储

本文在Python编译环境中,采用py2neo开源模块将原始数据集按照飞行态势数据模型导入图数据库Neo4j中,实现飞行态势知识图谱的存储和管理。Neo4j图数据库是主流开源知识图谱数据库之一,其性能和便利性得到了广泛认可,同时具有灵活的数据结构调整能力,可以适配本文采用的飞行态势数据模型的存储结构。为了能够更好地对本文方法进行验证,本文分别构建了中文和英文2种飞行态势知识图谱来支撑本文研究工作。中文飞行态势知识图谱的数据来源为网上“爬取”并整理的国内机场相关飞行计划、航班信息等(包括飞行计划731条、机场天气信息183条以及机场特情信息89条),中文飞行数据集样例如图4所示;英文飞行态势知识图谱的数据来源为OpenSky项目开源的全球航班信息数据集(取用其中2 990 061条航班记录),Opensky开源数据集样例如图5所示。图数据库Neo4j存储的中英文飞行区态势知识图谱的信息统计、实体类型、关系类型和属性类型分别如表1~表4所示。

图4 中文飞行数据集样例

图5 Opensky开源数据集样例

表1 中英文飞行态势知识图谱信息统计

表2 中英文飞行态势知识图谱实体类型

表3 中英文飞行态势知识图谱关系类型

表4 中英文飞行态势知识图谱属性类型

2.2 知识问答模块的设计与实现

考虑到知识问答系统在使用过程中,前端交互模块接收的问题在查询主题上常存在多样性,同时用户输入的自然问句因其口语化特点、不遵循严格的句法而很难被机器准确理解。因此,如何将用户意图准确、快速和高效地转化为知识图谱上查询语句是知识问答模块的研究重点。当前针对知识问答系统中问句理解需求的方法主要分为:1) 基于模板匹配方式,该方法准确率高,但规则需要人工构建,因此仅支持在限定领域内的问句理解,在通用领域中较难实现;2) 基于句法分析的语义提取方法,该方法通过对问句中的字词词性和字词组合搭配情况进行基于句法规则的分析,支持对面向通用领域的问句进行理解,但问句需严格按照句法规则写,因此在对口语化的自然问句进行理解时性能较差;3) 基于文本相似度的语义提取方法,该方法基于大量短文本数据集对模型算法进行训练,训练原理复杂且受各项参数影响较大,实际效果不够稳定。

本文主要面向飞行态势领域,该领域专业性较强且涉及大量专业名词,因此本文选用模板匹配方式作为知识问答模块中问句理解环节的技术方案。本文知识问答模块设计中,首先,构建飞行态势领域相关的问题模板,模板中包含了针对每个查询主体的多种提问方式;然后,结合SVM算法对自然问句进行多分类,将分类结果与问句模板进行匹配,再生成对应的初始查询语句;设计了一种结合Word2Vec字向量嵌入模型的GRU-CRF命名实体识别模型,对自然问句中的实体进行识别以确定问句的查询主题;最后,结合自然问句中实体识别出的查询主题和初始查询语句,自动生成与数据库进行交互的Cypher查询语言,并返回查询结果到前端交互模块,至此完成查询。图6为知识问答模块对问题“2019年8月9日AAL624航班从哪里起飞?”进行处理的流程实例。

图6 知识问答模块流程实例

2.2.1 问题多分类模型

面向飞行态势领域的自然问句分类目前尚无公开数据集可供参考,同时在Web端也很难获取到有效的飞行态势问答数据集。因此,本文围绕飞行态势知识图谱中包含的实体、关系和属性为中心,人工构建了面向飞行态势领域的问题模板,共设计了20种飞行态势知识问答查询模板。问题类型模板如表5所示。

表5 问题类型模板

针对飞行态势相关自然问句查询目的清晰和专业名词较多等特点,同时受限于缺少相关领域数据集导致的训练集缺乏问题,本文从小样本数据技术路线出发,构建SVM多分类器对自然问句进行多分类。SVM算法具有分类速度快且准确率高的特点,与本文研究主题高度契合。SVM算法最初用于解决二分类问题,因此当处理多类问题时,需构造合适的多分类器。目前,构造SVM多分类器方法主要有2类。1) 直接法:直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题一次性实现多类分类,该方法在思路上较直接,但计算复杂度高,在实际场景中使用的条件较复杂,只适合于小型问题。2) 间接法:主要通过组合多个二分类器来实现多分类器的构造,本文采用该方法,其实现多分类的流程如图7所示。

图7 基于SVM算法的自然问句多分类流程(间接法)

2.2.2 问题实体识别模型

通过构建的自然问句多分类器可以对用户输入的自然问句进行多分类,并根据分类结果匹配问题对应的查询模板。为了生成与Neo4j图数据库进行查询交互的Cypher查询语句,还需识别问题中的命名实体并补充到查询语句中,才能将自然问句完整映射为Cypher查询语句。

自然问句及其对应查询模板实例如表6所示。表6中,针对用户问句“N232WN的机型是什么?”,将飞机尾部编号N232WN作为查询条件(fr: Flight_registration.name),指定关系“飞机类型”查找与指定查询条件关联的(ft: Flight_typecode.name)属性并作为答案返回。针对用户问句“N232WN在2019年8月12日起飞的航班号是多少?”,将飞机尾部编号N232WN作为查询条件1(fr: Flight_registration.name),同时识别自然问句中的时间信息“2019年8月12日”,对时间信息进行处理并统一表示为“20190812”作为查询条件2(fn: Flight_No).tl)的字符串起始字段,结合查询条件1和查询条件2返回对应的查询结果作为答案返回。

表6 自然问句及其对应查询模板实例

图8 Word2Vec语言模型

模型采用GRU门控循环单元提取问句中包含的隐藏特征。GRU是长短期记忆(LSTM)循环神经网络的一种变体,它对LSTM网络结构进行了简化设计,LSTM包含输入门、遗忘门和输出门3个门函数来控制输入值、记忆值和输出值;而GRU模型中只有更新门和重置门2个门,减少了模型过程中的信息量和复杂度,提高了训练效率和表现。GRU模型结构示意图如图9所示。

图9 GRU模型结构示意图

2.3 前端交互模块设计

本文采用基于Python的Django Web开发框架和JavaScript库搭建知识问答系统平台,前端实现主要运用HTML和层叠样式表(CSS)等技术。系统用户通过前端交互页面与飞行态势知识图谱进行知识问答形式的互动。

用户先输入想要查询的问题,前端获取到该问题后通过API接口传递给逻辑层,逻辑层对问题进行理解和分析,转化为Cypher查询语句在飞行态势知识图谱上进行查询,并将查询结果通过API接口返回到前端,完成一次知识问答行为。如未查询到结果则返回“对不起,该问题暂时未解决!”

试验与结论

3.1 试验准备

为了评估本文设计的知识问答系统性能,本章对第2章介绍的问题多分类模型和问题实体识别模型在数据集上进行了测试。模型性能采用准确率(Acc)、召回率(R)和 F1值(F)为评价指标。其中Acc、R和F分别定义如下:

其中,TP为正样本类预测正确数;TN为负样本类预测正确数;FP为负样本预测错误数;FN为正样本的预测错误数。

试验环境配置:操作系统采用Microsoft Windows 10(64位)专业版;处理器为IntelRCore TM i7-9700 CPU @ 3 GHz;显卡为NVIDIA GeForce RTX 2080 Ti;内存为32 GB;开发语言为Python3.5。

问题多分类试验数据集:由于目前关于飞行态势的问句类型尚无公开数据集可供参考或使用,因此本文针对知识问答系统的测试人工构建了一个面向飞行态势领域的问题数据集。针对文中设计的20种飞行态势问题模板进行了不同方式的提问和收集,同时使用同义词词典对问题进行了同义词替换,扩大数据集的覆盖面,最终构造了包含900余条面向英文飞行态势知识图谱的自然问句数据集和800余条面向中文飞行态势知识图谱的自然问句数据集,并在训练过程中对每种飞行态势问题模板下的问题按照7∶3进行切分分别作为训练集和测试集,以确保试验过程的科学性和严谨性。

实体识别试验数据集:在航空新闻网站上“爬取”与飞行态势相关(如包含起飞、降落和航班等关键词)的新闻信息,对这些信息进行人工标注后构建满足需求的飞行态势领域语料库。使用标注的语料库训练实体识别模型,并对本文构建的问题多分类试验数据集中的实体进行识别测试。

3.2 试验结果与分析

1) 问题多分类

该部分试验采用线性回归(LR)算法和朴素贝叶斯(NB)算法作为本文使用的基于SVM多分类的问句分类算法进行对比,面向英文和中文飞行态势知识图谱不同分类算法在面向英文和中文飞行态势知识图谱2种测试集上的问题多分类试验结果如表7所示。本文SVM多分类算法在训练集上各项评价指标均达94%以上。在面向英文飞行知识图谱的问句多分类测试集上的Acc、R和F分别为 95.32%、94.31%和95.10%。在面向中文飞行知识图谱的问句多分类测试集上的Acc、R和F分别为 97.65%、96.92%和97.33%。试验结果表明,相较于LR算法和NB算法,基于SVM多分类的问句分类算法在测试集上的Acc、R和F指标均取得了较好效果。

表7 问题多分类试验结果

2) 命名实体识别

该部分试验采用Acc、R和 F来评价命名实体识别模型对航班号名称、飞机尾部编号名称和机场名称3种实体的识别效果。基于GRU-CRF的命名实体识别模型对不同实体的识别结果如表8所示。

表8 命名实体识别试验结果

试验结果表明,基于GRU-CRF的命名实体识别模型在飞行态势领域的命名实体识别任务中整体表现较好,Acc大部分达到90%以上。值得注意的是,在面向英文飞行态势知识图谱的命名实体识别任务中,对航班号名称的Acc仅为85.33%,对面向英文飞行态势知识图谱的语料库进行数据分析,发现存在不同航班之间部分商业注册号、航班号及应答器编号等的编辑距离小于1的情况。由此导致该类实体在命名实体识别任务中的混淆,试验指标较差。面向中文飞行态势知识图谱的语料库中不包含商业注册号和应答器编号等信息,且由于全部为国内航班信息,航班号的命名更规律且容易辨认,因此面向中文飞行态势知识图谱的命名实体识别试验整体指标较好。为了进一步验证该模型性能,本文在同样数据集上测试了GRU 模型和GRU-CRF模型在命名实体识别任务中的识别效果。不同实体识别模型识别准确率试验结果如表9所示。

表9 不同实体识别模型识别准确率试验结果

试验结果表明,对GRU模型的输出结果进行CRF线性层处理后,模型性能得到明显提高,这是因为CRF的结构特点可以使其略过一些不合理的序列标注,加强了模型的识别效果。本文采用试验数据集主要由人工构建,因此知识覆盖面存在一定盲区,飞机尾部编号有其独特的编码规律,同时机场信息通常为英文名缩写且数量有限,因此模型对这2类实体名称进行了充分学习。航班号名称主要由航空公司缩写加数字编码构成,如果能将航班号的命名规则融合到命名实体识别模型中,可以进一步提高模型对航班号名称的识别效果。

3) 知识问答系统展示

该部分试验对本文设计的基于飞行态势知识图谱的知识问答系统在实际应用场景中进行了测试,用户输入问题,后台对问题进行分析和查询,并返回答案给用户。

结束语

本文首先介绍了一种面向飞行态势知识表示的数据模型,并结合领域公开数据集和Web获取到的飞行计划、航班信息等数据构建了中英文2种飞行态势知识图谱;然后基于飞行态势知识图谱,构建SVM多分类器和飞行态势问题模板对自然问句进行理解,并设计GRU-CRF模型对自然问句进行命名实体识别来自动生成更完整和准确的Cypher查询语句;最后,通过查询语句在图数据库寻找答案并返回到知识问答系统的前端页面,完成问题解答。对比查询形式,在本文设计的知识问答系统中,用户只需输入想要查询的问句,问答系统会自动进行问题分类->实体识别->Cypher查询生成->返回答案的过程,无需用户手动进行SQL/Sparql查询过程可能需要的查询条件设置。与现有面向其他领域的问答系统相比,本文设计的知识问答系统尚存在以下不足:1) 缺少高质量的领域问答数据集,模型不能得到高质量的训练;2) 本文尝试了基于LR、NB和SVM等算法的多分类模型设计,速度快但性能稍弱,通过对算法进行优化可以进一步提高多分类模型的性能;3) 如能在本文设计的命名实体识别模型中加入航班号和商业注册号等信息的命名规则,可进一步提高命名实体识别模型的表现。

现有针对飞行态势数据的查询大多基于关系型数据库等进行SQL/Sparql查询或基于csv或excel等结构化文档进行信息提取。本文引入时空知识图谱模型进行飞行态势数据的管理,相较于关系型数据库和结构化文档,可以更加灵活地对飞行态势数据进行存储、管理和更新。同时,本文构建了针对飞行态势领域的问题模板,可以更加精准地进行目标信息获取,另外,基于属性图方式的查询对比SQL/Sparql查询可以更加快速地获取到多个目标信息。随着各行各业智能化改造程度的加深,飞行区空管领域作为典型的大数据行业具有强烈的智能化升级需求,本文设计并实现了一种基于飞行态势知识图谱的知识问答系统,旨在对飞行区空管的智能化发展进行探索和技术储备。

声明:本文来自防务快讯,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。