system: [SYSTEM]

user: 4. 实验应用分析 4.1. 实验数据预处理 实验数据预处理主要是读取需求文档，并利用依存句法和语义角色标注提取出其中需求三元组，并随机抽取需求三元组进行人工意图标注。本文使用的数据为100条真实的科技公司需求文档，其中部分需求文档如图5所示，例如举例其中一个需求文档：本公司研发导航系统，导航应用于医院常用影像设备。需求主要在硬件设备和软件，应提供整套设备的配套技术。期望研发时间为10个月内，预算金额为4000万人民币。之后会在这100条需求文档中随机抽取70条进行数据预处理，对这70条随机抽取出来的需求文档进行知识抽取。根据本文上述基于依存句法和语义角色标注的需求三元组抽取方法进行抽取，抽取完成之后通过人工标注的形式对抽取出来的需求三元组进行人工标注，标注出所有需求三元组的意图，其中案例需求文档的数据预处理结果如表4所示。接着利用本文上述方法提取出带有意图标注的需求三元组的特征矩阵和邻接矩阵作为图卷积神经网络的输入。 Table 4 Data preprocessing cas 需求编号 需求三元组 需求三元组标签 65 {‘X公司’，‘研发’，‘导航系统’} 目标 66 {‘导航’，‘应用于’，‘医院常用影像设备’} 功能 67 {‘需求’，‘提供’，‘整套设备配套技术’} 功能 68 {‘研发时间’，‘为’，‘10个月内’} 约束 69 {‘预算金额’，‘为’，‘4000万人民币’} 约束 65 {‘X公司’，‘研发’，‘导航系统’} 目标 表4. 数据预处理案例 图5. 需求文档数据 4.2. 实验参数设置 本文对图卷积神经网络进行了相关配置，所有相关定义如表5所示。考虑到图结构网络数据较为复杂训练时间较长，选择GPU作为训练环境。根据图卷积神经网络分类研究表明 [ 13 ]，对于正常任务仅需要两层图卷积网络即有很好的效果，所以本文也设置了两层图卷积层，其中输入维度为2.3.3节利用one-hot编码得到2000维的特征维度，隐藏层维度为16，考虑到最后输出类别有4种，所以最后一层图卷积输出维度变为需求三元组意图类别概率，选取概率最大的对应类别作为该需求三元组的意图类别。权重衰减、训练迭代次数、学习率的设置则是在经过多次测试得出来相对最优值，当在学习1000次的时候标注准确率不会再提高。本文采用的损失函数为神经网络中经常使用的交叉熵损失函数，优化器为Adam，因为Adam在经过偏置校正后，每一次迭代学习率都有个确定范围，使得参数比较平稳。 4.3. 实验参数设置 实验一是对意图标注进行准确率评估，将预处理完成的数据按6:2:2的比例分成训练集、测试集、验证集，在按照4.2实验参数设置后进行数据输入，模型最终输出标准结果准确率在91.7%。本文之所以采用GCN来对需求三元组进行意图识别，主要原因有俩点，首先无论是抽取的需求三元组还是需求图谱本身是由图数据构成的，分类模型最好能够处理图数据，从而使得方法的使用更为流畅，如若分类模型无法处理图数据，那么构建步骤会变得繁琐，从而降低构建效率。其次，近年来在对图数据分类处理方面，GCN分类模型表现十分优秀，对于本文的需求图数据仅需两层GCN网络即可得到很好的效果，91.7%的高准确率已经满足意图识别功能所需要的结果。 Table 5 Definition of related parameter 名称 定义 参数值 设配 Device Gpu 图卷积层数 GCN_Layers 2 输入维度 Input_dimension 2000 隐藏层维度 Hidden_Layer_dimension 16 输出层类别 Output_Layer_category 4 权重衰减 Weight_decay 5e−4 训练迭代次数 Epochs 1000 学习率 Learning_rate 0.04 损失函数 Loss 交叉熵 优化器 optimizer Adam 表5. 相关参数定义 实验二是对处理完的需求数据进行可视化展示，在分类模型训练完成之后，以新输入一条需求文本为例：本公司研发导航系统，导航应用于医院常用影像设备。需求主要在硬件设备和软件，应提供整套设备的配套技术。期望研发时间为10个月内，预算金额为4000万人民币。其需求图谱构建流程如表6所示。 其中表6中用到d3.js [ 8 ] 和neo4j [ 9 ] 两个技术，d3.js是一个较为流行的可视化库，它允许绑定任意数据到文档对象模型当中，然后将数据驱动转换应用到文档中，之后通过数组形式数据传递给前端，展示出可缩放矢量图形组成的svg图。Neo4j则是用来存储图结构数据的一个高性能数据库，与常规的mysql不同，neo4j对于图结构数据存储是进行优化过的，与本文需求三元组格式类似，它分别存储节点类别、属性、边的类别，所以非常适合用来存储需求图谱数据。最终该需求文本的可视化结果如图6所示。 Table 6 Examples of requirements graph constructio 步骤 内容 需求文本 本公司研发导航系统，导航应用于医院常用影像设备。需求主要在硬件设备和软件，应提供整套设备的配套技术。期望研发时间为10个月内，预算金额为4000万人民币。 知识抽取 [[‘X公司’，‘研发’，‘导航系统’]，[‘导航应用环境’，‘应用于’，‘医院常用影像设备’]，[‘需求’，‘提供’，‘整套设备配套技术’]，[‘研发时间’，‘为’，‘10个月内’]，[‘预算金额’，‘为’，‘4000万人民币’]] 意图标注 [[‘X公司’，‘研发’，‘导航系统’，‘目标’]，[‘导航应用环境’，‘应用于’，‘医院常用影像设备’，‘功能’]，[‘需求’，‘提供’，‘整套设备配套技术’，‘功能’]，[‘研发时间’，‘为’，‘10个月内’，‘约束’]，[‘预算金额’，‘为’，‘4000万人民币’，‘约束’]] 图数据转化 {source: ‘X公司需求’， target: ‘X公司’， type: ‘根节点’， ‘rela’: ‘需求1’}， {source: ‘X公司’， target: ‘导航系统’， type: ‘目标’， ‘rela’: ‘研发’} ...... 图数据存储 将Step3图结构数据通过数据库添加语句存储到高性能的图形数据库neo4j当中。 表6. 需求图谱构建实例 图6. 需求图谱可视化示例 4.4. 需求图谱应用 构建出的领域知识图谱应用场景十分广泛，例如基于知识图谱的智能问答 [ 19 ]，基于知识图谱的智能推荐，基于知识图谱的热点分析等都是比较常见的应用场景。下面简单介绍服务需求领域的需求图谱在科技文献检索这一个应用场景下的情况。 知识图谱最早是被应用于提高搜索引擎的搜索效率的，早期传统的搜索引擎算法通过从海量的网站链接URL中搜索找到网站标题与搜索正文，通过NLP相关语义处理层之后得到一个匹配分数，通过分数的从高到底进行排序展示。但这样的搜索需求和搜索结果往往难以匹配，经过会有搜索结果和实际需求不符的情况。而如果搜索引擎增加了知识图谱，通过构建知识图谱可以得到一个庞大的语义网络，为搜索提供丰富且有效地辅助信息，从而提高了搜索的效率和准确率。 本文建立需求图谱同样可以应用于检索方面，以科技文献资源的检索为例，一条案例需求文档：本公司研发导航系统，导航应用于医院常用影像设备。需求主要在硬件设备和软件，应提供整套设备的配套技术。期望研发时间为10个月内，预算金额为4000万人民币。如果用传统的方法进行检索，无法有效从这么多文字中提取语义信息，搜索出来的导航系统与原需求文档不符。但通过需求图谱检索，搜索引擎会从这条需求的目的、功能、约束这三方面进行综合考虑检索科技文献，例如对案例需求文档进行检索，就会检索导航系统的文献，同时会检索会综合考虑这个案例所提取的功能和约束方面的语义，例如这个导航系统是专门应用于医疗领域的，需要整套软硬件设备等，从而最终检索结果会更符合用户输入的需求文档，检索出来关于导航系统科技文献会更符合用户需求。