[0022] 下面将结合附图详细的说明本发明的技术方案。
[0023] 参照图1,图2和图3,一种基于文本语义的密钥生成技术,包括以下步骤:
[0024] 步骤(1)、构建带有类别标签的自然语言语义密钥训练语料库,作为训练数据集L1。
[0025] 传统的语义分类任务只是将语义类似,或相同话题的语句作为同一类。为了能够更准确的将语义不完全相同的语句分开,需要构造语义密钥训练数据集。每一个类别的语句内容不同但语义相同,且每个类别语句数量达到n1条,n1≥50;语义密钥训练数据集中每条语句均标注有所属类别标签。训练过程中,输入为数据集中的语句,输出为该语句所属类别。
[0026] 步骤(2)、构建自然语言语义密钥混合深度神经网络,其输入为训练数据集L1,输出为自然语言语义密钥;
[0027] 所述的自然语言语义密钥混合深度神经网络包括自然语言语义提取器M1、语义特征稳定器M2、语义密钥提取器M3;
[0028] 2‑1构建自然语言语义提取器M1,M1由语义向量提取模块、语义向量重映射模块、语义特征提取及量化模块组成。其输入为训练数据集L1,输出为语义特征图像Qp。
[0029] 2‑2构建语义特征稳定器M2,用于将语义特征图像Qp重编码,获得特征向量序列L2;
[0030] 2‑3构建语义密钥提取器M3,用于从特征向量序列L2中提取出稳定的语义密钥序列;
[0031] 步骤(3)、采用训练好的自然语言语义密钥混合深度神经网络,以实现自然语言语义密钥生成。
[0032] 所述的步骤(2‑1)具体实现为:
[0033] 1)语义向量提取模块,以训练数据集L1为输入,初始语义向量Q1为输出[0034] 选取文本语义特征提取的常规神经网络预训练模型如BERT、GPT等,使用步骤(1)中构建的数据集L1微调后,将模型中的分类层去掉,剩余结构作为自然语言语义提取器M1的语义向量提取模块,该模块的输出为初始语义向量,记为语义向量Q1。
[0035] 2)语义向量重映射模块
[0036] 由于语义向量提取模块获得的初始语义向量仍然存在同类语句的语义向量差距较大的问题,因此,设计语义向量重映射模块,缩小类内语义向量距离,增大类间语义向量距离。
[0037] 所述的语义向量重映射模块包括以下两种方案:
[0038] 方案一:
[0039] 设Sa为语义为a的n2条(例如n2=30)语句经过语义向量提取模块提取到的初始语1 2 3 n2 T i
义向量集合,Sa=[Q1 ,Q1 ,Q1 ,...,Q1 ] ,其中Q1 表示第i条语句经过语义向量提取模块i
提取到的初始语义向量,T表示转置,i∈[1,n2],为m维向量,Q1j为第i条语句的初始语句语义向量在维度j上的数值;
[0040] 从集合Sa中任意选取一个初始语义向量Q1μ,μ∈[1,n2],分别计算Q1μ中j(j∈[1,m])维度上的数值与集合Sa其他初始语义向量在j维度上的数值的比值,并取所有比值的均值作为权重向量在j维度上的取值,公式为:
[0041]
[0042] 其中 表示第i条语句的初始语义向量的第j个维度分量,wj为n2条语义为a的语句的初始语义向量,在j维度上的权重取值;
[0043] W={w1,w2,w3,...,wm}
[0044] 其中W为权重向量,权重向量维度与初始语义向量维度相同;
[0045] 将权重向量W与语义向量提取模块获得的初始语义向量Q1进行点乘运算,得到语义向量Qs;
[0046] Qsi=W·Q1i
[0047] 其中,Qsi为第i条语句的语义向量。
[0048] 方案二:
[0049] 设Sa为语义为a的n2条(例如n2=30)语句经过语义向量提取模块提取到的初始语1 2 3 n2 T i
义向量集合,Sa=[Q1 ,Q1 ,Q1 ,...,Q1 ] ,其中,Q1表示第i条语句经过语义向量提取模块提取到的初始语义向量,i∈[1,n2],为m维向量,Q1ij为第i条语句的初始语句语义向量在维度j上的数值;
[0050] 搭建p1层(p1一般取1~3)全连接神经网络,将语义向量提取模块获得的初始语义向量Q1重映射为新的语义空间中的语义向量,记为语义向量Qs;神经网络的计算过程如下:
[0051] Qsi=g(βp1(...g(β2g(β1Q1i+b1)+b2)...)+bp1)
[0052] g(z)=1/(1+e‑z)
[0053] 其中βθ与bθ为第θ层神经网络的重映射参数,βθ为神经网络的权重系数,为以该层i i神经结点个数为行数,以Q1 维度为列数的矩阵。bθ为偏置系数,为与Q1维度相同的向量。权重系数βθ与语义向量的乘积与偏置系数bθ相加后,经函数g激活后即为经过第i层映射后的i
语义向量,经过p1层映射后的语义向量为重映射最终得到的语义向量。Q1 为第i条语句的i
初始语义向量,Qs为经语义重映射后第i条语句的语义向量。
[0054] 3)语义特征提取及量化模块用于进一步提取语义向量重映射模块获得的语义向量Qs的特征向量,并将特征向量重排,获得语义特征图像Qp;具体实现步骤为:
[0055] Step1、计算语义相同语句的语义向量在每一维度上的数值波动范围。
[0056] Step2、将语义向量每一维度上的数值按照方差从小到大排序,取前d个维度的数值重组为向量,并将数值量化为0~255范围内的数据,作为特征向量Qd;
[0057] 上述选取波动范围最小的d个维度,即最能表示语义特征的维度,作为特征维度。
[0058] Step3、将特征向量Qd按照间隔u重排为u×v维度的矩阵,即语义特征图像Qp,其中u×v=d。
[0059] Step1的实现过程如下:
[0060] 将输入的句子中语义类别为a的s个语句的语义向量{o1,o2,...,os}做比较,计算s个语义向量每一维度的均值。均值计算公式可表示为:
[0061]
[0062] 其中,j∈{1,2,...,m}表示语义向量的维度为m维,为语义向量Q1输出的维度,s表示语义类别为a的语句的个数,cij表示第i个语句语义向量的第j维分量,Avg(a)表示由s个语义相同的语句的语义向量每一维度均值组成的,语义类别为a的m维向量,为语义类别a的均值向量。
[0063] 将语义类别a的均值向量Avg(a)与语义类别为a的s个语句的语义向量分别计算距离,并记录最大距离,作为语义数值波动的最大范围。使用公式表示为:
[0064]
[0065] 其中,i∈(1,2,...,s),为语句标号,j∈{1,2,...,m},为维度标号,a为语义类别标号,MAXa表示s个语义类别为a的语句的语义向量与该类别的均值向量每一维度上的最大距离,为m维向量。
[0066] Step2的实现过程如下:
[0067] 根据MAXa向量值,选择其中值最小(即s个语句语义向量与均值距离最小,数据波动范围最小)的d个数据所处维度,作为特征维度,每个语义向量中特征维度上的数值称为语义特征值。
[0068] 从语义类别为a的每个语句的语义向量中,抽取语义特征值,并重组成d维的向量,重组后的d维向量即语句的语义特征向量,记为特征向量Qd。统计语义类别为a的所有语句的语义特征向量Qd中的所有数据,从中找到最大值和最小值。
[0069]
[0070]
[0071] 其中c’为特征向量中的数值,maxa为找到的最大值,mina为找到的最小值。
[0072] 将[mina,maxa]区间平均分为256个小区间,每个区间大小为:
[0073] Δ=(maxa‑mina)/256
[0074] 将所有语句的语义特征向量中的数值与小区间范围做对比,若数值落在第ε个区间内,则将数值编码为ε。由此,将获得语句的数值范围为0~255,d维的特征向量。
[0075] Step3的实现过程如下:
[0076] 将step2中获得的特征向量,按照间隔u重排u×v维度(例如u=12,v=16)的矩阵,该矩阵中的数值范围为0~255,即语义特征图像Qp。
[0077] 所述步骤(2‑2)具体实现为:
[0078] 如图4构造语义密钥稳定器M2,M2以现有成熟的编码‑解码(Encode‑Decode)以及跳跃连接(Skip Connection)结构特点的Unet网络模型为基础,模型的基本构造为多层编码‑解码模块的堆叠,编码采用卷积加下采样操作,解码采用上采样加卷积操作。
[0079] 可选项,修改跳跃连接为权重门控单元(Weight‑GRU)结构。
[0080] Weight‑GRU用来控制流经该网络的原始数据的保留程度。Weight‑GRU包括权重门、重置门和更新门,权重门根据原始数据的重要程度为数据分配权重,重置门和更新门控制数据的保留程度。
[0081] Weight‑GRU结构为:原始数据入口连接权重门与重置门,权重门连接重置门与更新门。更新门、重置门与权重门的输出数据经过综合运算后输出连接至Weight‑GRU单元的数据出口。
[0082] Weight‑GRU数据流向:原始数据作为权重门的输入,权重门的输出与原始数据拼接后作为重置门和更新门的输入。重置门的输出分别将原始数据与权重门输出结果重置,重置后的数据与更新门的输出共同作为更新过程的输入,更新过程的输出即原始数据流经Weight‑GRU后获得的数据。
[0083] Weight‑GRU计算过程:
[0084] 首先使用映射函数f将原始数值矩阵K中的数据映射为‑1~1范围内的数据,记为t‑1 tk ,输入Weight‑GRU网络,网络运算后的输出结果k 由f函数的逆函数进行还原,函数f可采用如下设计:
[0085] f(x1)=(2/α)×x1‑1
[0086] f‑1(x2)=(x2+1)/(2/α)
[0087] 其中,α为初始数据取值范围的大小,x1取遍矩阵K的每一个分量,x2取遍矩阵kt的每一个分量。
[0088] 权重门的实现过程如下:
[0089] Weightt=softmax(Ww)*kt‑1
[0090] 其中,Ww为学习到的权重矩阵,与初始数据维度相同,经过softmax函数后,矩阵中t所有元素之和为1。计算得到的Weight即为权重门的输出。
[0091] 更新门的实现过程为:
[0092] z=σ(Wz*[kt‑1,Weightt])
[0093] 其中,Wz为学习到的更新门参数矩阵,Weightt为权重门的输出,σ为激活函数,z为更新门输出的门控信号。
[0094] 重置门的实现过程为:
[0095] r=σ(Wr*[kt‑1,Weightt])
[0096] 重置门与更新门实现过程相似,但由于重置门与更新门所处网络位置与连接不r z同,使得它们学到参数矩阵W与W不同。r为重置门输出的门控信号。
[0097] 更新过程的实现为:
[0098] 首先,将重置后的数据再与权重门的结果使用如下公式进行计算:
[0099] k′=tanh(Wk*[Weightt,kt‑1·r])
[0100] 其中,Wk为学习到的参数矩阵,tanh函数将矩阵数据控制在‑1~1之间,再根据更新门的门控信号进行更新,公式为:
[0101] kt=(1‑z)·kt‑1+z·k'
[0102] kt即为Weight‑GRU网络运算后的输出结果。
[0103] 所述步骤(2‑3)具体实现为:
[0104] 经过语义特征稳定器M2处理后的序列向量L2一般仍然有一定数量的数值是不稳定的,用语义密钥提取器M3提取稳定的语义密钥序列。M3可以使用领域内通用的模糊提取器提取密钥。也可以采用Shamir门限秘密共享方法进行密钥的模糊提取,具体方法为:
[0105] 生成阶段:设定参数n,t1,b,其中参数n表示从序列向量中选取的子序列的个数,b表示选取的子序列的长度,子序列为连续的数字序列;参数t1表示阈值,当有t1个子序列成功匹配时即可准确提取密钥。
[0106] (1)构造一个多项式,使Output与多项式常数项a0绑定,a0视为密钥[0107] F(x)=at1‑1xt1‑1+...+a2x2+a1x1+a0mod(p),a0=Output
[0108] 其中p为素数,系数at1‑1,...,a2,a1随机选取,x∈Zp,Zp为模p剩余系域。
[0109] (2)从训练阶段的语义密钥稳定器M2处理后的序列向量L2中取n块比特长为b的子序列Mi,(i=1,2,...,n),将n个子序列作为多项式的输入x,得到对应的F(Mi),记录F(Mi)、p与loci(i=1,2,...,n),其中loci表示选取的第i个子序列Mi的第一位在整个序列中的索引值。供密钥提取阶段使用。
[0110] 提取阶段:
[0111] 当x=0时,F(0)=a0=Output,即可恢复出密钥。根据记录的n个索引值选取n块b比特长的子序列Qi,将(Qi,F(Mi))及x=0代入下式,若其中有t1(1≤t1≤n)块Qi与Mi相等,即可得到Output=a0,即为自然语言语义密钥。
[0112]
[0113] 图5为本发明的实例示例图。