基于自然语言的网络配置命令生成系统和方法
未命名
08-07
阅读:94
评论:0

1.本发明涉及基于自然语言的网络配置命令生成系统和方法,属于信息技术领域,特别是属于网络设备的网络配置命令自动生成技术领域。
背景技术:
2.正确、高效的网络配置是保证网络流量正常流动的重要基础。根据统计,命令行界面(command line interface,cli)仍是当前配置、管理和维护网络设备的最常用方式,它对几乎所有的网络设备都具有良好的支持,并能在图形用户界面(gui)和应用编程接口(api)无法承受的复杂程度和深度上与设备进行交互。然而,基于cli的配置方法以手动操作为主,严重依赖网络运营工程师的个人专业知识与经验,使得其面临诸多挑战。其一,厂商不断合并新的服务功能、优化配置以提高服务质量,导致配置规则在数量和复杂性上不断演变,为网络管理员带来沉重的记忆负担。其二,多厂商组网的趋势要求用户掌握不同厂商的命令语法,为构成单一的网络运维团队带来高昂的学习成本。尽管在一些配置实践中网络运营工程师通过查阅设备手册可来辅助配置,但这大大降低了配置效率。随着近年来互联网的蓬勃发展,电信基础设施建设不断加快,网络规模逐年增加,网络负载的海量终端给网络配置管理带来前所未有的难度。
3.综上所述,如何有效解决传统的基于命令行界面对网络设备进行网络配置所存在的上述问题,成为目前网络运维技术领域急需解决的一个技术难题。
技术实现要素:
4.有鉴于此,本发明的目的是发明一种基于自然语言的网络配置命令生成系统和方法,实现使用自然语言来描述网络配置意图,屏蔽不同厂家网络设备的命令细节,自动生成网络配置命令的目的。
5.为了达到上述目的,本发明提出了基于自然语言的网络配置命令生成系统,所述系统包括如下模块:
6.配置命令库模块:该模块的功能是存储网络设备的所有配置功能;配置命令库模块包括解析器子模块和不同的子命令库,是一个可供检索的存储结构,是存储网络设备的所有配置功能的集合;所述的子命令库是指根据网络设备的厂家名称、设备类型和操作系统版本所划分出来的网络设备的配置功能的子集;所述的解析器子模块的功能是将网络设备手册中的半结构化的配置信息提取为可供检索的结构化数据;
7.所述的配置命令库模块是一个显式的外部存储器;系统运行时,从网络设备对应的子命令库中检索,就能保证检索到的语法符合前述网络设备的命令行界面cli;保证系统能方便地扩展到更多的未在系统训练中出现的网络配置命令,而不过度增加系统的复杂性;
8.语法检索器模块:该模块的功能是根据用户用自然语言所输入的网络配置意图,从所述的配置命令库模块中检索出最匹配的k条语法;语法检索器模块由意图-功能描述检
索子模块和功能描述-语法检索子模块组成;所述意图-功能描述检索子模块的功能是检索到与用户用自然语言所输入的网络配置意图最匹配的配置功能;所述功能描述-语法检索子模块的功能是在所述的最匹配的配置功能下,检索到与用户的网络配置意图最匹配的语法;k为自然数;
9.命令生成器模块:该模块的功能是根据用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出最匹配的k条语法,生成网络设备的网络配置命令及其上下文;命令生成器模块由编码器子模块和解码器子模块组成;
10.所述的命令生成器模块采用序列到序列seq2seq的编解码架构来实现;所述的编码器子模块把用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出最匹配的k条语法编码成特征向量;所述的解码器子模块根据该特征向量生成网络设备的网络配置命令及其上下文。
11.所述的配置命令库模块的构建过程是:解析器子模块从不同设备厂商的网络设备手册中提取配置信息,并按照统一手册格式umf进行存储;所述的统一手册格式umf具体为“键-值对”格式,其中“键”表示项目名称,“值”表示具体内容。
12.所述的意图-功能描述检索子模块由一个接收用户用自然语言所输入的网络配置意图的意图编码子网络、一个接收网络设备的功能描述的功能描述编码子网络和相似性度量子单元构成;
13.所述的意图编码子网络的功能是将用户用自然语言所输入的网络配置意图编码为高维空间的意图特征向量u;所述的功能描述编码子网络的功能是将网络设备的配置功能描述编码为高维空间的功能描述特征向量v;所述的相似性度量子单元的功能是计算所述的意图特征向量u与所述的功能描述特征向量v之间的相似度;
14.所述的意图编码子网络和所述的功能描述编码子网络均由confbert网络构成,所述的两个子网络具有相同的网络参数;所述的confbert网络是与网络设备的网络配置技术领域相适配的bert网络;所述的confbert网络是利用一个大型的包含无监督网络配置信息和网络配置注释的混合语料库,对bert网络进行再训练获得的,在再训练过程中使用与bert网络相同的训练任务和训练目标。
15.所述的confbert网络的再训练过程是:
16.给定意图-功能描述对的集合式子中,表示第i个意图,表示第i个功能描述,m表示意图-功能描述对的数目;训练的损失函数定义如下:
[0017][0018]
上式中,和分别表示和的特征向量;τc表示温度超参数;sim表示余弦相似度,li表示第i个意图所对应的损失。
[0019]
所述的功能描述-语法检索子模块通过最匹配的配置功能,找到一组语法,然后计算用户的网络配置意图与该组内每个语法的相关性分数,来找到与用户的网络配置意图最匹配的语法,即相关性分数最高的语法;
[0020]
前述的用户的网络配置意图与语法的相关性分数的计算过程如下:
[0021]
(41)对意图i进行分词得到i1,
…
,i
|i|
;|i|表示意图i所含的分词数目;
[0022]
(42)对于一个意图一个语法和一组参数以及该参数的描述如果参数pk出现在语法s中,则在语法所含的参数pk后添加对应的参数描述pdk,得到增强后的语法遍历所有的参数;si表示语法s的第i个词,|s|表示语法s的长度,|p|表示参数集合p的大小;|pd|表示参数描述集合pd的大小;
[0023]
(43)计算意图i的第j个分词ij在语法s'中出现的次数,即词频
[0024]
(44)计算ij的权重,即逆文档频率wj=idf(ij);
[0025]
(45)计算ij和语法s'之间的相关性分数
[0026]
式子中
[0027]
k1是用来标准化文章词频范围的参数,取值范围0《k1《3;bt是另一个可调参数,取值范围0《bt《1,用来决定用文档长度来表示信息量的范围,l
s'
是语法s'的长度,l
ave
是所有语法的平均长度;
[0028]
(46)计算意图i和语法s'之间的相关性分数为即为意图i和语法s的相关性分数。
[0029]
所述的命令生成器模块中的编码器子模块使用所述的confbert网络进行构建,自适应地捕捉上下文的依赖关系;按照bert网络的输入格式,在用户用自然语言所输入的网络配置意图i前添加[cls],与所述的语法检索器模块所检索出的最匹配的k条语法混合,形成意图-语法序列x=[cls],i,[sep],[s],s1,[s],s2,
…
,[s],si,
…
,[s],sk,[sep],式中si表示第i条语法,[s]表示分隔符,在最后一条语法后面添加[sep];然后用所述的confbert编码该意图-语法序列x,接着用双向lstm形成所述的意图-语法序列x的编码向量|x|为编码向量h
x
的长度,n为编码向量h
x
的维度。
[0030]
所述的命令生成器模块中的解码器子模块使用一个引入复制机制的改进的指针生成网络构成;
[0031]
所述的复制机制是通过多头注意力机制实现的;在每个时间步t,给定解码器状态h
t
和编码器输出的意图-语法序列x的编码向量h
x
,计算多头注意力:
[0032][0033][0034]
其中h∈[1,
…
,h]是注意力头的编号,h是注意力头的总数,上标(h)表示第h个注意力头;为第h个注意力头可学习的参数,表示在时间步t时第h个注意力头
对x中第j个词的注意力分数,表示在时间步t时第h个注意力头将x中第j个词复制到当前解码结果中的归一化权重,表示在时间步t时第h个注意力头加权后的注意力向量;h
xj
表示意图-语法序列x的编码向量h
x
的第j个分量;
[0035]
意图中不会明确提到默认参数,因此需要解码器子模块生成额外的词来作为复制机制的补充;在时间步t时,从输出词汇表生成的概率定义为:
[0036][0037]
其中b
gen
为可学习的参数,则在时间步t时,复制概率定义为
[0038]
在时间步t时,总的输出概率可以定义为
[0039]
其中y
t
为时间步t时所述解码器子模块的输出,是时间步t时所述解码器子模块的输出分布,|x|是意图-语法序列x的编码向量h
x
的长度;表示在时间步t时第h个注意力头将x中第j个词复制到当前解码结果中的归一化权重;
[0040]
所述的解码器子模块根据特征向量生成网络设备的网络配置命令及其上下文的具体内容是包括如下操作步骤:
[0041]
(11)确定所述解码器的初始隐藏状态h0;
[0042]
(12)找出所检索到的语法s的所有派生的集合set
derive
;
[0043]
(13)在每一个波束搜索解码时间步t,计算波束中的b个新解码器状态和从解码时间步1到解码时间步t预测的部分命令段b为自然数;
[0044]
(14)对于波束搜索中的每个波束,如果上述部分命令段中的一个部分命令段匹配语法s的某一个派生,则将该部分命令段保留在波束中,否则移除它;
[0045]
(15)重复执行步骤(13)和步骤(14);
[0046]
(16)返回条件概率最高的命令式子中为生成部分命令段的条件概率。
[0047]
步骤(12)中所述的找出所检索到的语法s的所有派生的集合set
derive
的具体内容是语法s的所有派生的集合set
derive
是从该语法s的语法派生图g中获得;所述的语法派生图g的生成过程包括如下操作步骤:
[0048]
(21)利用pyparsing库将语法s解析为一个嵌套列表嵌套列表由|l|个元素构成,元素分为不可解析元素和可解析元素,可解析元素又可以看作嵌套列表;
[0049]
(22)初始化语法派生图g,该图是一个有向图,包含一个起始节点node
start
;
[0050]
(23)建立值为第一个不可解析的元素的节点,将起始节点连接到该节点;
[0051]
(24)判断嵌套列表中各元素的关系是继承关系还是平行关系,若是继承关系,则称被继承元素对应的节点为所有继承元素对应节点的父节点node
parent
,若是平行关系,在图g中添加若干条父节点指向平行元素对应节点的边;
[0052]
(25)若当前元素ei为可选元素,则建立空节点node
blank
,父节点node
parent
连接到该空节点node
blank
上,同时将父节点node
parent
也连接到该可选元素对应的节点上;所述可选元素即语法中以[]包围的元素;
[0053]
(26)递归执行步骤(24)(25)(26),直到解析到所述嵌套列表l最后一层;
[0054]
(27)对图g进行化简,遍历图g中的节点,如果两个节点通过空节点相连,则去除两个节点和空节点之间的边,并添加一条两个节点间直接相连的边,得到语法s的语法派生图g。
[0055]
基于自然语言的网络配置命令生成方法,所述方法包括如下操作步骤:
[0056]
(31)配置命令库模块的解析器子模块将网络设备手册中的半结构化的配置信息提取为可供检索的结构化数据即结构化的网络设备的配置功能;所述的配置命令库模块根据网络设备的厂家名称、设备类型和操作系统版本将所得到的结构化的配置功能划分为子集,存储在所述配置命令库模块中不同的子命令库中;
[0057]
(32)语法检索器模块根据用户用自然语言所输入的网络配置意图,从所述的配置命令库模块中检索出最匹配的k条语法;具体过程是:先由意图-功能描述检索子模块检索到与用户用自然语言所输入的网络配置意图最匹配的配置功能;再由功能描述-语法检索子模块在所述的最匹配的配置功能下,检索到与用户的网络配置意图最匹配的语法;
[0058]
(33)命令生成器模块根据用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出的最匹配的k条语法,生成网络设备的网络配置命令及其上下文;具体过程是:先由编码器子模块把用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出的最匹配的k条语法编码成特征向量;再由解码器子模块根据该特征向量生成网络设备的网络配置命令及其上下文。
[0059]
本发明的有益效果在于:本发明所提出的系统和方法解决了在平行网络配置语料匮乏的情况下,自动生成可靠、广泛适用的网络配置命令的问题,不但减少了对平行数据的依赖,而且避免了人工注释的成本;本发明所提出的系统和方法的核心是实现了一种由粗到细的语法检索和语法引导的解码过程,利用功能描述弥补意图和语法之间的语义差距,能够在不同厂家网络设备之间共享相似表达,获得跨网络设备厂商的扩展性,具有网络设备配置命令自动生成的高准确性。
附图说明
[0060]
图1是本发明提出的基于自然语言的网络配置命令生成系统的模块示意图;
[0061]
图2是本发明提出的配置命令库模块的结构示意图;
[0062]
图3是本发明提出的语法检索器模块的结构示意图;
[0063]
图4是本发明提出的命令生成器模块的结构示意图;
[0064]
图5是本发明提出的意图-功能描述检索子模块的结构示意图;
[0065]
图6是本发明实施例中解码器子模块根据特征向量生成网络设备的网络配置命令的举例示意图;
[0066]
图7是本发明实施例中语法派生图g的一个举例的中间结果图;
[0067]
图8是本发明实施例中语法派生图g的一个举例的最终结果图;
[0068]
图9是本发明提出的基于自然语言的网络配置命令生成方法的工作流程示意图;
具体实施方式
[0069]
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
[0070]
参见图1,介绍本发明提出的基于自然语言的网络配置命令生成系统,所述系统包括如下模块:
[0071]
配置命令库模块:该模块的功能是存储网络设备的所有配置功能;参见图2,配置命令库模块包括解析器子模块和不同的子命令库,是一个可供检索的存储结构,是存储网络设备的所有配置功能的集合;所述的子命令库是指根据网络设备的厂家名称、设备类型和操作系统版本所划分出来的网络设备的配置功能的子集;所述的解析器子模块的功能是将网络设备手册中的半结构化的配置信息提取为可供检索的结构化数据;
[0072]
所述的配置命令库模块是一个显式的外部存储器;系统运行时,从网络设备对应的子命令库中检索,就能保证检索到的语法符合前述网络设备的命令行界面cli;保证系统能方便地扩展到更多的未在系统训练中出现的网络配置命令,而不过度增加系统的复杂性;
[0073]
语法检索器模块:该模块的功能是根据用户用自然语言所输入的网络配置意图,从所述的配置命令库模块中检索出最匹配的k条语法;
[0074]
参见图3,语法检索器模块由意图-功能描述检索子模块和功能描述-语法检索子模块组成;所述意图-功能描述检索子模块的功能是检索到与用户用自然语言所输入的网络配置意图最匹配的配置功能;所述功能描述-语法检索子模块的功能是在所述的最匹配的配置功能下,检索到与用户的网络配置意图最匹配的语法;k为自然数;
[0075]
命令生成器模块:该模块的功能是根据用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出最匹配的k条语法,生成网络设备的网络配置命令及其上下文;参见图4,命令生成器模块由编码器子模块和解码器子模块组成;
[0076]
所述的命令生成器模块采用序列到序列seq2seq的编解码架构来实现;所述的编码器子模块把用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出最匹配的k条语法编码成特征向量;所述的解码器子模块根据该特征向量生成网络设备的网络配置命令及其上下文。
[0077]
表1
[0078]
键值的类型功能名称字符串功能描述字符串语法非空字符串列表参数描述字典列表命令模式非空字符串列表示例嵌套列表
[0079]
所述的配置命令库模块的构建过程是:解析器子模块从不同设备厂商的网络设备手册中提取配置信息,并按照统一手册格式umf进行存储;参见表1,所述的统一手册格式umf具体为“键-值对”格式,其中“键”表示项目名称,“值”表示具体内容。
[0080]
参见图5,所述的意图-功能描述检索子模块由一个接收用户用自然语言所输入的
网络配置意图的意图编码子网络、一个接收网络设备的功能描述的功能描述编码子网络和相似性度量子单元构成;
[0081]
所述的意图编码子网络的功能是将用户用自然语言所输入的网络配置意图编码为高维空间的意图特征向量u;所述的功能描述编码子网络的功能是将网络设备的配置功能描述编码为高维空间的功能描述特征向量v;所述的相似性度量子单元的功能是计算所述的意图特征向量u与所述的功能描述特征向量v之间的相似度;
[0082]
所述的意图编码子网络和所述的功能描述编码子网络均由confbert网络构成,所述的两个子网络具有相同的网络参数;所述的confbert网络是与网络设备的网络配置技术领域相适配的bert网络;关于bert网络的详细信息可参见文献(kenton j d m w c,toutanova l k.bert:pre-training of deep bidirectional transformers for language understanding[c]//proceedings ofnaacl-hlt.2019:4171-4186.);所述的confbert网络是利用一个大型的包含无监督网络配置信息和网络配置注释的混合语料库,对bert网络进行再训练获得的,在再训练过程中使用与bert网络相同的训练任务和训练目标。
[0083]
所述的confbert网络的再训练过程是:
[0084]
给定意图-功能描述对的集合式子中,表示第i个意图,表示第i个功能描述,m表示意图-功能描述对的数目;训练的损失函数定义如下:
[0085][0086]
上式中,和分别表示和的特征向量;τc表示温度超参数,在实施例中取值为0.05;sim表示余弦相似度,li表示第i个意图所对应的损失。
[0087]
所述的功能描述-语法检索子模块通过最匹配的配置功能,找到一组语法,然后计算用户的网络配置意图与该组内每个语法的相关性分数,来找到与用户的网络配置意图最匹配的语法,即相关性分数最高的语法;
[0088]
前述的用户的网络配置意图与语法的相关性分数的计算过程如下:
[0089]
(41)对意图i进行分词得到i1,
…
,i
|i|
;|i|表示意图i所含的分词数目;
[0090]
(42)对于一个意图一个语法和一组参数以及该参数的描述如果参数pk出现在语法s中,则在语法所含的参数pk后添加对应的参数描述pdk,得到增强后的语法遍历所有的参数;si表示语法s的第i个词,|s|表示语法s的长度,|p|表示参数集合p的大小;|pd|表示参数描述集合pd的大小;
[0091]
(43)计算意图i的第j个分词ij在语法s'中出现的次数,即词频
[0092]
(44)计算ij的权重,即逆文档频率wj=idf(ij);
[0093]
(45)计算ij和语法s'之间的相关性分数
[0094]
式子中
[0095]
k1是用来标准化文章词频范围的参数,取值范围0《k1《3;bt是另一个可调参数,取值范围0《bt《1,用来决定用文档长度来表示信息量的范围,l
s'
是语法s'的长度,l
ave
是所有语法的平均长度;
[0096]
(46)计算意图i和语法s'之间的相关性分数为即为意图i和语法s的相关性分数。
[0097]
上述过程,举例说明如下。
[0098]
给定一个意图“create a user acl6 numbered 6999.”,一个语法“acl ipv6[number]《ucl-acl6-number》[match-order{auto|config}]”,和一组参数和对应的参数描述(参见表2)。
[0099]
表2
[0100][0101][0102]
则根据上述步骤,增强后的语法为“acl ipv6[number]《ucl-acl6-number》creates a user acl6 with a number[match-order indicates the order in which acl6 rules are matched{auto indicates the automatic order,meaning that acl6 rules are matched based on the depth-first principle|config indicates the configuration order,meaning that acl6 rules are matched in the order they are configured}]”。计算意图中的所有分词的词频,如分词“user”的词频为1。计算意图中的所有分词的逆文档频率,如分词“user”的逆文档频率为0.85。计算分词和语法之间的相关性分数,如分词“user”和语法的相关性分数为0.87。对意图中所有的分词和语法的相关性分数加权求和,得到意图和语法的相关性分数为0.58。
[0103]
所述的命令生成器模块中的编码器子模块使用所述的confbert网络进行构建,自适应地捕捉上下文的依赖关系;按照bert网络的输入格式,在用户用自然语言所输入的网络配置意图i前添加[cls],与所述的语法检索器模块所检索出的最匹配的k条语法混合,形成意图-语法序列x=[cls],i,[sep],[s],s1,[s],s2,
…
,[s],si,
…
,[s],sk,[sep],式中si表示第i条语法,式中si表示第i条语法,[s]表示分隔符,在最后一条语法sk后面添加[sep];
然后用所述的confbert编码该意图-语法序列x,接着用双向lstm形成所述的意图-语法序列x的编码向量|x|为编码向量h
x
的长度,n为编码向量h
x
的维度;
[0104]
上述过程举例说明如下:
[0105]
拼接意图和语法拼接,得到“[cls]configurethetcptransportconnectiontobepassiveforneighbor172.16.1.2[sep][s]neighbor{ip-address|peer-group-name}transport{connection-mode{active|passive}|path-mtu-discovery[disable]|multi-session|single-session}[s]neighbor{ip-address|peer-group-name}local-as[autonomous-system-number[no-prepend[replace-as[dual-as]]]][sep],
[0106]
即意图-语法序列x,通过confbert和双向lstm得到编码向量h
x
为
[0107][0108]
关于双向lstm网络的详细信息可参见文献(gravesa,schmidhuberj.framewisephonemeclassificationwithbidirectionallstmandotherneuralnetworkarchitectures[j].neuralnetworks,2005,18(5-6):602-610.)。
[0109]
所述的命令生成器模块中的解码器子模块使用一个引入复制机制的改进的指针生成网络构成;
[0110]
所述的复制机制是通过多头注意力机制实现的;在每个时间步t,给定解码器状态h
t
和编码器输出的意图-语法序列x的编码向量h
x
,计算多头注意力:
[0111][0112][0113]
其中h∈[1,
…
,h]是注意力头的编号,h是注意力头的总数,上标(h)表示第h个注意力头;为第h个注意力头可学习的参数,表示在时间步t时第h个注意力头对x中第j个词的注意力分数,表示在时间步t时第h个注意力头将x中第j个词复制到当前解码结果中的归一化权重,表示在时间步t时第h个注意力头加权后的注意力向量;h
xj
表示意图-语法序列x的编码向量h
x
的第j个分量;
[0114]
意图中不会明确提到默认参数,因此需要解码器子模块生成额外的词来作为复制机制的补充;在时间步t时,从输出词汇表(所述的输出词表是解码器子模块在生成文本时,可以选择的词的集合,在实施例中,选择长度为32000的固定词表)生成的概率定义为:
[0115][0116]
其中b
gen
为可学习的参数,则在时间步t时,复制概率定义为
[0117]
在时间步t时,总的输出概率可以定义为
[0118]
其中y
t
为时间步t时所述解码器子模块的输出,pv(y
t
)是时间步t时所述解码器子模块的输出分布,|x|是意图-语法序列x的编码向量h
x
的长度;表示在时间步t时第h个注意力头将x中第j个词复制到当前解码结果中的归一化权重;
[0119]
所述的解码器子模块根据特征向量生成网络设备的网络配置命令及其上下文的具体内容是包括如下操作步骤:
[0120]
(11)确定所述解码器的初始隐藏状态h0;
[0121]
(12)找出所检索到的语法s的所有派生的集合set
derive
;
[0122]
(13)在每一个波束搜索解码时间步t,计算波束中的b个新解码器状态和从解码时间步1到解码时间步t预测的部分命令段b为自然数;
[0123]
(14)对于波束搜索中的每个波束,如果上述部分命令段中的一个部分命令段匹配语法s的某一个派生,则将该部分命令段保留在波束中,否则移除它;
[0124]
(15)重复执行步骤(13)和步骤(14);
[0125]
(16)返回条件概率最高的命令式子中为生成部分命令段的条件概率。
[0126]
参见图6,上述操作步骤举例说明如下。
[0127]
例如语法s为:
[0128]
neighbor{ip-address|peer-group-name}transport{connection-mode{active|passive}|path-mtu-discovery[disable]|multi-session|single-session};
[0129]
其所有派生的集合set
derive
为:
[0130]
['neighbor','ip-address','transport','connection-mode','active']
[0131]
['neighbor','ip-address','transport','connection-mode','passive']
[0132]
['neighbor','ip-address','transport','path-mtu-discovery']
[0133]
['neighbor','ip-address','transport','path-mtu-discovery','disable']
[0134]
['neighbor','ip-address','transport','multi-session']
[0135]
['neighbor','ip-address','transport','single-session']
[0136]
['neighbor','peer-group-name','transport','connection-mode','active']
[0137]
['neighbor','peer-group-name','transport','connection-mode','passive']
[0138]
['neighbor','peer-group-name','transport','path-mtu-discovery']
[0139]
['neighbor','peer-group-name','transport','path-mtu-discovery','disable']
[0140]
['neighbor','peer-group-name','transport','multi-session']['neighbor','peer-group-name','transport','single-session']
[0141]
从《start》开始解码,假设解码到时间步t5,保留条件概率最高的4个解码状态,其对应的部分令段分别为,为neighbor 172.16.1.2transport connection-mode active,为neighbor172.16.1.2transport connection-mode passive,为neighbor 172.16.1.2transport path-mtu-discovery disable,为neighbor 172.16.1.2transportpath-mtu-discovery enable,其中其中匹配上述set
derive
中语法s的某一个派生,而不匹配,则选择从波束中移除其对应的状态,直到最后一个时间步t6,返回条件概率最高的命令neighbor 172.16.1.2transport connection-mode passive,其分数为-3.7。
[0142]
步骤(12)中所述的找出所检索到的语法s的所有派生的集合set
derive
的具体内容是语法s的所有派生的集合set
derive
是从该语法s的语法派生图g中获得;所述的语法派生图g的生成过程包括如下操作步骤:
[0143]
(21)利用pyparsing库将语法s(例如:t{a|b|c[d]})解析为一个嵌套列表(例如:['t',['a','|','b','|','c','[','d',']']),嵌套列表由|l|个元素构成,元素分为不可解析元素(例如:'t')和可解析元素(例如:['a','|','b','|','c','[','d',']']),可解析元素又可以看作嵌套列表;
[0144]
(22)初始化语法派生图g,该图是一个有向图,包含一个起始节点node
start
;
[0145]
(23)建立值为第一个不可解析的元素(例如:'t')的节点,将起始节点连接到该节点;
[0146]
(24)判断嵌套列表中各元素的关系是继承关系还是平行关系,若是继承关系(例如:元素[['a'],'|',['b'],'|',['c',['[',['d'],']']]]继承于元素't'),则称被继承元素对应的节点为所有继承元素对应节点的父节点node
parent
,若是平行关系(用竖线|分隔的若干元素),在图g中添加若干条父节点指向平行元素对应节点的边(例如:'t'指向['a'],'t'指向['b'],'t'指向['c',['[',['d'],']']]);关于继承关系,举例说明如下:对于定义形式为x{y|z}的语法,则称{}中的元素y、z与x构成继承关系,x是被继承元素,y和z是继承元素;语法中以|分隔的若干元素构成平行关系,平行元素即具有平行关系的元素;
[0147]
(25)若当前元素ei为可选元素(以多层中括号表示,如['[',['d'],']']),则建立空节点node
blank
,父节点node
parent
连接到该空节点node
blank
上,同时将父节点node
parent
也连接到该可选元素对应的节点上;所述可选元素即语法中以[]包围的元素;
[0148]
(26)递归执行步骤(24)(25)(26),直到解析到所述嵌套列表l最后一层;
[0149]
(27)对图g进行化简,遍历图g中的节点,如果两个节点通过空节点相连,则去除两个节点和空节点之间的边,并添加一条两个节点间直接相连的边,得到语法s的语法派生图g。
[0150]
参见图7和图8,对上述操作步骤举例说明如下。
[0151]
利用pyparsing库将语法neighbor{ip-address|peer-group-name}transport{connection-mode{active|passive}|path-mtu-discovery[disable]|multi-session|single-session}解析为嵌套列表['neighbor',[['ip-address'],'|',['peer-group-name']],'transport',[['connection-mode',[['active'],'|',['passive']]],'|',['
path-mtu-discovery',['[',['disable'],']']],'|',['multi-session'],'|',['single-session']],'end']。初始化有一个起始节点node
start
,neighbor为第一个不可解析元素,将node
start
连接到该其对应的节点;接下来判断各元素之间的关系,如{ip-address|peer-group-name},{}中的两个元素为平行关系,而neighbor和它们又构成继承关系,neighbor是被继承元素,ip-address和peer-group-name是继承元素,因此在图g中添加父节点neighbor指向ip-address和peer-group-name的边;解析结果中的disable为可选元素(以['[',['disable'],']']表示),创建空节点,将父节点path-mtu-discovery连接到空节点上,同时连接到disable对应的节点上。同理,递归处理嵌套列表中的其它元素(参见图7),并对涉及空节点的边进行化简,得到最终的语法派生图g(图8)。
[0152]
参见图9,基于自然语言的网络配置命令生成方法,所述方法包括如下操作步骤:
[0153]
(31)配置命令库模块的解析器子模块将网络设备手册中的半结构化的配置信息提取为可供检索的结构化数据即结构化的网络设备的配置功能;所述的配置命令库模块根据网络设备的厂家名称、设备类型和操作系统版本将所得到的结构化的配置功能划分为子集,存储在所述配置命令库模块中不同的子命令库中;
[0154]
(32)语法检索器模块根据用户用自然语言所输入的网络配置意图,从所述的配置命令库模块中检索出最匹配的k条语法;
[0155]
表3
[0156][0157]
参见表3,不同厂家的网络设备的配置命令语法风格相差很大,为了实现配置意图到语法的检索目标,本发明提出了一个由粗到细的两阶段检索过程;
[0158]
具体过程是:先由意图-功能描述检索子模块检索到与用户用自然语言所输入的网络配置意图最匹配的配置功能;再由功能描述-语法检索子模块在所述的最匹配的配置功能下,检索到与用户的网络配置意图最匹配的语法;
[0159]
表4
[0160][0161]
参见表4,举例说明一下上述过程。
[0162]
首先,意图-功能描述检索子模块找到和意图“create auseracl6 numbered6999”最匹配的配置功能“acl ipv6 number”,该配置功能下共包含8条语法,然后功能描述-语法检索子模块从中找到最匹配的语法“acl ipv6[number]ucl-acl6-number[match-order{auto|config}]”;
[0163]
(33)命令生成器模块根据用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出的最匹配的k条语法,生成网络设备的网络配置命令及其上下文;具体过程是:先由编码器子模块把用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出的最匹配的k条语法编码成特征向量;再由解码器子模块根据该特征向量生成网络设备的网络配置命令及其上下文。
[0164]
发明人在华为、思科、诺基亚、瞻博等不同厂家的网络设备上进行了大量实验,实验信息如下:
[0165]
(1)实验环境
[0166]
利用scrapy框架来实现特定于供应商的解析器,并使它们适应其它设备手册。发明人使用pyparsing库来解析命令语法以获得其层次结构。此外,发明人预先计算了conflib中所有功能描述的特征向量,并使用faiss进行索引,faiss是一种用于高效向量搜索的开源工具包。实验检索前3个语法。系统基于pytorch库实现的。所有实验均在ubuntu 18.04上进行,配备10核4.7g hz cpu、128gb内存和2个nvidiartx3090 gpu。
[0167]
(2)实验数据集
[0168]
表5
[0169]
供应商型号版本配置功能数量配置示例数量华为ne40evrpv81229815066思科ncs5000iosxrv7.415182485诺基亚7750srsrosv21.1014530/瞻博mx240junosv22.311038/
[0170]
为了评估整体表现,发明人收集了来自不同厂商的四个语料库,包括华为、思科、
诺基亚和瞻博。语料库从官方发布的设备手册中获得,以确保规范性和可靠性。表5描述了详细信息,其中涉及设备型号和系统版本以及关键统计数据。发明人使用“配置功能”构建检索库,并从“配置示例”中构建意图-命令对。发明人总共使用17k对来形成训练集(inconf)。对于测试,发明人邀请工程师手动编写一组意图,以便进行更现实的评估。每人20个,总共80个,以确保表达的多样性,然后手动翻译成命令,形成四个测试集(华为,思科,诺基亚,瞻博)。
[0171]
(3)评估指标
[0172]
实验评估中考虑了两个指标:双语评估替补(bleu)和精确匹配率(em)。bleu通常用于机器翻译,测量预测结果和参考命令之间的重叠度以确定它们是否相似。em是一个更严格的指标,可以计算为其中n表示数据集中的示例总数,n
em
表示与参考命令完全匹配的示例数量。
[0173]
(4)实验结果
[0174]
表6
[0175]
设备厂商华为思科诺基亚瞻博bleu指标77.0575.3170.1371.33em指标64.1160.3251.1952.42
[0176]
实验结果如表6所示,总体上获得了良好的实验结果,而且网络配置命令生成速度快。实验结果表明本发明所提出的系统和方法是有效可行的。
技术特征:
1.基于自然语言的网络配置命令生成系统,其特征在于:所述系统包括如下模块:配置命令库模块:该模块的功能是存储网络设备的所有配置功能;配置命令库模块包括解析器子模块和不同的子命令库,是一个可供检索的存储结构,是存储网络设备的所有配置功能的集合;所述的子命令库是指根据网络设备的厂家名称、设备类型和操作系统版本所划分出来的网络设备的配置功能的子集;所述的解析器子模块的功能是将网络设备手册中的半结构化的配置信息提取为可供检索的结构化数据;所述的配置命令库模块是一个显式的外部存储器;系统运行时,从网络设备对应的子命令库中检索,就能保证检索到的语法符合前述网络设备的命令行界面cli;保证系统能方便地扩展到更多的未在系统训练中出现的网络配置命令,而不过度增加系统的复杂性;语法检索器模块:该模块的功能是根据用户用自然语言所输入的网络配置意图,从所述的配置命令库模块中检索出最匹配的k条语法;语法检索器模块由意图-功能描述检索子模块和功能描述-语法检索子模块组成;所述意图-功能描述检索子模块的功能是检索到与用户用自然语言所输入的网络配置意图最匹配的配置功能;所述功能描述-语法检索子模块的功能是在所述的最匹配的配置功能下,检索到与用户的网络配置意图最匹配的语法;k为自然数;命令生成器模块:该模块的功能是根据用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出最匹配的k条语法,生成网络设备的网络配置命令及其上下文;命令生成器模块由编码器子模块和解码器子模块组成;所述的命令生成器模块采用序列到序列seq2seq的编解码架构来实现;所述的编码器子模块把用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出最匹配的k条语法编码成特征向量;所述的解码器子模块根据该特征向量生成网络设备的网络配置命令及其上下文。2.根据权利要求1所述的基于自然语言的网络配置命令生成系统,其特征在于:所述的配置命令库模块的构建过程是:解析器子模块从不同设备厂商的网络设备手册中提取配置信息,并按照统一手册格式umf进行存储;所述的统一手册格式umf具体为“键-值对”格式,其中“键”表示项目名称,“值”表示具体内容。3.根据权利要求1所述的基于自然语言的网络配置命令生成系统,其特征在于:所述的意图-功能描述检索子模块由一个接收用户用自然语言所输入的网络配置意图的意图编码子网络、一个接收网络设备的功能描述的功能描述编码子网络和相似性度量子单元构成;所述的意图编码子网络的功能是将用户用自然语言所输入的网络配置意图编码为高维空间的意图特征向量u;所述的功能描述编码子网络的功能是将网络设备的配置功能描述编码为高维空间的功能描述特征向量v;所述的相似性度量子单元的功能是计算所述的意图特征向量u与所述的功能描述特征向量v之间的相似度;所述的意图编码子网络和所述的功能描述编码子网络均由confbert网络构成,所述的两个子网络具有相同的网络参数;所述的confbert网络是与网络设备的网络配置技术领域相适配的bert网络;所述的confbert网络是利用一个大型的包含无监督网络配置信息和网络配置注释的混合语料库,对bert网络进行再训练获得的,在再训练过程中使用与bert网络相同的训练任务和训练目标。4.根据权利要求3所述的基于自然语言的网络配置命令生成系统,其特征在于:所述的
语法序列x,接着用双向lstm形成所述的意图-语法序列x的编码向量|x|为编码向量h
x
的长度,n为编码向量h
x
的维度。7.根据权利要求1所述的基于自然语言的网络配置命令生成系统,其特征在于:所述的命令生成器模块中的解码器子模块使用一个引入复制机制的改进的指针生成网络构成;所述的复制机制是通过多头注意力机制实现的;在每个时间步t,给定解码器状态h
t
和编码器输出的意图-语法序列x的编码向量h
x
,计算多头注意力:计算多头注意力:其中h∈[1,
…
,h]是注意力头的编号,h是注意力头的总数,上标(h)表示第h个注意力头;为第h个注意力头可学习的参数,表示在时间步t时第h个注意力头对x中第j个词的注意力分数,表示在时间步t时第h个注意力头将x中第j个词复制到当前解码结果中的归一化权重,表示在时间步t时第h个注意力头加权后的注意力向量;h
xj
表示意图-语法序列x的编码向量h
x
的第j个分量;意图中不会明确提到默认参数,因此需要解码器子模块生成额外的词来作为复制机制的补充;在时间步t时,从输出词汇表生成的概率定义为:其中b
gen
为可学习的参数,则在时间步t时,复制概率定义为在时间步t时,总的输出概率可以定义为其中y
t
为时间步t时所述解码器子模块的输出,是时间步t时所述解码器子模块的输出分布,|x|是意图-语法序列x的编码向量h
x
的长度;表示在时间步t时第h个注意力头将x中第j个词复制到当前解码结果中的归一化权重。8.根据权利要求1所述的基于自然语言的网络配置命令生成系统,其特征在于:所述的解码器子模块根据特征向量生成网络设备的网络配置命令及其上下文的具体内容是包括如下操作步骤:(11)确定所述解码器的初始隐藏状态h0;(12)找出所检索到的语法s的所有派生的集合set
derive
;(13)在每一个波束搜索解码时间步t,计算波束中的b个新解码器状态和从解码时间步1到解码时间步t预测的部分命令段b为自然数;(14)对于波束搜索中的每个波束,如果上述部分命令段中的一个部分命令段匹
配语法s的某一个派生,则将该部分命令段保留在波束中,否则移除它;(15)重复执行步骤(13)和步骤(14);(16)返回条件概率最高的命令式子中为生成部分命令段的条件概率。9.根据权利要求8所述的基于自然语言的网络配置命令生成系统,其特征在于:步骤(12)中所述的找出所检索到的语法s的所有派生的集合set
derive
的具体内容是语法s的所有派生的集合set
derive
是从该语法s的语法派生图g中获得;所述的语法派生图g的生成过程包括如下操作步骤:(21)利用pyparsing库将语法s解析为一个嵌套列表嵌套列表由|l|个元素构成,元素分为不可解析元素和可解析元素,可解析元素又可以看作嵌套列表;(22)初始化语法派生图g,该图是一个有向图,包含一个起始节点node
start
;(23)建立值为第一个不可解析的元素的节点,将起始节点连接到该节点;(24)判断嵌套列表中各元素的关系是继承关系还是平行关系,若是继承关系,则称被继承元素对应的节点为所有继承元素对应节点的父节点node
parent
,若是平行关系,在图g中添加若干条父节点指向平行元素对应节点的边;语法中以|分隔的若干元素构成平行关系,平行元素即具有平行关系的元素;(25)若当前元素e
i
为可选元素,则建立空节点node
blank
,父节点node
parent
连接到该空节点node
blank
上,同时将父节点node
parent
也连接到该可选元素对应的节点上;所述可选元素即语法中以[]包围的元素;(26)递归执行步骤(24)(25)(26),直到解析到所述嵌套列表l最后一层;(27)对图g进行化简,遍历图g中的节点,如果两个节点通过空节点相连,则去除两个节点和空节点之间的边,并添加一条两个节点间直接相连的边,得到语法s的语法派生图g。10.基于自然语言的网络配置命令生成方法,其特征在于:所述方法包括如下操作步骤:(31)配置命令库模块的解析器子模块将网络设备手册中的半结构化的配置信息提取为可供检索的结构化数据即结构化的网络设备的配置功能;所述的配置命令库模块根据网络设备的厂家名称、设备类型和操作系统版本将所得到的结构化的配置功能划分为子集,存储在所述配置命令库模块中不同的子命令库中;(32)语法检索器模块根据用户用自然语言所输入的网络配置意图,从所述的配置命令库模块中检索出最匹配的k条语法;具体过程是:先由意图-功能描述检索子模块检索到与用户用自然语言所输入的网络配置意图最匹配的配置功能;再由功能描述-语法检索子模块在所述的最匹配的配置功能下,检索到与用户的网络配置意图最匹配的语法;(33)命令生成器模块根据用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出的最匹配的k条语法,生成网络设备的网络配置命令及其上下文;具体过程是:先由编码器子模块把用户用自然语言所输入的网络配置意图和所述的语法检索器模块所检索出的最匹配的k条语法编码成特征向量;再由解码器子模块根据该特征向量生成网络设备的网络配置命令及其上下文。
技术总结
基于自然语言的网络配置命令生成系统,包括如下模块:配置命令库模块、语法检索器模块和命令生成器模块;基于自然语言的网络配置命令生成方法,包括如下操作步骤:(1)配置命令库模块将网络设备手册中的半结构化的配置信息提取为结构化的网络设备的配置功能;(2)语法检索器模块根据用户用自然语言所输入的网络配置意图,从配置命令库模块中检索出最匹配的k条语法;(3)命令生成器模块根据用户用自然语言所输入的网络配置意图和语法检索器模块所检索出的最匹配的k条语法,生成网络设备的网络配置命令及其上下文。络配置命令及其上下文。络配置命令及其上下文。
技术研发人员:徐童 赵津宇 张磊 孙海峰 王敬宇 戚琦 庄子睿 廖行健
受保护的技术使用者:北京邮电大学
技术研发日:2023.05.10
技术公布日:2023/8/6
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种新能源汽车冷媒直冷式热管理系统的制作方法 下一篇:一种投粉装置