本发明涉及计算机技术领域,更具体地,涉及一种融合知识图谱与bert的中文医学命名实体识别方法、装置。
背景技术:
随着医疗卫生信息化建设进程的不断加快,医疗行业也迎来了自己的大数据时代。海量的医疗数据普遍以非结构化的方式存在于文本当中,如何高效的从这些文本中抽取有用的信息成为了现代医学研究发展的重点。
ner作为自然语言处理的基础,能够自动化的从医学文本中抽取疾病、症状名称等特定实体,可帮助人们从繁重枯燥的人工标注与分析工作中解放出来。然而,面向中文医疗领域的ner还存在着许多的问题和难点。中文并不像英文那样有着空格这种天然的分隔符,在处理中文文本之前首先需要对其进行分词操作,而分词本身就可能与医学命名实体识别产生冲突,例如,“小儿感冒颗粒”可能会被分为“小儿感冒”与“颗粒”。同时,中文是一种意合型的语言,它更注重语句里的内在关系,导致同一中文命名实体在不同语境中的含义可能有所不同。再者,医学领域的实体名称具有很强的专业性,所有数据都需要专业人士进行标注,导致开放的数据集较少,这也给ner任务带来了新的挑战。因此,如何设计开发一种准确、高效的面向中文医疗领域的ner算法已成为焏待解决的问题。
现有的ner方法主要分为两类:
(1)基于词典和规则的方法
基于词典和规则的方法主要是通过字符串匹配算法来识别文本中出现的实体名称。这类方法需要领域专家和语言专家手工建立规则,比较消耗时间,系统的可移植性差,精度也普遍不高。
(2)基于深度学习的方法
基于深度学习的方法主要是通过获取序列中单词的向量表示来捕获单词特征信息,并在此基础上将其作为深度模型的输入,通过模型来提取序列的句法特征信息和语义特征信息,从而完成ner任务。该方法相比于基于词典和规则的方法在精度上有较大的提升,但它却没有很好的考虑到单词的上下文环境,忽略了单词在语义层面的信息,在识别精度上还有一定的上升空间。
技术实现要素:
有鉴于此,本发明的目的在于提供一种融合知识图谱与bert的中文医学命名实体识别方法、装置以解决上述问题。
本发明实施例提供了一种融合知识图谱与bert的中文医学命名实体识别方法,其包括:
构建知识图谱的数据模型;其中,所述数据模型包括多个中文医学实体类,医学实体类之间形成有预定的实体关系;
在设定的医疗网站上爬取疾病简介页面中的相应内容,将所述内容存储在数据库中,并将所述数据库中的数据导出为json格式的json文件;
根据所述数据模型从所述json文件抽取相应的医学实体和实体关系,从而构建医疗知识图谱k;
识别输入的句子中包含的医学实体,并根据所述医疗知识图谱将每个医学实体填充成三元组ε=(wi,rk,wj),wi,wj均为实体名称,rk为实体间关系,ε∈k;
将相应的三元组注入到所述句子中,生成一个包含领域知识的句子树;
通过嵌入层中的软位置索引和可视层中的可视矩阵对所述句子树进行处理,从而将所述句子树中蕴含的领域知识加载到bert模型中,进而所述bert模型再根据任务需要在数据集上进行训练完成ner任务。
优选地,所述医学实体类包括:疾病名称、症状、饮食保健中的食品名称、常用药品、检查项目、就诊科室。
优选地,所述医学实体类之间的实体关系包括:
(1)xhas_symptomy:患有疾病实体x会有症状实体y;
(2)xdo_eaty:患有疾病实体x适宜吃食物实体y;
(3)xrecommend_drugy:患有疾病实体x推荐药品实体y;
(4)xneed_checky:患有疾病实体x需要做检查项目实体y;
(5)xacompany_withy:患有疾病实体x伴随着并发症实体y;
(6)xbelongs_toy:实体x属于实体y;
(7)xno_eaty:患疾病实体x不宜吃食物实体y。
优选地,通过嵌入层中的软位置索引和可视层中的可视矩阵对所述句子树进行处理,从而将所述句子树中蕴含的领域知识加载到bert模型中,进而所述bert模型再根据任务需要在数据集上进行训练完成ner任务,具体包括:
在嵌入层中将所述句子树平铺成包括多个字符的序列;
设置软位置索引使得所述序列的每个字符在其枝干上的位置顺序正确;
通过可视层中的可视矩阵对枝干中的字符进行区分,将句子树中的结构化信息保留,并且使得每个字的嵌入只与其同一个枝干中的上下文有关,从而将原本树结构的句子树引入到bert模型中;
经过掩码转换器对序列进行语义建模。
优选地,可视矩阵m的计算公式为:
其中wi·wj表示字符wi,wj属于同一个枝干,相反
优选地,经过掩码转换器来对序列进行语义建模,具体包括:
将字符转化成对应的向量xi,然后分别与权重矩阵wq,wk,wv相乘,生成对应的查询向量qi、键向量ki和值向量vi,其中qi与ki的乘积为序列中当前处理字符与系列中每个字符的相关性得分;
将所述相关性得分除以键向量维度ki的开方,使训练过程中的梯度更加稳定;
通过softmax函数对结果进行归一化处理,再使用归一化后的分数与值向量vi相乘,以突出语义相关字符,而弱化相关性低的字符;所有经过加权后值向量的和即为当前处理字符的最终向量表示;
以上过程的计算公式为:
其中q=s·wq,k=s·wk,v=s·wv,s为序列的向量矩阵;
掩码注意力模块会在计算字符间的相关性得分的时候添加一个由可视矩阵获取的分数mij,对于一个输入向量hi,它在掩码注意力模块中的计算过程可由以下公式计算:
qi 1,ki 1,vi 1=hiwq,hiwk,hiwv
hi 1=si 1vi 1
若两个字在同一枝干,则mij取值为0,按照自注意力机制中的打分方式进行计算;反之,若两个字不在同一枝干,则mij取值为负无穷,那么si 1的得分即为0,这也就意味着这两个字符对彼此的隐藏状态无影响。
本发明实施例还提供了一种融合知识图谱与bert的中文医学命名实体识别装置,其包括:
构建模块,用于构建知识图谱的数据模型;其中,所述数据模型包括多个中文医学实体类,所述医学实体类之间形成有预定的实体关系;
爬取模块,用于在设定的医疗网站上爬取疾病简介页面中的相应内容,将所述内容存储在数据库中,并将所述数据库中的数据导出为json格式的json文件;
知识图谱模块,用于根据所述数据模型从所述json文件抽取相应的医学实体和实体关系,从而构建医疗知识图谱k;
填充模块,用于识别输入的句子中包含的医学实体,并根据所述医疗知识图谱将每个医学实体填充成三元组ε=(wi,rk,wj),wi,wj均为实体名称,rk为实体间关系,ε∈k;
注入模块,用于将相应的三元组注入到所述句子中,生成一个包含领域知识的句子树;
加载模块,用于通过嵌入层中的软位置索引和可视层中的可视矩阵对所述句子树进行处理,从而将所述句子树中蕴含的领域知识加载到bert模型中,进而所述bert模型再根据任务需要在数据集上进行训练完成ner任务。
优选地,所述医学实体类包括:疾病名称、症状、饮食保健中的食品名称、常用药品、检查项目、就诊科室。
优选地,所述实体类之间的实体关系包括:
(1)xhas_symptomy:患有疾病实体x会有症状实体y;
(2)xdo_eaty:患有疾病实体x适宜吃食物实体y;
(3)xrecommend_drugy:患有疾病实体x推荐药品实体y;
(4)xneed_checky:患有疾病实体x需要做检查项目实体y;
(5)xacompany_withy:患有疾病实体x伴随着并发症实体y;
(6)xbelongs_toy:实体x属于实体y;
(7)xno_eaty:患疾病实体x不宜吃食物实体y。
优选地,所述加载模块具体用于:
在嵌入层中将所述句子树平铺成包括多个字符的序列;
设置软位置索引使得所述序列的每个字符在其枝干上的位置顺序正确;
通过可视层中的可视矩阵对枝干中的字符进行区分,将句子树中的结构化信息保留,并且使得每个字的嵌入只与其同一个枝干中的上下文有关,从而将原本树结构的句子树引入到bert模型中;
经过掩码转换器对句子进行语义建模。
综上所述,本发明提供的一种融合知识图谱与bert的中文医疗命名实体识别方法,针对中文医学命名实体识别难度大、精度低的问题,将医疗知识图谱集成到预训练语言模型中,为模型配备相应的医学知识,从而完成面向医疗领域的ner任务。本实施例首先自顶向下的构造中文医疗知识图谱,然后将知识图谱内的三元组知识注入到句子中,生成一个包含领域知识的句子树。再利用软位置索引和可视矩阵来解决引入外部知识信息可能产生的知识噪音问题以及bert模型无法处理图结构句子树的问题,从而将知识图谱中蕴含的丰富领域知识引入到bert中。该方法可快速、有效的提取出文本中包含的医学实体,具有较高的准确性。
附图说明
图1为本发明第一实施例的融合知识图谱与bert的中文医学命名实体识别方法的流程示意图。
图2为医疗网站中疾病介绍页面示意图。
图3为构建的医疗知识图谱中的部分三元组信息。
图4为将医疗知识图谱融入bert模型的整体架构图。
图5为软定位与可视矩阵的示意图。
图6为自注意力机制的工作流程图。
图7为本发明第二实施例的融合知识图谱与bert的中文医学命名实体识别装置的结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
请参阅图1,本发明第一实施例提供了一种融合知识图谱与bert的中文医学命名实体识别方法,其包括:
s101,构建知识图谱的数据模型;其中,所述数据模型包括多个中文医学实体类,所述医学实体类之间形成有预定的实体关系。
在本实施例中,所述医学实体类包括:疾病名称、症状、饮食保健中的食品名称、常用药品、检查项目、就诊科室。
所述医学实体类之间的实体关系包括:
(1)xhas_symptomy:患有疾病实体x会有症状实体y;
(2)xdo_eaty:患有疾病实体x适宜吃食物实体y;
(3)xrecommend_drugy:患有疾病实体x推荐药品实体y;
(4)xneed_checky:患有疾病实体x需要做检查项目实体y;
(5)xacompany_withy:患有疾病实体x伴随着并发症实体y;
(6)xbelongs_toy:实体x属于实体y;
(7)xno_eaty:患疾病实体x不宜吃食物实体y。
数据模型的模式层中的实体类型以及实体关系可参照表1。
表1
s102,在设定的医疗网站上爬取疾病简介页面中的相应内容,将所述内容存储在数据库中,并将所述数据库中的数据导出为json格式的json文件。
s103,根据所述数据模型从所述json文件抽取相应的医学实体和实体关系,从而构建医疗知识图谱k。
在本实施例中,知识库的数据来源为垂直类医疗网站中的疾病介绍页面,其一种可能的内容如图2所示。
在图2中,以疾病为中心,通过xpath解析网页,爬取了疾病介绍页面中疾病简介、症状、检查等详细页面的内容,数据存储在mongodb数据库中,并将其导出为json格式以方便读取。然后根据模式层中已经设计好的实体类型和实体关系,从json文件中将其抽取出来,并导入到neo4j图数据库中,neo4j中部分三元组关系表示如图3所示。
s104,识别输入的句子中包含的医学实体,并根据所述医疗知识图谱将每个医学实体填充成三元组。
在本实施例中,三元组可表示为ε=(wi,rk,wj),其中,wi,wj均为实体名称,rk为实体间关系,ε∈k。
s105,将相应的三元组注入到所述句子中,生成一个包含领域知识的句子树。
在本实施例中,假设输入的句子为“细菌感染会有咽喉疼痛的症状”,则模型会根据序列中存在的实体“细菌感染”和“咽喉疼痛”,将“细菌感染-belongs_to-内科”与“细菌感染-no_eat-鸭蛋”等存在于医疗知识图谱k中的相应三元组信息ε注入原句中,生成如图4所示的句子树。
s106,通过嵌入层中的软位置索引和可视层中的可视矩阵对所述句子树进行处理,从而将所述句子树中蕴含的领域知识加载到bert模型中,进而所述bert模型再根据任务需要在数据集上进行训练完成ner任务。
在本实施例中,bert类模型是无法处理句子树这种非序列结构输入的,如果强行将句子树平铺成序列结构的话,又必然会导致信息丢失,因此需要使用嵌入层中的软位置索引和可视层中的可视矩阵来解决此问题。
如图5所示,句子树首先会在嵌入层中被平铺成序列“[cls]细菌感染no_eat鸭蛋belongs_to内科会有咽喉疼痛has_symptom热咳的症状”,其中[cls]为句子开头的标识,是为了方便模型识别,可以设置为任意的识别标识,本发明不做具体限定。
在本实施例中,平铺生成的序列难以理解并且其中字符位置关系错乱,因此需要设置软位置索引(即图5中不带圆圈的数字)使得每个字符在其枝干上的位置顺序正确,即“[cls](0)细(1)菌(2)感(3)染(4)no_eat(5)鸭(6)蛋(7)belongs_to(5)内(6)科(7)会(5)有(6)咽(7)喉(8)疼(9)痛(10)has_symptom(11)热(12)咳(13)的(11)症(12)状(13)”。同时为了解决经过软位置编码后序列中不同的字可能会有相同的编号,以及可能会导致“鸭蛋”与“热咳”这种本来无关的词语间产生新的联系,还需要用到可视矩阵来进行区分。
具体地,可视矩阵m的计算公式可表示为:
其中wi·wj表示wi,wj属于同一个枝干,相反
在本实施例中,掩码转换器是由多个掩码自注意力(mask-self-attention)模块堆叠而成,每个自注意力模块的输出会作为下个模块的输入,掩码自注意力模块源自于自注意力机制(self-attention),只不过在它的基础上使得序列中不同枝干上的字互相看不到。自注意力机制主要是在对序列进行编码的时候把训练重点集中在与当前处理字符相关的序列部分,忽略无关部分。下面通过图6,以输入序列中的单词“细菌”为例,详细阐述自注意力机制的工作流程。
具体而言,自注意力机制首先将单词“细菌”分割成字符“细”、“菌”,并转化成向量x1、x2,然后分别与权重矩阵wq,wk,wv相乘,生成对应的查询向量qi,键向量ki和值向量vi,其中qi与ki的乘积为序列中当前处理字符与序列中每个字符(包含当前处理字符)的相关性得分。之后所相关性得分会除以键向量ki维度的开方,这样可以使训练过程中的梯度更加稳定,然后通过softmax函数对结果进行归一化处理。再使用归一化后得到的分数与值向量vi相乘,直观上来看是为了突出语义相关字符,而弱化那些相关性低的字符(将值向量乘以一个很小的数字),但同时也是为了后面的求和做准备,所有经过加权后值向量的和即为当前处理字符的最终向量表示。以上过程的计算公式为:
其中q=s·wq,k=s·wk,v=s·wv,s为序列的向量矩阵。
掩码注意力模块会在计算字符间的相关性得分的时候添加一个由可视矩阵获取的分数mij。对于一个输入向量hi,它在掩码注意力模块中的计算过程可由以下公式计算:
qi 1,ki 1,vi 1=hiwq,hiwk,hiwv(3)
hi 1=si 1vi 1(5)
若两个字符在同一枝干,则mij取值为0,按照自注意力机制中的打分方式进行计算;反之,若两个字不在同一枝干,则mij取值为负无穷,那么si 1的得分即为0,这也就意味着这两个字对彼此的隐藏状态无影响。
从以上可以看出,掩码注意力模块类似于bert中的自注意力机制,不同点在于它在对序列中的字符进行注意力打分的时候会添加一个由可视矩阵获取的分数。
在本实施例中,通过以上步骤即可将医疗知识图谱k中蕴含的领域知识加载到bert模型中,bert模型再根据任务需要在数据集上进行训练和调整即可完成ner任务。
为便于对本发明的理解,下面将以两部分实验来证明本发明所提出方法的性能。
在第一部分实验中,将本实施例与融入非医疗领域知识图谱(hownet)和通用知识图谱(cn-dbpedia)以及未融入知识图谱的bert模型进行实验对比,语料来源为ccks2017:task2,通过bio三位标注,包含治疗方式、身体部位、疾病症状、医学检查和疾病实体共五类实体。其对比结果如表2所示
表2
由表2中bert在融入不同知识图谱后进行ner的结果可看出,将非医疗领域的知识图谱(hownet)集成到bert中,对模型进行面向医疗领域的ner任务时几乎没有影响。因为在这种面向特定领域的任务中,这些非领域性的知识对于模型来说是多余的,它们的出现很难影响到模型的性能。同时,对于bert级别的模型而言,它已经从海量的开放领域训练语料中学习到了一些高频、潜在的知识,比如“中国-首都-北京”,因此将通用知识图谱(cn-dbpedia)中涵盖的此类信息加载到bert中也是难以提升模型性能的。而将医疗知识图谱(medicalkg)融入bert后,模型的precision、recall和f1都有提升。bert本身就拥有着庞大的模型体量并且通过海量的数据训练而来,它考虑了单词的上下文信息以及单词语义层面的丰富信息,很大程度上发挥出了深度学习的表征能力。然而bert存在的问题在于,它的这些训练数据都源于开放领域,这也就意味着bert更像一个博览群书的普通人,虽然能读得懂通用文本,但面对医疗、金融等特定领域时,缺乏一定的背景知识,而通过专业领域的语料进行模型的预训练又需要消耗大量的时间和计算资源。另一方面,知识图谱中蕴含了丰富的知识信息,将知识图谱集成到bert中不但可为模型配备现成的领域知识,而且还省去了额外的预训练过程。因此,融入领域知识图谱的bert毋庸置疑会在特定任务中表现的更好。
值得注意的是,融入知识图谱的bert模型是在训练集上进行fine-tuning,如果构建的医疗知识图谱中没有包含训练集中出现的医学实体,那么就无法将相应的三元组信息注入到模型中去。同时,本实施例所构建的知识图谱与训练语料中所对应的实体类型也只有疾病、检查和疾病症状三种,因此在一定程度上会影响模型在ner任务上的表现。但尽管如此,模型的性能还是在融入医疗知识图谱后有了较好的提升。因此,如果能够构建一个大规模的医疗知识图谱,囊括更多的医学实体信息,那么模型的性能将会有更大的提升。
第二部分实验,将本实施例与hmm、bi-lstm和bi-lstm-crf进行比较测试,同时为了验证模型的泛化性能,本实施例选用ccks2018电子病例ner评测任务中提供的600份标注好的电子病历文本作为语料进行实验,其中包含的实体类型与ccks2017一致。本实施例将语料顺序打乱,并以6:2:2的比例分成训练集、验证集和测试集进行验证。
由表3可看出,在上述几种方法中,融入医疗知识图谱的bert模型取得了最好的效果,相比于ner任务中经典的bi-lstm-crf算法,其精度也提升了近4%。同时相比于表1,虽然使用了不同的数据集,但是模型的性能依然稳定。以上的实验结果都表明了本发明算法的优越性,具有一定的实用价值。
表3
综上所述,本发明提供的一种融合知识图谱与bert的中文医疗命名实体识别方法,针对中文医学命名实体识别难度大、精度低的问题,将医疗知识图谱集成到预训练语言模型中,为模型配备相应的医学知识,从而完成面向医疗领域的ner任务。本实施例首先自顶向下的构造中文医疗知识图谱,然后将知识图谱内的三元组知识注入到句子中,生成一个包含领域知识的句子树。再利用软位置索引和可视矩阵来解决引入外部知识信息可能产生的知识噪音问题以及bert模型无法处理图结构句子树的问题,从而将知识图谱中蕴含的丰富领域知识引入到bert中。该方法可快速、有效的提取出文本中包含的医学实体,具有较高的准确性。
请参阅图7,本发明第二实施例还提供了一种融合知识图谱与bert的中文医学命名实体识别装置,其包括:
构建模块210,用于构建知识图谱的数据模型;其中,所述数据模型包括多个中文医学实体类,所述医学实体类之间形成有预定的实体关系;
爬取模块220,用于在设定的医疗网站上爬取疾病简介页面中的相应内容,将所述内容存储在数据库中,并将所述数据库中的数据导出为json格式的json文件;
知识图谱模块230,用于根据所述数据模型从所述json文件抽取相应的医学实体和实体关系,从而构建医疗知识图谱k;
填充模块240,用于识别输入的句子中包含的医学实体,并根据所述医疗知识图谱将每个医学实体填充成三元组ε=(wi,rk,wj),wi,wj均为实体名称,rk为实体间关系,ε∈k;
注入模块250,用于将相应的三元组注入到所述句子中,生成一个包含领域知识的句子树;
加载模块260,用于通过嵌入层中的软位置索引和可视层中的可视矩阵对所述句子树进行处理,从而将所述句子树中蕴含的领域知识加载到bert模型中,进而所述bert模型再根据任务需要在数据集上进行训练完成ner任务。
优选地,所述医学实体类包括:疾病名称、症状、饮食保健中的食品名称、常用药品、检查项目、就诊科室。
优选地,所述实体类之间的实体关系包括:
(1)xhas_symptomy:患有疾病实体x会有症状实体y;
(2)xdo_eaty:患有疾病实体x适宜吃食物实体y;
(3)xrecommend_drugy:患有疾病实体x推荐药品实体y;
(4)xneed_checky:患有疾病实体x需要做检查项目实体y;
(5)xacompany_withy:患有疾病实体x伴随着并发症实体y;
(6)xbelongs_toy:实体x属于实体y;
(7)xno_eaty:患疾病实体x不宜吃食物实体y。
优选地,所述加载模块260具体用于:
在嵌入层中将所述句子树平铺成包括多个字符的序列;
设置软位置索引使得所述序列的每个字符在其枝干上的位置顺序正确;
通过可视层中的可视矩阵对枝干中的字符进行区分,将句子树中的结构化信息保留,并且使得每个字的嵌入只与其同一个枝干中的上下文有关,从而将原本树结构的句子树引入到bert模型中;
经过掩码转换器对序列进行语义建模。
应当注意的是,在本发明的装置的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本发明不受限于此,可以根据需要对各个部件进行重新划分或者组合,例如,可以将一些部件组合为单个部件,或者可以将一些部件进一步分解为更多的子部件。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。单词“包括”不排除存在未列在权利要求中的元件或步骤。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。
以上实施方式仅适于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
1.一种融合知识图谱与bert的中文医学命名实体识别方法,其特征在于,包括:
构建知识图谱的数据模型;其中,所述数据模型包括多个中文医学实体类,医学实体类之间形成有预定的实体关系;
在设定的医疗网站上爬取疾病简介页面中的相应内容,将所述内容存储在数据库中,并将所述数据库中的数据导出为json格式的json文件;
根据所述数据模型从所述json文件抽取相应的医学实体和实体关系,从而构建医疗知识图谱k;
识别输入的句子中包含的医学实体,并根据所述医疗知识图谱将每个医学实体填充成三元组ε=(wi,rk,wj),wi,wj均为实体名称,rk为实体间关系,ε∈k;
将相应的三元组注入到所述句子中,生成一个包含领域知识的句子树;
通过嵌入层中的软位置索引和可视层中的可视矩阵对所述句子树进行处理,从而将所述句子树中蕴含的领域知识加载到bert模型中,进而所述bert模型再根据任务需要在数据集上进行训练完成ner任务。
2.根据权利要求1所述的融合知识图谱与bert的中文医学命名实体识别方法,其特征在于,
所述医学实体类包括:疾病名称、症状、饮食保健中的食品名称、常用药品、检查项目、就诊科室。
3.根据权利要求2所述的融合知识图谱与bert的中文医学命名实体识别方法,其特征在于,
所述医学实体类之间的实体关系包括:
(1)xhas_symptomy:患有疾病实体x会有症状实体y;
(2)xdo_eaty:患有疾病实体x适宜吃食物实体y;
(3)xrecommend_drugy:患有疾病实体x推荐药品实体y;
(4)xneed_checky:患有疾病实体x需要做检查项目实体y;
(5)xacompany_withy:患有疾病实体x伴随着并发症实体y;
(6)xbelongs_toy:实体x属于实体y;
(7)xno_eaty:患疾病实体x不宜吃食物实体y。
4.根据权利要求1所述的融合知识图谱与bert的中文医学命名实体识别方法,其特征在于,通过嵌入层中的软位置索引和可视层中的可视矩阵对所述句子树进行处理,从而将所述句子树中蕴含的领域知识加载到bert模型中,进而所述bert模型再根据任务需要在数据集上进行训练完成ner任务,具体包括:
在嵌入层中将所述句子树平铺成包括多个字符的序列;
设置软位置索引使得所述序列的每个字符在其枝干上的位置顺序正确;
通过可视层中的可视矩阵对枝干中的字符进行区分,将句子树中的结构化信息保留,并且使得每个字的嵌入只与其同一个枝干中的上下文有关,从而将原本树结构的句子树引入到bert模型中;
经过掩码转换器对序列进行语义建模。
5.根据权利要求4所述的融合知识图谱与bert的中文医学命名实体识别方法,其特征在于,可视矩阵m的计算公式为:
其中wi·wj表示字符wi,wj属于同一个枝干,相反
6.根据权利要求4所述的融合知识图谱与bert的中文医学命名实体识别方法,其特征在于,经过掩码转换器来对序列进行语义建模,具体包括:
将字符转化成对应的向量xi,然后分别与权重矩阵wq,wk,wv相乘,生成对应的查询向量qi、键向量ki和值向量vi,其中qi与ki的乘积为序列中当前处理字符与系列中每个字符的相关性得分;
将所述相关性得分除以键向量维度ki的开方,使训练过程中的梯度更加稳定;
通过softmax函数对结果进行归一化处理,再使用归一化后的分数与值向量vi相乘,以突出语义相关字符,而弱化相关性低的字符;所有经过加权后值向量的和即为当前处理字符的最终向量表示;
以上过程的计算公式为:
其中q=s·wq,k=s·wk,v=s·wv,s为序列的向量矩阵;
掩码注意力模块会在计算字符间的相关性得分的时候添加一个由可视矩阵获取的分数mij,对于一个输入向量hi,它在掩码注意力模块中的计算过程可由以下公式计算:
qi 1,ki 1,vi 1=hiwq,hiwk,hiwv
hi 1=si 1vi 1
若两个字在同一枝干,则mij取值为0,按照自注意力机制中的打分方式进行计算;反之,若两个字不在同一枝干,则mij取值为负无穷,那么si 1的得分即为0,这也就意味着这两个字符对彼此的隐藏状态无影响。
7.一种融合知识图谱与bert的中文医学命名实体识别装置,其特征在于,包括:
构建模块,用于构建知识图谱的数据模型;其中,所述数据模型包括多个中文医学实体类,所述医学实体类之间形成有预定的实体关系;
爬取模块,用于在设定的医疗网站上爬取疾病简介页面中的相应内容,将所述内容存储在数据库中,并将所述数据库中的数据导出为json格式的json文件;
知识图谱模块,用于根据所述数据模型从所述json文件抽取相应的医学实体和实体关系,从而构建医疗知识图谱k;
填充模块,用于识别输入的句子中包含的医学实体,并根据所述医疗知识图谱将每个医学实体填充成三元组ε=(wi,rk,wj),wi,wj均为实体名称,rk为实体间关系,ε∈k;
注入模块,用于将相应的三元组注入到所述句子中,生成一个包含领域知识的句子树;
加载模块,用于通过嵌入层中的软位置索引和可视层中的可视矩阵对所述句子树进行处理,从而将所述句子树中蕴含的领域知识加载到bert模型中,进而所述bert模型再根据任务需要在数据集上进行训练完成ner任务。
8.根据权利要求7所述的融合知识图谱与bert的中文医学命名实体识别装置,其特征在于,
所述医学实体类包括:疾病名称、症状、饮食保健中的食品名称、常用药品、检查项目、就诊科室。
9.根据权利要求8所述的融合知识图谱与bert的中文医学命名实体识别装置,其特征在于,
所述实体类之间的实体关系包括:
(1)xhas_symptomy:患有疾病实体x会有症状实体y;
(2)xdo_eaty:患有疾病实体x适宜吃食物实体y;
(3)xrecommend_drugy:患有疾病实体x推荐药品实体y;
(4)xneed_checky:患有疾病实体x需要做检查项目实体y;
(5)xacompany_withy:患有疾病实体x伴随着并发症实体y;
(6)xbelongs_toy:实体x属于实体y;
(7)xno_eaty:患疾病实体x不宜吃食物实体y。
10.根据权利要求7所述的融合知识图谱与bert的中文医学命名实体识别装置,其特征在于,所述加载模块具体用于:
在嵌入层中将所述句子树平铺成包括多个字符的序列;
设置软位置索引使得所述序列的每个字符在其枝干上的位置顺序正确;
通过可视层中的可视矩阵对枝干中的字符进行区分,将句子树中的结构化信息保留,并且使得每个字的嵌入只与其同一个枝干中的上下文有关,从而将原本树结构的句子树引入到bert模型中;
经过掩码转换器对句子进行语义建模。
技术总结