发明内容
有鉴于此,本发明的目的在于提供一种实体识别方法、装置、设备及存储介质,以提高对威胁情报领域内特定类型实体的识别准确度,有利于对威胁情报数据进行结构化处理,将非结构化的威胁情报数据转换成结构化或半结构化的格式,方便信息安全人员进行交流共享。
第一方面,本申请实施例提供了一种实体识别方法,所述方法包括:
获取原始威胁情报文本;
针对每一所述原始威胁情报文本,按照分词所属实体的实体类型,对该原始威胁情报文本中的每一个分词进行标记,得到训练样本,其中,所述实体类型至少包括:威胁情报类型和非威胁情报类型,所述训练样本中的每一个分词对应一个实体标记;
针对每一所述训练样本,将该训练样本输入实体识别模型,利用该训练样本中的每一个分词以及该分词对应的所述实体标记,对该实体识别模型进行训练,得到训练好的实体识别模型,其中,所述实体识别模型在训练过程中使用的损失函数用于减小所属实体标记相同的分词之间的空间距离以及增大所属实体标记不同的分词之间的空间距离;
将待识别的威胁情报文本输入训练好的实体识别模型中,得到实体识别结果,其中,所述实体识别结果包括:属于目标实体的分词以及该分词对应的实体标记,其中,所述目标实体是实体类型为所述威胁情报类型的实体。
可选的,所述按照分词所属实体的实体类型,对该原始威胁情报文本中的每一个分词进行标记,包括:
根据STIX规范以及所述实体类型,定义用于对所述原始威胁情报文本中的分词进行标记的实体标签,其中,所述STIX规范是一种用于描述网络威胁信息的结构化语言的标准规范,所述实体标签包括:第一子标签、第二子标签以及第三子标签;
针对所述原始威胁情报文本中的每一个分词,利用该分词所属实体的实体类型,判断该分词所属实体是否属于所述威胁情报类型;
若确定该分词所属实体属于所述威胁情报类型,则利用所述第一子标签和所述第二子标签,对该分词进行标记,得到该分词对应的实体标记;
若确定该分词所属实体属于所述非威胁情报类型,则将所述第三子标签配置为该分词对应的实体标记,其中,所述第三子标签用于表征该分词所属实体不具备威胁情报分析价值。
可选的,所述利用所述第一子标签和所述第二子标签,对该分词进行标记,包括:
根据第一实体在所述原始威胁情报文本中对应的词组,确定该分词在所述词组中的位置,其中,所述第一实体是该分词所属的实体,所述词组是属于所述第一实体的所有分词组成的词组;
根据该分词在所述词组中所处的位置,从所述第一子标签中,为该分词配置与所述位置相匹配的第一子标签,其中,所述第一子标签包括:首位子标签和非首位子标签,所述首位子标签用于表征该分词位于所述词组的首位,所述非首位子标签用于表征该分词位于所述词组的中位或末位;
根据该分词所属实体的语义,从所述第二子标签中,为该分词配置与所述语义相匹配的第二子标签,其中,该第二子标签用于表征该分词所属实体的威胁情报分析语义价值。
可选的,所述将该训练样本输入实体识别模型,利用该训练样本中的每一个分词以及该分词对应的所述实体标记,对该实体识别模型进行训练,包括:
针对该训练样本中的每一个分词,获取该分词的字符特征向量以及词特征向量;
利用所述字符特征向量以及所述词特征向量,计算该分词的深层语义特征向量;
利用该训练样本中的每一个分词的深层语义特征向量和Triplet损失函数,计算第一输出损失函数值;
利用该训练样本中的每一个分词的深层语义特征向量和条件随机场,计算第二输出损失函数值;
将所述第一输出损失函数值与所述第二输出损失函数值作为自变量,代入模型损失函数中,通过调整所述模型损失函数的参数值,对所述实体识别模型进行重复训练,直至所述实体识别模型收敛。
可选的,所述获取该分词的字符特征向量以及词特征向量,包括:
将该分词输入训练好的第一卷积神经网络模型,得到所述字符特征向量;
利用威胁情报特征词向量库中存储的威胁情报特征词向量,判断是否存在与该分词所属实体的语义相同的威胁情报特征词向量,其中,所述威胁情报特征词向量库中存储的威胁情报特征词向量是根据训练好的第一词向量模型得到的;
若存在与该分词所属实体的语义相同的威胁情报特征词向量,则将该威胁情报特征词向量作为该分词的第一词特征向量;
若不存在与该分词所属实体的语义相同的威胁情报特征词向量,则对所述威胁情报特征词向量库中存储的所有威胁情报特征词向量,进行均值计算,将计算结果作为该分词的第一词特征向量;
将该分词输入训练好的第二词向量模型,得到该分词的第二词特征向量,其中,所述第二词向量模型与所述第一词向量模型分属于不同类型的词向量模型;
将所述第一词特征向量与所述第二词特征向量进行首尾拼接,得到所述词特征向量。
可选的,所述利用所述字符特征向量以及所述词特征向量,计算该分词的深层语义特征向量,包括:
将所述字符特征向量以及所述词特征向量进行首尾拼接,得到该分词的表示向量;
将该训练样本中每一个分词的表示向量输入双向长短期记忆网络中,得到该训练样本中每一个分词的初始特征向量,其中,每一个分词的初始特征向量的向量维度数均相同;
按照所述双向长短期记忆网络的层数,在每一层双向长短期记忆网络中,针对每一个分词的初始特征向量,分别计算该分词的初始特征向量与第一特征矩阵、第二特征矩阵、第三特征矩阵的乘积,其中,所述第一特征矩阵、所述第二特征矩阵以及所述第三特征矩阵的行列数相同,所述第一特征矩阵、所述第二特征矩阵以及所述第三特征矩阵的行数均与所述初始特征向量的向量维度数相同;
将第一乘积向量、第二乘积向量的转置以及第三乘积向量,代入归一化指数函数,得到该分词在每一层双向长短期记忆网络中的单维自注意力机制向量,其中,所述第一乘积向量是该分词的初始特征向量与所述第一特征矩阵的乘积,所述第二乘积向量是该分词的初始特征向量与所述第二特征矩阵的乘积,所述第三乘积向量是该分词的初始特征向量与所述第三特征矩阵的乘积;
按照向量行数不变的原则,对每一所述单维自注意力机制向量进行首尾拼接,得到拼接向量,其中,所述拼接向量的行数与所述单维自注意力机制向量的行数相同,所述拼接向量的列数是所述单维自注意力机制向量的列数与所述双向长短期记忆网络的层数的乘积值;
计算所述拼接向量与第四特征矩阵的乘积,将计算结果作为所述深层语义特征向量,其中,所述第四特征矩阵的行数与所述拼接向量的列数相同,所述第四特征矩阵的列数与所述拼接向量的行数相同。
可选的,所述利用该训练样本中的每一个分词的深层语义特征向量和Triplet损失函数,计算第一输出损失函数值,包括:
针对该训练样本中的每一个分词,利用该分词对应的所述实体标记,从该训练样本中,选取与该分词对应的实体标记相同的分词作为正样本,从该训练样本中,选取与该分词对应的实体标记不同的分词作为负样本;
计算该分词的深层语义特征向量和所述正样本的深层语义特征向量之间的余弦相似度,得到第一空间距离;
计算该分词的深层语义特征向量和所述负样本的深层语义特征向量之间的余弦相似度,得到第二空间距离;
将所述第一空间距离以及所述第二空间距离作为自变量,代入所述Triplet损失函数中,计算得到该分词的第一损失函数值;
计算该训练样本中的每一个分词的第一损失函数值的和值,将计算结果作为所述第一输出损失函数值。
可选的,所述利用该训练样本中的每一个分词的深层语义特征向量和条件随机场,计算第二输出损失函数值,包括:
针对该训练样本中的每一个分词,利用所述条件随机场,确定该分词的发射分数矩阵以及转移分数矩阵,其中,所述发射分数矩阵中的每一位元素用于表征该分词的实体标记预测结果与该位元素的列标签一致的概率,所述转移矩阵中的每一位元素用于表征该分词的实体标记预测结果从该位元素的行标签转移到该位元素的列标签的概率,所述发射分数矩阵中每一列的列标签对应该训练样本中包含的一种实体标记,所述转移矩阵中每一列的列标签对应该训练样本中包含的一种实体标记,所述转移矩阵中第一行的行标签对应该训练样本中包含的一种实体标记;
从每一分词的发射分数矩阵中,选取第一元素的元素值,按照该训练样本中分词的排列顺序进行加法计算,得到第一元素和值,其中,所述第一元素是每一分词的发射分数矩阵中元素值最大的元素;
从每一分词的转移分数矩阵中,选取第二元素的元素值,按照该训练样本中分词的排列顺序进行加法计算,得到第二元素和值,其中,所述第二元素的列标签与当前的分词的第一元素的列标签相同,所述第二元素的行标签与前一位分词的第一元素的列标签相同;
将所述第一元素和值与所述第二元素和值代入条件随机场损失函数中,计算得到所述第二输出损失函数值。
第二方面,本申请实施例提供了一种实体识别装置,所述装置包括:
数据采集模块,用于获取原始威胁情报文本;
分词标记模块,用于针对每一所述原始威胁情报文本,按照分词所属实体的实体类型,对该原始威胁情报文本中的每一个分词进行标记,得到训练样本,其中,所述实体类型至少包括:威胁情报类型和非威胁情报类型,所述训练样本中的每一个分词对应一个实体标记;
模型训练模块,用于针对每一所述训练样本,将该训练样本输入实体识别模型,利用该训练样本中的每一个分词以及该分词对应的所述实体标记,对该实体识别模型进行训练,得到训练好的实体识别模型,其中,所述实体识别模型在训练过程中使用的损失函数用于减小所属实体标记相同的分词之间的空间距离以及增大所属实体标记不同的分词之间的空间距离;
实体识别模块,用于将待识别的威胁情报文本输入训练好的实体识别模型中,得到实体识别结果,其中,所述实体识别结果包括:属于目标实体的分词以及该分词对应的实体标记,其中,所述目标实体是实体类型为所述威胁情报类型的实体。
可选的,所述分词标记模块,包括:
标签定义单元,用于根据STIX规范以及所述实体类型,定义用于对所述原始威胁情报文本中的分词进行标记的实体标签,其中,所述STIX规范是一种用于描述网络威胁信息的结构化语言的标准规范,所述实体标签包括:第一子标签、第二子标签以及第三子标签;
分词判断单元,用于针对所述原始威胁情报文本中的每一个分词,利用该分词所属实体的实体类型,判断该分词所属实体是否属于所述威胁情报类型;
第一标记单元,用于若确定该分词所属实体属于所述威胁情报类型,则利用所述第一子标签和所述第二子标签,对该分词进行标记,得到该分词对应的实体标记;
第二标记单元,用于若确定该分词所属实体属于所述非威胁情报类型,则将所述第三子标签配置为该分词对应的实体标记,其中,所述第三子标签用于表征该分词所属实体不具备威胁情报分析价值。
可选的,所述第一标记单元,还用于:
根据第一实体在所述原始威胁情报文本中对应的词组,确定该分词在所述词组中的位置,其中,所述第一实体是该分词所属的实体,所述词组是属于所述第一实体的所有分词组成的词组;
根据该分词在所述词组中所处的位置,从所述第一子标签中,为该分词配置与所述位置相匹配的第一子标签,其中,所述第一子标签包括:首位子标签和非首位子标签,所述首位子标签用于表征该分词位于所述词组的首位,所述非首位子标签用于表征该分词位于所述词组的中位或末位;
根据该分词所属实体的语义,从所述第二子标签中,为该分词配置与所述语义相匹配的第二子标签,其中,该第二子标签用于表征该分词所属实体的威胁情报分析语义价值。
可选的,所述模型训练模块,包括:
第一获取单元,用于针对该训练样本中的每一个分词,获取该分词的字符特征向量以及词特征向量;
第一计算单元,用于利用所述字符特征向量以及所述词特征向量,计算该分词的深层语义特征向量;
第二计算单元,用于利用该训练样本中的每一个分词的深层语义特征向量和Triplet损失函数,计算第一输出损失函数值;
第三计算单元,用于利用该训练样本中的每一个分词的深层语义特征向量和条件随机场,计算第二输出损失函数值;
数据处理单元,用于将所述第一输出损失函数值与所述第二输出损失函数值作为自变量,代入模型损失函数中,通过调整所述模型损失函数的参数值,对所述实体识别模型进行重复训练,直至所述实体识别模型收敛。
可选的,所述第一获取单元,还用于:
将该分词输入训练好的第一卷积神经网络模型,得到所述字符特征向量;
利用威胁情报特征词向量库中存储的威胁情报特征词向量,判断是否存在与该分词所属实体的语义相同的威胁情报特征词向量,其中,所述威胁情报特征词向量库中存储的威胁情报特征词向量是根据训练好的第一词向量模型得到的;
若存在与该分词所属实体的语义相同的威胁情报特征词向量,则将该威胁情报特征词向量作为该分词的第一词特征向量;
若不存在与该分词所属实体的语义相同的威胁情报特征词向量,则对所述威胁情报特征词向量库中存储的所有威胁情报特征词向量,进行均值计算,将计算结果作为该分词的第一词特征向量;
将该分词输入训练好的第二词向量模型,得到该分词的第二词特征向量,其中,所述第二词向量模型与所述第一词向量模型分属于不同类型的词向量模型;
将所述第一词特征向量与所述第二词特征向量进行首尾拼接,得到所述词特征向量。
可选的,所述第一计算单元,还用于:
将所述字符特征向量以及所述词特征向量进行首尾拼接,得到该分词的表示向量;
将该训练样本中每一个分词的表示向量输入双向长短期记忆网络中,得到该训练样本中每一个分词的初始特征向量,其中,每一个分词的初始特征向量的向量维度数均相同;
按照所述双向长短期记忆网络的层数,在每一层双向长短期记忆网络中,针对每一个分词的初始特征向量,分别计算该分词的初始特征向量与第一特征矩阵、第二特征矩阵、第三特征矩阵的乘积,其中,所述第一特征矩阵、所述第二特征矩阵以及所述第三特征矩阵的行列数相同,所述第一特征矩阵、所述第二特征矩阵以及所述第三特征矩阵的行数均与所述初始特征向量的向量维度数相同;
将第一乘积向量、第二乘积向量的转置以及第三乘积向量,代入归一化指数函数,得到该分词在每一层双向长短期记忆网络中的单维自注意力机制向量,其中,所述第一乘积向量是该分词的初始特征向量与所述第一特征矩阵的乘积,所述第二乘积向量是该分词的初始特征向量与所述第二特征矩阵的乘积,所述第三乘积向量是该分词的初始特征向量与所述第三特征矩阵的乘积;
按照向量行数不变的原则,对每一所述单维自注意力机制向量进行首尾拼接,得到拼接向量,其中,所述拼接向量的行数与所述单维自注意力机制向量的行数相同,所述拼接向量的列数是所述单维自注意力机制向量的列数与所述双向长短期记忆网络的层数的乘积值;
计算所述拼接向量与第四特征矩阵的乘积,将计算结果作为所述深层语义特征向量,其中,所述第四特征矩阵的行数与所述拼接向量的列数相同,所述第四特征矩阵的列数与所述拼接向量的行数相同。
可选的,所述第二计算单元,还用于:
针对该训练样本中的每一个分词,利用该分词对应的所述实体标记,从该训练样本中,选取与该分词对应的实体标记相同的分词作为正样本,从该训练样本中,选取与该分词对应的实体标记不同的分词作为负样本;
计算该分词的深层语义特征向量和所述正样本的深层语义特征向量之间的余弦相似度,得到第一空间距离;
计算该分词的深层语义特征向量和所述负样本的深层语义特征向量之间的余弦相似度,得到第二空间距离;
将所述第一空间距离以及所述第二空间距离作为自变量,代入所述Triplet损失函数中,计算得到该分词的第一损失函数值;
计算该训练样本中的每一个分词的第一损失函数值的和值,将计算结果作为所述第一输出损失函数值。
可选的,所述第三计算单元,还用于:
针对该训练样本中的每一个分词,利用所述条件随机场,确定该分词的发射分数矩阵以及转移分数矩阵,其中,所述发射分数矩阵中的每一位元素用于表征该分词的实体标记预测结果与该位元素的列标签一致的概率,所述转移矩阵中的每一位元素用于表征该分词的实体标记预测结果从该位元素的行标签转移到该位元素的列标签的概率,所述发射分数矩阵中每一列的列标签对应该训练样本中包含的一种实体标记,所述转移矩阵中每一列的列标签对应该训练样本中包含的一种实体标记,所述转移矩阵中第一行的行标签对应该训练样本中包含的一种实体标记;
从每一分词的发射分数矩阵中,选取第一元素的元素值,按照该训练样本中分词的排列顺序进行加法计算,得到第一元素和值,其中,所述第一元素是每一分词的发射分数矩阵中元素值最大的元素;
从每一分词的转移分数矩阵中,选取第二元素的元素值,按照该训练样本中分词的排列顺序进行加法计算,得到第二元素和值,其中,所述第二元素的列标签与当前的分词的第一元素的列标签相同,所述第二元素的行标签与前一位分词的第一元素的列标签相同;
将所述第一元素和值与所述第二元素和值代入条件随机场损失函数中,计算得到所述第二输出损失函数值。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的实体识别方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的实体识别方法的步骤。
本申请的实施例提供的技术方案可以包括以下有益效果:
首先,考虑到威胁情报领域内需要识别的实体需要涉及大量的专用词汇,并且在威胁情报领域内十分缺乏开源数据集,因此,本申请先获取原始威胁情报文本,然后,按照分词所属实体的实体类型,对该原始威胁情报文本中的每一个分词进行标记,得到训练样本,其中,所述实体类型至少包括:威胁情报类型和非威胁情报类型。这样,可以将原始威胁情报文本中具有威胁情报分析价值的实体对应的分词标记为威胁情报类型,将不具有威胁情报分析价值的实体对应的分词标记为非威胁情报类型,得到威胁情报领域内的专用训练数据集,训练实体识别模型,学习从原始威胁情报文本中识别属于威胁情报类型的目标实体,提高实体识别模型对威胁情报领域内特殊的专有名词的识别准确度。
进一步的,本申请针对威胁情报文本的数据本身的特殊性,提出一种区别于现有识别模型的实体识别模型,所述实体识别模型在训练过程中使用的损失函数用于减小所属实体标记相同的分词之间的空间距离以及增大所属实体标记不同的分词之间的空间距离,这样,在所述实体识别模型达到收敛时,结束训练,使得训练好的实体识别模型具备了处理威胁情报文本这类数据标签分布严重失衡的特殊数据,从而,提高了输出的实体识别结果的准确度。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种实体识别方法、装置、设备及存储介质,下面通过实施例进行描述。
实施例一
图1示出了本申请实施例所提供的一种实体识别方法的流程示意图,其中,该方法包括步骤S101-S104;具体的:
S101,获取原始威胁情报文本。
具体的,现有的实体识别模型主要用于对普通文本数据中的人名、地名、时间等通用类型的实体进行识别,考虑到威胁情报领域内需要识别的实体需要涉及大量的专用词汇,并且在威胁情报领域内十分缺乏开源数据集,因此,需要先构建用于对实体识别模型进行训练的样本数据集。
本申请实施例中,作为一可选实施例,可以从安全网站中,爬取与威胁情报相关的文章、博客、论文报告等文本数据,作为所述原始威胁情报文本。
示例性的说明,可以使用Python编程语言,从安全网站中,对文本内容与威胁情报相关的文章进行爬取,将爬取到的文章数据作为原始威胁情报文本,通过对原始威胁情报文本中包含的具有威胁情报分析价值的专用词汇进行数据处理,来构建用于对实体识别模型进行训练的样本数据集。
S102,针对每一所述原始威胁情报文本,按照分词所属实体的实体类型,对该原始威胁情报文本中的每一个分词进行标记,得到训练样本。
具体的,其中,所述实体类型至少包括:威胁情报类型和非威胁情报类型,所述训练样本中的每一个分词对应一个实体标记,所述威胁情报类型是指威胁情报文本数据中具有威胁情报分析价值的实体所属的实体类型,即所述威胁情报类型用于表征需要识别的实体所属的实体类型,例如,攻击组织名称、攻击工具名称、攻击目标等;所述非威胁情报类型是指威胁情报文本数据中不具有威胁情报分析价值的实体所属的实体类型,即所述非威胁情报类型用于表征不需要识别的实体所属的实体类型,例如,一些不具有实际语义含义的冠词、辅助性描述的形容词等。
示例性的说明,原始威胁情报文本为:“TG-3390actorshave exploited CVE-2011-3544,avulnerabilityintheJava Runtime Environment,todelivertheHttpBrowserbackdoor.”其语义是:攻击组织TG-3390利用一个编号为CVE-2011-3544的漏洞,来投递名为“HttpBrowser”的电脑病毒,其中,该漏洞的运行环境是Java Runtime Environment。以该原始威胁情报文本为例,分词TG-3390所属实体为攻击组织名称、分词CVE-2011-3544所属实体为漏洞名称、分词Java Runtime Environment所属实体为攻击工具、分词HttpBrowser所属实体为恶意软件名称,因此,上述分词所属的实体都具有威胁情报分析价值,上述分词所属实体的实体类型均为威胁情报类型;而分词have、分词the等分词所属实体不具有实际语义含义,从而,分词have、分词the等分词所属实体的实体类型为非威胁情报类型。
本申请实施例中,作为一可选实施例,所述按照分词所属实体的实体类型,对该原始威胁情报文本中的每一个分词进行标记,包括:
根据STIX规范以及所述实体类型,定义用于对所述原始威胁情报文本中的分词进行标记的实体标签,其中,所述STIX规范是一种用于描述网络威胁信息的结构化语言的标准规范,所述实体标签包括:第一子标签、第二子标签以及第三子标签;
针对所述原始威胁情报文本中的每一个分词,利用该分词所属实体的实体类型,判断该分词所属实体是否属于所述威胁情报类型;
若确定该分词所属实体属于所述威胁情报类型,则利用所述第一子标签和所述第二子标签,对该分词进行标记,得到该分词对应的实体标记;
若确定该分词所属实体属于所述非威胁情报类型,则将所述第三子标签配置为该分词对应的实体标记,其中,所述第三子标签用于表征该分词所属实体不具备威胁情报分析价值。
具体的,所述利用所述第一子标签和所述第二子标签,对该分词进行标记,包括:
根据第一实体在所述原始威胁情报文本中对应的词组,确定该分词在所述词组中的位置,其中,所述第一实体是该分词所属的实体,所述词组是属于所述第一实体的所有分词组成的词组;
根据该分词在所述词组中所处的位置,从所述第一子标签中,为该分词配置与所述位置相匹配的第一子标签,其中,所述第一子标签包括:首位子标签和非首位子标签,所述首位子标签用于表征该分词位于所述词组的首位,所述非首位子标签用于表征该分词位于所述词组的中位或末位;
根据该分词所属实体的语义,从所述第二子标签中,为该分词配置与所述语义相匹配的第二子标签,其中,该第二子标签用于表征该分词所属实体的威胁情报分析语义价值。
示例性的说明,可以参考最新版本的STIX2.0规范,按照BIO标注规则,定义实体标签为:B-X、I-X以及O三种类型,其中,B为所述第一子标签中的首位子标签、I为所述第一子标签中的非首位子标签、X为所述第二子标签、O为所述第三子标签,以上述示例中的原始威胁情报文本为例,对于分词have,由于该分词所属实体属于所述非威胁情报类型,则将第三子标签O配置为该分词对应的实体标记,得到分词have对应的实体标记为“O”;
对于分词“HttpBrowser”,该分词所属实体为恶意软件名称,属于威胁情报类型,则利用第一子标签和第二子标签,对该分词进行标记,其中,实体“恶意软件名称”在原始威胁情报文本中只有该分词一个词,因此,该分词的第一子标签为首位子标签B,其中,恶意软件的英文是:malware,则从第二子标签中,配置与该分词语义相匹配的“malware”作为第二子标签X,得到分词“HttpBrowser”对应的实体标记为“B-malware”;
对于分词Java、分词Runtime以及分词Environment,其中,分词Java、分词Runtime以及分词Environment所属实体均为攻击工具,而攻击工具在原始威胁情报文本中对应的词组是“Java Runtime Environment”,因此,分词Java的第一子标签为首位子标签B、分词Runtime的第一子标签为非首位子标签I、分词Environment的第一子标签为非首位子标签I,其中,攻击工具的英文是:tool,则可以从第二子标签中,为分词Java、分词Runtime以及分词Environment配置相同的第二子标签“tool”,得到分词Java对应的实体标记为“B-tool”、分词Runtime对应的实体标记为“I-tool”、分词Environment对应的实体标记为“I-tool”。
S103,针对每一所述训练样本,将该训练样本输入实体识别模型,利用该训练样本中的每一个分词以及该分词对应的所述实体标记,对该实体识别模型进行训练,得到训练好的实体识别模型。
需要说明的是,针对普通类型实体进行实体识别的现有模型,其训练原理是:将训练样本输入待训练的识别模型中,在训练过程中,可以得到识别模型输出的一个实体识别结果,通过比较该实体识别结果与训练样本中实体的真实情况,可以得到该实体识别结果的识别准确度,将数字1与该识别准确度的差值作为识别损失,当识别模型的识别损失达到最小时,确定识别模型达到收敛,结束训练。由此可以看出,现有的识别模型,主要是训练实体语义识别的准确度,并不关注文本中需要识别的两个实体之间的间距。由于威胁情报文本的数据本身的特殊性,其文本数据多为长语句,并且采用较多的定语成分对威胁情报类型实体进行修饰,因此,在威胁情报文本中,属于威胁情报类型的实体之间通常相隔较远,此时,按照现有模型的训练原理进行模型训练时,会出现数据标签分布严重失衡的问题,得到的实体识别结果严重失真,从而,现有的实体识别模型是不适用于对威胁情报文本进行实体识别的。
具体的,本申请针对威胁情报文本的数据本身的特殊性,提出一种区别于现有识别模型的实体识别模型,其中,所述实体识别模型在训练过程中使用的损失函数用于减小所属实体标记相同的分词之间的空间距离以及增大所属实体标记不同的分词之间的空间距离,这样,在所述实体识别模型达到收敛时,结束训练,使得训练好的实体识别模型具备了处理威胁情报文本这类数据标签分布严重失衡的特殊数据,从而,提高了输出的实体识别结果的准确度。
S104,将待识别的威胁情报文本输入训练好的实体识别模型中,得到实体识别结果。
具体的,其中,所述实体识别结果包括:属于目标实体的分词以及该分词对应的实体标记,其中,所述目标实体是实体类型为所述威胁情报类型的实体。
示例性的说明,若输入的待识别的威胁情报文本内容与上述示例中的原始威胁情报文本的文本内容相同,则可以得到实体识别结果如下表1所示:
属于目标实体的分词 |
该分词对应的实体标记 |
TG-3390 |
B-APT |
CVE-2011-3544 |
B-VULID |
Java |
B-tool |
Runtime |
I-tool |
Environment |
I-tool |
HttpBrowser |
B-malware |
表1
其中,实体标记“B-APT”中的第二子标签APT是(Advanced Persistent Threat,高级持续性威胁)的缩写,用于指代本次进行APT攻击的攻击方,即表示分词TG-3390是本次进行APT攻击的攻击组织名称;实体标记“B-VULID”中的第二子标签VULID是漏洞编号的英文单词缩写,用于指代该分词所属的实体为漏洞编号。
在一个可行的实施方案中,图2示出了本申请实施例所提供的一种实体识别模型的训练方法的流程示意图,如图2所示,在执行步骤S103时,该方法还包括S201-S208;具体的:
S201,针对该训练样本中的每一个分词,获取该分词的字符特征向量以及词特征向量。
具体的,本申请实施例中,作为一可选实施例,所述获取该分词的字符特征向量以及词特征向量,包括:
将该分词输入训练好的第一卷积神经网络模型,得到所述字符特征向量;
利用威胁情报特征词向量库中存储的威胁情报特征词向量,判断是否存在与该分词所属实体的语义相同的威胁情报特征词向量,其中,所述威胁情报特征词向量库中存储的威胁情报特征词向量是根据训练好的第一词向量模型得到的;
若存在与该分词所属实体的语义相同的威胁情报特征词向量,则将该威胁情报特征词向量作为该分词的第一词特征向量;
若不存在与该分词所属实体的语义相同的威胁情报特征词向量,则对所述威胁情报特征词向量库中存储的所有威胁情报特征词向量,进行均值计算,将计算结果作为该分词的第一词特征向量;
将该分词输入训练好的第二词向量模型,得到该分词的第二词特征向量,其中,所述第二词向量模型与所述第一词向量模型分属于不同类型的词向量模型;
将所述第一词特征向量与所述第二词特征向量进行首尾拼接,得到所述词特征向量。
需要说明的是,所述第一卷积神经网络模型只是用于从字符级层面,获取可以表示每一个分词的字符特征的字符特征向量,并不涉及对分词进行语义分析或者词性分析,现有的将分词转化为字符特征向量的方法较为成熟,因此,对于所述第一卷积神经网络模型的具体类型,本申请并不进行限定。
具体的,对于所述第一词向量模型,则可以预先利用爬取的历史威胁情报数据,对word2Vec模型进行训练,将训练好的word2Vec模型作为所述第一词向量模型,由于历史威胁情报数据中包含大量属于威胁情报类型实体的专业词汇,因此,利用第一词向量模型,可以得到这些专业词汇的word2Vec词向量,将这些专业词汇的word2Vec词向量作为威胁情报特征词向量,存入威胁情报特征词向量库中,以便后续实体识别模型在训练过程中,可以直接进行查找和调用;
对于所述第二词向量模型,若将训练好的word2Vec模型作为所述第一词向量模型,则可以对另一种类型的BERT模型进行训练,将训练好的BERT模型作为所述第二词向量模型,这样,第一词特征向量和第二词特征向量相当于不同参考维度下该分词的两种特征向量表示,将第一词特征向量与第二词特征向量进行首尾拼接之后,得到的所述词特征向量就可以更加全面的表示该分词的词性以及语义等特征,有利于提高实体识别模型对分词所属实体的识别准确度。
示例性的说明,以分词HttpBrowser为例,将该分词输入训练好的第一卷积神经网络模型,得到字符特征向量c1,若威胁情报特征词向量库中存在该分词的威胁情报特征词向量w1,则第一词特征向量为w1;将分词HttpBrowser输入训练好的BERT模型,得到第二词特征向量为b1;则可以得到分词HttpBrowser的词特征向量x1=concat[w1,b1],其中,函数concat用于表示对字符串进行首尾拼接。
S202,利用所述字符特征向量以及所述词特征向量,计算该分词的深层语义特征向量。
具体的,本申请实施例中,作为一可选实施例,所述利用所述字符特征向量以及所述词特征向量,计算该分词的深层语义特征向量,包括:
将所述字符特征向量以及所述词特征向量进行首尾拼接,得到该分词的表示向量;
将该训练样本中每一个分词的表示向量输入双向长短期记忆网络中,得到该训练样本中每一个分词的初始特征向量,其中,每一个分词的初始特征向量的向量维度数均相同;
按照所述双向长短期记忆网络的层数,在每一层双向长短期记忆网络中,针对每一个分词的初始特征向量,分别计算该分词的初始特征向量与第一特征矩阵、第二特征矩阵、第三特征矩阵的乘积,其中,所述第一特征矩阵、所述第二特征矩阵以及所述第三特征矩阵的行列数相同,所述第一特征矩阵、所述第二特征矩阵以及所述第三特征矩阵的行数均与所述初始特征向量的向量维度数相同;
将第一乘积向量、第二乘积向量的转置以及第三乘积向量,代入归一化指数函数,得到该分词在每一层双向长短期记忆网络中的单维自注意力机制向量,其中,所述第一乘积向量是该分词的初始特征向量与所述第一特征矩阵的乘积,所述第二乘积向量是该分词的初始特征向量与所述第二特征矩阵的乘积,所述第三乘积向量是该分词的初始特征向量与所述第三特征矩阵的乘积;
按照向量行数不变的原则,对每一所述单维自注意力机制向量进行首尾拼接,得到拼接向量,其中,所述拼接向量的行数与所述单维自注意力机制向量的行数相同,所述拼接向量的列数是所述单维自注意力机制向量的列数与所述双向长短期记忆网络的层数的乘积值;
计算所述拼接向量与第四特征矩阵的乘积,将计算结果作为所述深层语义特征向量,其中,所述第四特征矩阵的行数与所述拼接向量的列数相同,所述第四特征矩阵的列数与所述拼接向量的行数相同。
需要说明的是,对于双向长短期记忆网络BiLSTM而言,双向长短期记忆网络BiLSTM中包含一个前向LSTM神经网络和一个后向LSTM神经网络,其中,以语句“abc”为例,将该语句输入双向长短期记忆网络BiLSTM中,前向LSTM神经网络按照语句中分词的正向排列顺序abc,输出语句中各分词的特征向量:r1r2r3;后向LSTM神经网络按照语句中分词的负向排列顺序cba,输出语句中各分词的特征向量:s3s2s1;则以分词a为例,分词a输入双向长短期记忆网络BiLSTM中,得到的初始特征向量da为da=concat[r1,s1],其中,concat函数仍然用于表示向量间的首尾拼接。
示例性的说明,以上述示例为例,分词HttpBrowser的字符特征向量是c1,词特征向量是x1,则通过向量的首尾拼接,可以得到该分词的表示向量e1=concat[x1,c1];将该分词的表示向量e1输入BiLSTM中,可以得到该分词的初始特征向量d1,其中,初始特征向量d1的向量维度数为n;若BiLSTM的层数为8,则在每一层BiLSTM中,按照以下公式计算第一乘积向量Q、第二乘积向量K以及第三乘积向量V:
Q=d1×WQ;
K=d1×WK;
V=d1×WV;
其中,WQ是第一特征矩阵,矩阵行数为n,矩阵列数为m;
WK是第二特征矩阵,矩阵行数为n,矩阵列数为m;
WV是第三特征矩阵,矩阵行数为n,矩阵列数为m;
然后,将计算得到第一乘积向量Q、第二乘积向量K的转置KT以及第三乘积向量V,代入归一化指数函数softmax中,按照以下公式,计算得到该分词在每一层BiLSTM中的单维自注意力机制向量A(Q,K,V):
其中,m是第一特征矩阵、第二特征矩阵、第三特征矩阵的矩阵列数;
若初始特征向量d1为1×n的行向量,则单维自注意力机制向量A(Q,K,V)的行数为n,列数为m;
若将每一层BiLSTM中的单维自注意力机制向量A(Q,K,V)分别记作:A1、A2…A8,则按照向量行数不变的原则,对每一单维自注意力机制向量进行首尾拼接,得到拼接向量MA=concat(A1,A2,...,A8),其中,拼接向量MA的行数为n,列数为8×m;
按照以下公式,计算该分词的深层语义特征向量h1:
h1=MA×WO;
其中,WO是第四特征矩阵,矩阵行数为8×m,矩阵列数为n。
S203,利用该训练样本中的每一个分词的深层语义特征向量和Triplet损失函数,计算第一输出损失函数值。
具体的,本申请实施例中,作为一可选实施例,所述利用该训练样本中的每一个分词的深层语义特征向量和Triplet损失函数,计算第一输出损失函数值,包括:
针对该训练样本中的每一个分词,利用该分词对应的所述实体标记,从该训练样本中,选取与该分词对应的实体标记相同的分词作为正样本,从该训练样本中,选取与该分词对应的实体标记不同的分词作为负样本;
计算该分词的深层语义特征向量和所述正样本的深层语义特征向量之间的余弦相似度,得到第一空间距离;
计算该分词的深层语义特征向量和所述负样本的深层语义特征向量之间的余弦相似度,得到第二空间距离;
将所述第一空间距离以及所述第二空间距离作为自变量,代入所述Triplet损失函数中,计算得到该分词的第一损失函数值;
计算该训练样本中的每一个分词的第一损失函数值的和值,将计算结果作为所述第一输出损失函数值。
示例性的说明,以分词a为例,若分词a的实体标记为B-tool,则可以从训练样本中的实体标记为B-tool的分词中,任选一个作为正样本;从训练样本中的其他实体标记的分词中,任选一个作为负样本,按照以下公式,计算分词a的第一损失函数值:
Lossa=D1-D2+k;
其中,Lossa是分词a的第一损失函数值,Lossa的计算公式称为Triplet损失函数;
D1是所述第一空间距离;
D2是所述第二空间距离;
ha是分词a的深层语义特征向量;
h正是分词a的正样本的深层语义特征向量;
h负是分词a的负样本的深层语义特征向量;
k是常数参数,默认取值为0.5。
若训练样本中共包含j个分词,则第一输出损失函数值LossT为:
其中,Lossi是第i个分词的第一损失函数值,Lossi的计算公式称为Triplet损失函数;
j是训练样本中分词的总个数。
S204,利用该训练样本中的每一个分词的深层语义特征向量和条件随机场,计算第二输出损失函数值。
在一个可行的实施方案中,图3示出了本申请实施例所提供的一种计算第二输出损失函数值的方法的流程示意图,如图3所示,在执行步骤S204时,该方法还包括S301-S304;具体的:
S301,针对该训练样本中的每一个分词,利用所述条件随机场,确定该分词的发射分数矩阵以及转移分数矩阵。
具体的,其中,所述发射分数矩阵中的每一位元素用于表征该分词的实体标记预测结果与该位元素的列标签一致的概率,所述转移矩阵中的每一位元素用于表征该分词的实体标记预测结果从该位元素的行标签转移到该位元素的列标签的概率,所述发射分数矩阵中每一列的列标签对应该训练样本中包含的一种实体标记,所述转移矩阵中每一列的列标签对应该训练样本中包含的一种实体标记,所述转移矩阵中第一行的行标签对应该训练样本中包含的一种实体标记。
需要说明的是,在确定所述发射分数矩阵以及所述转移分数矩阵时,为了提高模型训练的稳定性,作为一可选实施例,可以根据训练样本中各分词的实体标记,将所有可能出现的实体标记均作为该训练样本包含的实体标记。例如,以表1为例,训练样本中所有分词的实体标记为:B-APT、B-VULID、B-tool、I-tool、B-malware以及非威胁情报类型的实体标记O,由于B是首位子标签,I是非首位子标签,因此,可以确定I-APT、I-VULID以及I-malware也是训练样本中可能出现的实体标记,此时,可以确定训练样本中包含的实体标记为:B-APT、I-APT、B-VULID、I-VULID、B-tool、I-tool、B-malware、I-malware以及O。
示例性的说明,若训练样本中包含的所有实体标记为:B-A、I-A、B-X、I-X以及O;则可以将分词a输入BiLSTM层,输出分词a发射分数矩阵如下表2所示:
|
B-A |
I-A |
B-X |
I-X |
O |
发射分数 |
0.25 |
0.9 |
0.01 |
0.003 |
0.0004 |
表2
可以将训练样本输入条件随机场CRF层,输出分词a转移分数矩阵如下表3所示:
|
Start |
B-A |
I-A |
B-X |
I-X |
O |
Start |
0 |
0.8 |
0.007 |
0.7 |
0.008 |
0.9 |
B-A |
0 |
0.6 |
0.9 |
0.2 |
0.0006 |
0.6 |
I-A |
-1 |
0.5 |
0.53 |
0.55 |
0.0003 |
0.85 |
B-X |
0.9 |
0.5 |
0.0003 |
0.25 |
0.8 |
0.77 |
I-X |
-0.9 |
0.45 |
0.007 |
0.7 |
0.65 |
0.76 |
O |
0 |
0.65 |
0.0007 |
0.7 |
0.0008 |
0 |
表3
需要说明的是,在利用条件随机场CRF层获取转移分数矩阵时,通常可以加入start标签(如表3所示)代表训练样本中语句的开始,但是start标签并不是语句的第一个分词,还可以进一步的添加end标签,用于表征训练样本中语句的结尾,其中,由于转移分数矩阵中的每一位元素本质上是用于表征该位元素的行标签转移到该位元素的列标签的概率,因此,对于训练样本中的所有分词而言,其转移分数矩阵都是相同的,获取每一个分词的转移分数矩阵以及发射分数矩阵,本质上是对该分词在训练样本中对应每一种实体标记的可能性进行预测,从而计算出用于表征实体标记预测语义准确程度的第二输出损失函数值。
S302,从每一分词的发射分数矩阵中,选取第一元素的元素值,按照该训练样本中分词的排列顺序进行加法计算,得到第一元素和值。
具体的,其中,所述第一元素是每一分词的发射分数矩阵中元素值最大的元素。
示例性的说明,以表2为例,则分词a的第一元素为实体标记I-A对应的发射分数0.9,若训练样本中包含t个分词,其中,分词的排列顺序为:c1…ct,则按照以下公式计算得到训练样本的第一元素和值score1:
其中,P(ci,yi)是第i个分词ci的第一元素的元素值;
yi是第i个分词ci的第一元素的列标签。
S303,从每一分词的转移分数矩阵中,选取第二元素的元素值,按照该训练样本中分词的排列顺序进行加法计算,得到第二元素和值。
具体的,其中,所述第二元素的列标签与当前的分词的第一元素的列标签相同,所述第二元素的行标签与前一位分词的第一元素的列标签相同。
示例性的说明,以表2和表3为例,分词a的第一元素为实体标记I-A对应的发射分数0.9,即分词a的第一元素的列标签是I-A,因此,分词a的第二元素的列标签为I-A,若训练样本中分词a的前一位分词是分词x,且分词x的第一元素的列标签是B-X,则分词a的第二元素的行标签为B-X;
可以从表3所示的转移分数矩阵中,选取分词a的第二元素的元素值为0.0003;若训练样本中包含t个分词,其中,分词的排列顺序为:c1…ct,则按照以下公式计算得到训练样本的第二元素和值score2:
其中,A(ci,yi,yi-1)是第i个分词ci的第二元素的元素值;
yi是第i个分词ci的第一元素的列标签,也是第i个分词ci的第二元素的列标签;
yi-1是第i-1个分词ci-1的第一元素的列标签,也是第i个分词ci的第二元素的行标签;
当i=1时,第一个分词c1的第二元素的行标签y0为表3中所示的start标签。
S304,将所述第一元素和值与所述第二元素和值代入条件随机场损失函数中,计算得到所述第二输出损失函数值。
具体的,若训练样本中包含t个分词,其中,分词的排列顺序为:c1…ct,则可以按照以下公式计算训练样本的第二输出损失函数值LossC:
其中,YX是训练样本中包含的所有实体标记组成的集合;
L是训练样本中包含的所有实体标记的个数;
score1(yi∈Yx)是指针对训练样本中的每一个分词,当该分词的第一元素的列标签为yi时,计算得到训练样本的第一元素和值score1;相当于针对每一个分词的第一元素,计算该第一元素的列标签取遍所有可能的实体标记时,训练样本的第一元素和值;
score2(yi∈Yx)是指针对训练样本中的每一个分词,当该分词的第二元素的列标签为yi时,计算得到训练样本的第二元素和值score2;相当于针对每一个分词的第二元素,计算该第二元素的列标签取遍所有可能的实体标记时,训练样本的第二元素和值。
S205,将所述第一输出损失函数值与所述第二输出损失函数值作为自变量,代入模型损失函数中,通过调整所述模型损失函数的参数值,对所述实体识别模型进行重复训练,直至所述实体识别模型收敛。
具体的,作为一可选实施例,可以将以下公式作为所述模型损失函数:
Loss(T,C)=α1×LossT+α2×LossC;
其中,Loss(T,C)是所述模型损失函数;
LossT是所述第一输出损失函数值;
LossC是所述第二输出损失函数值;
α1和α2是用于调节模型损失函数平衡的两个超参数;
在实体识别模型的训练过程中,不断调整α1和α2的参数值,对实体识别模型进行重复训练,当模型损失函数达到最小值时,确定实体识别模型收敛,固定下此时超参数α1和α2的参数值,得到训练好的实体识别模型。
实施例二
图4示出了本申请实施例所提供的一种实体识别装置的结构示意图,所述装置包括:
数据采集模块401,用于获取原始威胁情报文本;
分词标记模块402,用于针对每一所述原始威胁情报文本,按照分词所属实体的实体类型,对该原始威胁情报文本中的每一个分词进行标记,得到训练样本,其中,所述实体类型至少包括:威胁情报类型和非威胁情报类型,所述训练样本中的每一个分词对应一个实体标记;
模型训练模块403,用于针对每一所述训练样本,将该训练样本输入实体识别模型,利用该训练样本中的每一个分词以及该分词对应的所述实体标记,对该实体识别模型进行训练,得到训练好的实体识别模型,其中,所述实体识别模型在训练过程中使用的损失函数用于减小所属实体标记相同的分词之间的空间距离以及增大所属实体标记不同的分词之间的空间距离;
实体识别模块404,用于将待识别的威胁情报文本输入训练好的实体识别模型中,得到实体识别结果,其中,所述实体识别结果包括:属于目标实体的分词以及该分词对应的实体标记,其中,所述目标实体是实体类型为所述威胁情报类型的实体。
可选的,分词标记模块402,包括:
标签定义单元(图中未示出),用于根据STIX规范以及所述实体类型,定义用于对所述原始威胁情报文本中的分词进行标记的实体标签,其中,所述STIX规范是一种用于描述网络威胁信息的结构化语言的标准规范,所述实体标签包括:第一子标签、第二子标签以及第三子标签;
分词判断单元(图中未示出),用于针对所述原始威胁情报文本中的每一个分词,利用该分词所属实体的实体类型,判断该分词所属实体是否属于所述威胁情报类型;
第一标记单元(图中未示出),用于若确定该分词所属实体属于所述威胁情报类型,则利用所述第一子标签和所述第二子标签,对该分词进行标记,得到该分词对应的实体标记;
第二标记单元(图中未示出),用于若确定该分词所属实体属于所述非威胁情报类型,则将所述第三子标签配置为该分词对应的实体标记,其中,所述第三子标签用于表征该分词所属实体不具备威胁情报分析价值。
可选的,所述第一标记单元,还用于:
根据第一实体在所述原始威胁情报文本中对应的词组,确定该分词在所述词组中的位置,其中,所述第一实体是该分词所属的实体,所述词组是属于所述第一实体的所有分词组成的词组;
根据该分词在所述词组中所处的位置,从所述第一子标签中,为该分词配置与所述位置相匹配的第一子标签,其中,所述第一子标签包括:首位子标签和非首位子标签,所述首位子标签用于表征该分词位于所述词组的首位,所述非首位子标签用于表征该分词位于所述词组的中位或末位;
根据该分词所属实体的语义,从所述第二子标签中,为该分词配置与所述语义相匹配的第二子标签,其中,该第二子标签用于表征该分词所属实体的威胁情报分析语义价值。
可选的,模型训练模块403,包括:
第一获取单元(图中未示出),用于针对该训练样本中的每一个分词,获取该分词的字符特征向量以及词特征向量;
第一计算单元(图中未示出),用于利用所述字符特征向量以及所述词特征向量,计算该分词的深层语义特征向量;
第二计算单元(图中未示出),用于利用该训练样本中的每一个分词的深层语义特征向量和Triplet损失函数,计算第一输出损失函数值;
第三计算单元(图中未示出),用于利用该训练样本中的每一个分词的深层语义特征向量和条件随机场,计算第二输出损失函数值;
数据处理单元(图中未示出),用于将所述第一输出损失函数值与所述第二输出损失函数值作为自变量,代入模型损失函数中,通过调整所述模型损失函数的参数值,对所述实体识别模型进行重复训练,直至所述实体识别模型收敛。
可选的,所述第一获取单元,还用于:
将该分词输入训练好的第一卷积神经网络模型,得到所述字符特征向量;
利用威胁情报特征词向量库中存储的威胁情报特征词向量,判断是否存在与该分词所属实体的语义相同的威胁情报特征词向量,其中,所述威胁情报特征词向量库中存储的威胁情报特征词向量是根据训练好的第一词向量模型得到的;
若存在与该分词所属实体的语义相同的威胁情报特征词向量,则将该威胁情报特征词向量作为该分词的第一词特征向量;
若不存在与该分词所属实体的语义相同的威胁情报特征词向量,则对所述威胁情报特征词向量库中存储的所有威胁情报特征词向量,进行均值计算,将计算结果作为该分词的第一词特征向量;
将该分词输入训练好的第二词向量模型,得到该分词的第二词特征向量,其中,所述第二词向量模型与所述第一词向量模型分属于不同类型的词向量模型;
将所述第一词特征向量与所述第二词特征向量进行首尾拼接,得到所述词特征向量。
可选的,所述第一计算单元,还用于:
将所述字符特征向量以及所述词特征向量进行首尾拼接,得到该分词的表示向量;
将该训练样本中每一个分词的表示向量输入双向长短期记忆网络中,得到该训练样本中每一个分词的初始特征向量,其中,每一个分词的初始特征向量的向量维度数均相同;
按照所述双向长短期记忆网络的层数,在每一层双向长短期记忆网络中,针对每一个分词的初始特征向量,分别计算该分词的初始特征向量与第一特征矩阵、第二特征矩阵、第三特征矩阵的乘积,其中,所述第一特征矩阵、所述第二特征矩阵以及所述第三特征矩阵的行列数相同,所述第一特征矩阵、所述第二特征矩阵以及所述第三特征矩阵的行数均与所述初始特征向量的向量维度数相同;
将第一乘积向量、第二乘积向量的转置以及第三乘积向量,代入归一化指数函数,得到该分词在每一层双向长短期记忆网络中的单维自注意力机制向量,其中,所述第一乘积向量是该分词的初始特征向量与所述第一特征矩阵的乘积,所述第二乘积向量是该分词的初始特征向量与所述第二特征矩阵的乘积,所述第三乘积向量是该分词的初始特征向量与所述第三特征矩阵的乘积;
按照向量行数不变的原则,对每一所述单维自注意力机制向量进行首尾拼接,得到拼接向量,其中,所述拼接向量的行数与所述单维自注意力机制向量的行数相同,所述拼接向量的列数是所述单维自注意力机制向量的列数与所述双向长短期记忆网络的层数的乘积值;
计算所述拼接向量与第四特征矩阵的乘积,将计算结果作为所述深层语义特征向量,其中,所述第四特征矩阵的行数与所述拼接向量的列数相同,所述第四特征矩阵的列数与所述拼接向量的行数相同。
可选的,所述第二计算单元,还用于:
针对该训练样本中的每一个分词,利用该分词对应的所述实体标记,从该训练样本中,选取与该分词对应的实体标记相同的分词作为正样本,从该训练样本中,选取与该分词对应的实体标记不同的分词作为负样本;
计算该分词的深层语义特征向量和所述正样本的深层语义特征向量之间的余弦相似度,得到第一空间距离;
计算该分词的深层语义特征向量和所述负样本的深层语义特征向量之间的余弦相似度,得到第二空间距离;
将所述第一空间距离以及所述第二空间距离作为自变量,代入所述Triplet损失函数中,计算得到该分词的第一损失函数值;
计算该训练样本中的每一个分词的第一损失函数值的和值,将计算结果作为所述第一输出损失函数值。
可选的,所述第三计算单元,还用于:
针对该训练样本中的每一个分词,利用所述条件随机场,确定该分词的发射分数矩阵以及转移分数矩阵,其中,所述发射分数矩阵中的每一位元素用于表征该分词的实体标记预测结果与该位元素的列标签一致的概率,所述转移矩阵中的每一位元素用于表征该分词的实体标记预测结果从该位元素的行标签转移到该位元素的列标签的概率,所述发射分数矩阵中每一列的列标签对应该训练样本中包含的一种实体标记,所述转移矩阵中每一列的列标签对应该训练样本中包含的一种实体标记,所述转移矩阵中第一行的行标签对应该训练样本中包含的一种实体标记;
从每一分词的发射分数矩阵中,选取第一元素的元素值,按照该训练样本中分词的排列顺序进行加法计算,得到第一元素和值,其中,所述第一元素是每一分词的发射分数矩阵中元素值最大的元素;
从每一分词的转移分数矩阵中,选取第二元素的元素值,按照该训练样本中分词的排列顺序进行加法计算,得到第二元素和值,其中,所述第二元素的列标签与当前的分词的第一元素的列标签相同,所述第二元素的行标签与前一位分词的第一元素的列标签相同;
将所述第一元素和值与所述第二元素和值代入条件随机场损失函数中,计算得到所述第二输出损失函数值。
实施例三
如图5所示,本申请实施例提供了一种计算机设备500,用于执行本申请中的实体识别方法,该设备包括存储器501、处理器502及存储在该存储器501上并可在该处理器502上运行的计算机程序,其中,上述处理器502执行上述计算机程序时实现上述的实体识别方法的步骤。
具体地,上述存储器501和处理器502可以为通用的存储器和处理器,这里不做具体限定,当处理器502运行存储器501存储的计算机程序时,能够执行上述的实体识别方法。
对应于本申请中的实体识别方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述的实体识别方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述的实体识别方法。
在本申请所提供的实施例中,应该理解到,所揭露系统和方法,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。