发明内容
为解决以上现有技术存在的问题,本发明提出了一种适用于多领域的中文命名实体识别方法,该方法包括:获取待识别的实体数据;将待识别的实体数据输入到中文命名实体识别模型中,得到识别的结果,对识别的结果进行标记;
对中文命名实体识别模型进行训练的过程包括:
S1:获取原始中文命名实体数据集,对该数据集中的数据进行领域分类处理;
S2:采用样本学习法对领域分类后的数据进行采样,得到训练集;
S3:将训练集中的数据输入到模型的共享编码表示层,得到输入数据中每个词的向量表示;
S4:将每个词向量表示输入到域分类器中,得到该数据的所属领域的概率分布;
S5:采用领域专家层提取每个词的向量表示的领域独有特征;公共专家层根据概率分布和词向量表示的领域独有特征提取词向量的公有领域特征;
S6:将领域独有特征和公有领域特征分别输入到对应的CRF层,得到实体命名结果;
S7:计算模型的损失函数,将训练集中的数据依次输入到模型中,不断调整模型的参数,当损失函数值最小时完成模型的训练。
优选的,对该数据集中的数据进行领域分类处理的过程包括:根据数据集中的数据来源将各个数据划分到不同的领域中,对每个领域设置命名实体标签空间和数据标签;对于数据集中的中尉数据进行特定的处理,该特定的处理包括删除所有非中文、非英文和非正常标点的特殊符号,将删掉特殊符号的数据过滤停用词和噪声,并根据实体库进行分词处理;采用BIO标注法对数据集中的标签进行编码处理,使得样本中的每一个字符对应一个标签。
优选的,采用共享编码表示层对输入数据进行向量表示的过程包括:共享编码表示层为双向门控循环单元,将该单元作为上下文语义的编码器;将输入数据的样本进行向量表示为X=(x1,x2,...,xm),将输入样本输入到编码器中进行编码处理,得到每个词的向量表示。
进一步的,编码器对输入样本向量进行处理的公式为:
zl=σUzxl+Rzhl-1+bz
rl=σUrxl+Rrhl-1+br
nl=tanh Uhxl+Rhrl*hl-1+bh
hl=zl*hl-1+1-zl*nl
其中,zl表示更新门向量,σ表示激活函数Sigmoid,xl表示第l步输入,rl表示复位门向量,U,R,b分别表示编码器随机初始化的可学习的参数,nl表示新的门向量,tanh表示双曲正切函数,hl表示l时间步的隐藏状态。
优选的,采用域分类器对词向量表示进行处理的过程包括:
S41:将隐藏层向量h输入到多层感知机MLP中提取域分类特征;得到域分类特征的公式为:
C=MLP(relu(h))
S42:将域分类特征输入到Softmax层中,得到所属领域概率分布Yd,公式为:
其中,relu表示分段线性函数,MLP表示多层感知机网络,表示属于第n个领域的概率值,softmax表示归一化函数。
优选的,采用领域专家层提取每个词的向量表示的领域独有特征的公式为:
Fi=Experti(h)
其中,Fi表示词向量表示的领域独有特征,Experti表示特征抽取网络,即包括但不限于CNN、MLP,h表示隐藏层向量。
优选的,公共专家层根据概率分布和词向量表示的领域独有特征提取词向量的公有领域特征的公式为:
其中,Fpublic表示词向量的公有领域特征,n表示已知数据中领域的数量,Fi表示词向量表示的领域独有特征,表示词向量表示所属领域的概率分布。
优选的,将领域独有特征和公有领域特征分别输入到对应的CRF层进行处理的过程包括:
S61:将领域独有特征和公有领域特征输出矩阵当作字符的标签分类概率P,,其中P的大小为m×k,m表示字的个数,k表示标签个数;
S62:根据训练集各领域标签空间中的标签依赖关系学习转移矩阵A,根据转移矩阵得到转移得分;
S63:根据转移得分和标签分类概率计算每条候选预测序列的得分:
其中,表示在标签空间中第i个标签到第i+1个标签的转移得分,Pj表示第j个字符的标签分类概率;
S64:使用Viterbi算法对每条候选预测序列的得分进行解码,将分数最大的预测序列作为预测结果。
优选的,模型的损失函数为:
其中,n表示已知数据中领域的数量,SDi表示第i个领域的得分,Fi表示词向量表示的领域独有特征,Li表示第i个领域的标签空间,表示公有领域的得分,Fpublic表示词向量的公有领域特征,LAll表示所有领域标签空间之和,CrossEntropy表示交叉熵损失函数,表示所属领域概率分布,Yd表示领域分类的真实标签。
本发明将多任务学习技术应用到中文命名实体识别领域中,不同域的数据被单独视为一个训练任务并设计特定的多专家模型结构来提取域独有特征和域共有特征,使不同域之间相互辅助,提升识别效果。设计域分类器模块使各领域的特征空间对齐。本发明提出的模型具有泛化能力和鲁棒性,对未知领域文本的命名实体识别有一定效果。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种适用于多领域的中文命名实体识别方法,该方法包括获取待识别的实体数据;将待识别的实体数据输入到中文命名实体识别模型中,得到识别的结果,对识别的结果进行标记。
对中文命名实体识别模型进行训练的过程包括:
S1:获取原始中文命名实体数据集,对该数据集中的数据进行领域分类处理;
S2:采用样本学习法对领域分类后的数据进行采样,得到训练集;
S3:将训练集中的数据输入到模型的共享编码表示层,得到输入数据中每个词的向量表示;
S4:将每个词向量表示输入到域分类器中,得到该数据的所属领域的概率分布;
S5:采用领域专家层提取每个词的向量表示的领域独有特征;公共专家层根据概率分布和词向量表示的领域独有特征提取词向量的公有领域特征;
S6:将领域独有特征和公有领域特征分别输入到对应的CRF层,得到实体命名结果;
S7:计算模型的损失函数,将训练集中的数据依次输入到模型中,不断调整模型的参数,当损失函数值最小时完成模型的训练。
一种适用于多领域的中文命名实体识别方法的具体实施方式,如图1所示,该方法包括:
S1:对中文命名实体数据集进行领域分类;
S2:将不同域数据以N-way K-shot采样构建Batch输入到模型的共享编码表示层;
S3:将S2得到的编码向量输入到域分类器,得到数据的所属领域概率分布;
S4:将S2得到的编码向量输入到各领域专家层提取领域独有特征,公共专家层根据S3输出的所属领域概率分布综合各领域专家的特征;
S5:将各专家层提取的特征输入到对应的CRF层;
S6:模型预测已知领域文本或未知领域文本。
对该数据集中的数据进行领域分类处理的过程包括:根据数据集中的数据来源将各个数据划分到不同的领域中,对每个领域设置命名实体标签空间和数据标签;对于数据集中的中尉数据进行特定的处理,该特定的处理包括删除所有非中文、非英文和非正常标点的特殊符号,将删掉特殊符号的数据过滤停用词和噪声,并根据实体库进行分词处理;采用BIO标注法对数据集中的标签进行编码处理,使得样本中的每一个字符对应一个标签。
整体模型流程图如图2所示,首先需要准备数据集,对已有的中文命名实体数据集进行领域分类,进行数据预处理操作,具体步骤为:
S11:将已有数据集根据其产生来源细分为n不同的领域DAll{D1,D2,...,Dn},不同下标代表不同的领域,如广播对话、电视新闻、网络博客等。在每个数据域Dn中设置有命名实体标签空间Ln和数据标签LAll{L1,L2,...,LN},常见的命名实体有人名、地点、机构等。
S12:对数据集中的中文数据进行特定的处理,特定的处理包括删掉所有的非中文、非英文、非正常标点的特殊符号;过滤停用词以及噪声;根据已有实体库进行分词。
S13:数据标注:本发明使用BIO标注法将训练数据集的标签进行编码,样本中的每一个字符对应一个标签。用B-X表示实体的开头、I-X表示实体的中间、O表示非实体。
步骤S2将不同域数据以N-way K-shot采样构建Batch输入到模型的共享编码表示层具体为:
S21:为了使所有领域训数据均匀分布在每一个训练Batch中,本发明采取N-wayK-shot方法构建DataLoader。在训练阶段,从n个领域中分别抽取K条训练样本组成训练Batch,在测试阶段,随机抽取组成Batch。
S22:输入共享编码表示层:本例使用双向门控循环单元(Bi-GRU)作为上下文语义的编码器,该模块为公共部分,即所有领域训练数据都需要通过该层,定义输入样本的向量表示为X=(x1,x2,...,xm),编码器具体公式为:
zl=σUzxl+Rzhl-1+bz
rl=σUrxl+Rrhl-1+br
nl=tanh Uhxl+Rhrl*hl-1+bh
hl=zl*hl-1+1-zl*nl
其中,zl表示更新门向量,σ激活函数Sigmoid,xl表示第1步输入,rl表示复位门向量,U,R,b分别表示编码器随机初始化的可学习的参数,nl表示新的门向量,tanh表示双曲正切函数,hl表示1时间步的隐藏状态。
S23:编码层输出每个词的向量表示
步骤S3将S2得到的编码向量输入到域分类器,得到数据的所属领域概率分布,具体为:
S31:将S2的得到的隐藏层向量h,输入多层感知机MLP提取域分类特征:
C=MLP(relu(h))
S32:输入Softmax层,得到所属领域概率分布Yd:
其中,relu表示分段线性函数,MLP表示多层感知机网络,表示属于第n个领域的概率值,softmax表示归一化函数。
步骤S4将S2得到的编码向量输入到各领域专家层提取领域独有特征,公共专家层根据S3输出的所属领域概率分布综合各领域专家的特征,具体为:
S41:将S2的得到的隐藏层向量h,输入各领域专家层提取域独有特征Fi:
Fi=Experti(h)
其中,Fi表示词向量表示的领域独有特征,Experti表示特征抽取网络,包括但不限于CNN、MLP,h表示隐藏层向量。
S42:根据S3的输出综合各领域特征得到公有领域特征Fpublic:
其中,Fpublic表示词向量的公有领域特征,n已有数据中的领域数量,Fi表示词向量表示的领域独有特征,表示词向量表示所属领域的概率分布。
将领域独有特征和公有领域特征分别输入到对应的CRF层进行处理的过程包括:
步骤1:将领域独有特征和公有领域特征输出矩阵当作字符的标签分类概率P,其中P的大小为m×k,m表示字的个数,k表示标签个数;
步骤2:根据训练集各领域标签空间中的标签依赖关系学习转移矩阵A,其中A的大小为(k+2)×(k+2);
步骤3:根据转移得分和标签分类概率计算每条候选预测序列的得分:
其中,表示在标签空间中第i个标签到第i+1个标签的转移得分,Pj表示第j个字符的标签分类概率;
步骤4:使用Viterbi算法对每条候选预测序列的得分进行解码,将分数最大的预测序列作为预测结果。
将各专家层提取的特征输入到对应的CRF层得到各个CRF层对应的损失函数的步骤包括:
S51:将S4得到的领域特征分别输入到对应的CRF层中,得到每个域的CRF损失和公共领域的损失,定义每个域预测序列的得分函数为:
其中,SDn表示第n个领域的得分,Fn表示表示领域n词向量表示的领域独有特征,Ln表示第n个领域的标签空间,m表示样本长度,表示在领域标签空间L中第j个标签到j+1个标签的转移的分,/>表示第j个字符的标签分类概率,/>表示公共领域得分,LAll表示所有标签组成的标签空间,Fpublic表示词向量的公有领域特征。
S52:计算整个模型的损失Loss:
其中,n表示有n个领域,CrossEntropy表示交叉熵损失函数,表示所属领域概率分布,Yd表示领域分类真实标签。
步骤S6模型预测已知领域文本或未知领域文本具体为:
S61:针对已知领域的文本,直接输入给定领域名称,模型自动通过该领域的专家模块得到预测结果。
S62:针对未知领域的文本,先后通过域分类器,在通过公共域专家层得到最终预测结果。
以上所举实施例,对本发明的目的、技术方案和优点进行了进一步的详细说明,所应理解的是,以上所举实施例仅为本发明的优选实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内对本发明所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。