CN112100394B - 一种用于推荐医疗专家的知识图谱构建方法 - Google Patents
一种用于推荐医疗专家的知识图谱构建方法 Download PDFInfo
- Publication number
- CN112100394B CN112100394B CN202010794152.9A CN202010794152A CN112100394B CN 112100394 B CN112100394 B CN 112100394B CN 202010794152 A CN202010794152 A CN 202010794152A CN 112100394 B CN112100394 B CN 112100394B
- Authority
- CN
- China
- Prior art keywords
- expert
- data
- entity
- research
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000010276 construction Methods 0.000 title claims abstract description 26
- 238000011160 research Methods 0.000 claims abstract description 125
- 238000012549 training Methods 0.000 claims abstract description 44
- 238000000605 extraction Methods 0.000 claims abstract description 29
- 238000000034 method Methods 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 22
- 238000005065 mining Methods 0.000 claims abstract description 14
- 238000007781 pre-processing Methods 0.000 claims abstract description 11
- 238000005516 engineering process Methods 0.000 claims abstract description 9
- 230000009191 jumping Effects 0.000 claims description 22
- 238000002372 labelling Methods 0.000 claims description 19
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 13
- 238000012795 verification Methods 0.000 claims description 11
- 238000012360 testing method Methods 0.000 claims description 10
- 239000013598 vector Substances 0.000 claims description 10
- 238000013527 convolutional neural network Methods 0.000 claims description 7
- 238000011156 evaluation Methods 0.000 claims description 7
- 238000004806 packaging method and process Methods 0.000 claims description 7
- 230000008676 import Effects 0.000 claims description 6
- 238000000547 structure data Methods 0.000 claims description 6
- 101100421536 Danio rerio sim1a gene Proteins 0.000 claims description 3
- 101100495431 Schizosaccharomyces pombe (strain 972 / ATCC 24843) cnp1 gene Proteins 0.000 claims description 3
- 101100242909 Streptococcus pneumoniae (strain ATCC BAA-255 / R6) pbpA gene Proteins 0.000 claims description 3
- 101100269618 Streptococcus pneumoniae serotype 4 (strain ATCC BAA-334 / TIGR4) aliA gene Proteins 0.000 claims description 3
- 238000013528 artificial neural network Methods 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 3
- 239000000203 mixture Substances 0.000 claims description 3
- 238000004064 recycling Methods 0.000 claims description 3
- 230000007704 transition Effects 0.000 claims description 3
- 238000012216 screening Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 244000236655 Diospyros kaki Species 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 235000011511 Diospyros Nutrition 0.000 description 2
- 230000001149 cognitive effect Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 235000008597 Diospyros kaki Nutrition 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/367—Ontology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/216—Parsing using statistical methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
- G06F40/295—Named entity recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Biophysics (AREA)
- Animal Behavior & Ethology (AREA)
- Probability & Statistics with Applications (AREA)
- Medical Treatment And Welfare Office Work (AREA)
Abstract
发明公开了一种用于推荐医疗专家的知识图谱构建方法,包括:使用网络爬虫技术采集数据并进行预处理,得到专家实体标注数据集ExpertData和研究实体标注数据集ResearchData;通过Dilated CNN‑CRF方法训练得到对应的国内医疗领域专家实体识别模型ExpertModel、研究实体识别模型ResearchModel;对ExpertData和ResearchData两个数据集处理得到关系抽取模型标注数据集RelationData;结合实体识别模型对医疗专家领域文本数据集抽取出实体和关系,建立知识三元组,引入FP‑growth置信度辅助余弦相似度算法实现专家推荐来筛选和构建新三元组实现知识图谱创建;开放Neo4j图数据库和关联挖掘系统接口API,用户通过WEB页面实现医疗专家知识图谱和专家合作推荐结果的查询访问。本发明能够有效提高模型的精确度。
Description
技术领域
本发明属于知识图谱构建和专家推荐技术领域,特别涉及一种用于推荐医疗专家的知识图谱构建方法。
背景技术
随着现在互联网和人工智能的进步,网络数据的增长加上人们对数据的认知价值的提升,知识图谱作为数据可视化展示的一门技术也都很大的飞跃,它丰富的知识表达方式也应运而生。认知计算、机器学习、知识表示、机器推理和许多更多的人工智能驱动技术正受到极大的关注,正如一些人所说的那样,智能自动化在所有行业和商业领域都产生了巨大的影响。而知识图谱便是人工智能行业的一个主要分支,知识图谱的出现为其他行业的发展提供的新的渠道,医疗专家的技术合作渠道就是其一。本文通过结合深度挖掘技术找到以国内医疗专家为研究目标的各实体之间潜在的联系,在知识图谱的基础上,提出了专家组合推荐。为国内医疗专家合作提供实际的应用价值,某个领域的核心专家信息、曾合作过得专家信息、有潜在合作空间的专家信息、可拓展的医疗领域及相关专家信息,并通过知识图谱建立的关系信息来实现专家组合推荐。最终目标还是对专家关联信息的挖掘,并建立起更有价值的知识网络来服务专家技术交流合作。
朱全银等人在知识图谱,学校领域数据挖掘、分类抽取方面已有的研究基础包括:Wanli Feng.Research of theme statement extraction for chinese literaturebased on lexical chain.International Journal of Multimedia and UbiquitousEngineering,Vol.11,No.6(2016),pp.379-388;刘金岭,冯万利.基于属性依赖关系的模式匹配方法[J].微电子学与计算机,2011,28(12):167-170;朱全银,潘禄,刘文儒,等.Web科技新闻分类抽取算法[J].淮阴工学院学报,2015,24(5):18-24;朱全银,冯万利等人申请、公开与授权的相关专利:李翔,朱全银,胡荣林,周泓.一种基于谱聚类的冷链物流配载智能推荐方法.中国专利公开号:CN105654267A,2016.06.08;肖绍章,朱全银,李翔,钱凯,于柿民,潘舒新,瞿学新,唐海波,邵武杰,高阳,江丽萍.一种学生浏览网页分类方法.中国专利公开号:CN107506472A,2017.12.22;朱全银,潘舒新,冯万利,李翔,贾笑颖,胡荣林,周泓,于柿民,赵阳,瞿学新,杨茂灿,唐海波,邵武杰.一种多维度网页浏览行为评估方法.中国专利公开号:CN106886577A,2017.06.23;朱全银,严云洋,胡荣林,李翔,瞿学新,唐海波,赵阳,高阳,钱凯.一种基于互信息和关联规则的文本特征提取方法.中国专利公开号:CN107766323A,2018.03.06;朱全银,唐海波,严云洋,李翔,胡荣林,瞿学新,邵武杰,许康,赵阳,钱凯,高阳.一种基于深度学习的用户文献阅读兴趣分析方法.中国专利公开号:CN108280114A,2018.07.13;朱全银,于柿民,胡荣林,冯万利,周泓.一种基于知识图谱的专家组合推荐方法.中国专利公开号:CN109062961A,2018.12.21。
传统的知识图谱构建方法需要有专家的参与,针对上述问题:百华睿.知识图谱构建方法及系统.中国专利公开号:CN108694177A,2018.10.23,属于专业数字出版领域,根据四个匹配单元模块,将文本中的关键词与领域主题进行匹配,得到知识元实例、属性和关系,进而构建知识图谱;范亮,崔小龙,朱毅,吴士民,石薇,秦东亮.基于知识点连接关系的知识图谱构建方法.中国专利公开号:CN107784088A,2018.03.09,属于教育学习领域,目的是增强知识点总结归纳的能力,构建方法是将教学知识点的元知识点和复合知识点组合;丁帅,李玲,杨善林,王浩.医疗知识图谱构建方法及装置.中国专利公开号:CN108492887A,2018.09.04,属于医疗技术领域,根据Aprior算法确定的实体的频繁项集并计算节点强度指标,从而构建知识图谱;贾维嘉,丁建辉,马世珩.动态知识图谱的构建方法.中国专利公开号:CN108509654A,2018.09.07,属于信息抽取技术领域,利用实体的联合向量构建动态知识图谱;曾伟雄.一种构建知识图谱的方法及装置.中国专利公开号:CN109145003A,2019.01.04,数据处理对象为结构化数据,采用确定基准实体的方法更新数据并构建知识图谱。但是目前还没有结合CNN训练神经网络模型对医疗专家领域的实体识别和关系抽取,构建知识图谱并完成专家组合推荐的方法。
发明内容
发明目的:针对现有技术中存在的问题,本发明提出一种用于推荐医疗专家的知识图谱构建方法,能够有效提高模型的精确度。
技术方案:为解决上述技术问题,本发明提供一种用于推荐医疗专家的知识图谱构建方法,具体步骤如下:
(1)使用网络爬虫技术采集国内医疗专家领域实体、实体属性及语料,对医疗专家数据集进行预处理,得到专家实体识别模型标注数据集ExpertData和研究实体识别模型标注数据集ResearchData;
(2)利用数据集ExpertData训练实体识别模型,得到基于BERT-Dilated CNN-CRF的国内医疗专家领域专家和研究实体识别模型ExpertModel和ResearchModel;
(3)对国内医疗专家领域关系集进行预处理,得到关系抽取模型标注数据集RelationData;
(4)重复RelationData数据集构建操作,形成新的完整RelationData数据集并整合对应的三元组Triples和按实体划分新三元组Triples_new,针对三元组集数据处理引入FP-growth置信度辅助余弦相似度算法实现专家组合推荐;
(5)根据三元组数据,构建国内医疗专家知识图谱;
(6)开放Neo4j图数据库接口API和关联挖掘系统接口API,用户通过WEB页面实现医疗专家知识图谱和专家合作推荐结果的查询访问。
进一步的,所述步骤(1)中得到专家实体识别模型标注数据集ExpertData和研究实体识别模型标注数据集ResearchData的具体步骤如下:
(1.1)选取中国知网上医疗专家研究发表的文献和各地区医疗网站上专家信息数据作为数据源;
(1.2)利用网络爬虫从结构化网页中获取国内医疗领域专家和研究的实体以及实体的属性作为结构化数据和国内医疗专家领域的长文本作为非结构化数据;
(1.3)根据现有医疗文本信息手动构建无效词汇表UnuseData;
(1.4)定义经过预处理后的结构化数据集为Struc_Data,Struc_Data={voc1,voc2,…,vocn,…,vocStruc_DataNum};
(1.5)对比无效词汇表UnuseData数据集,实现Struc_Data数据集的词汇过滤形成新的Struc_Data结构化数据集;
(1.6)对新数据集Struc_Data采用BIEO的序列标注方式,对文本的每个字进行标注,B表示实体开头,I表示实体词中对应字,E表示实体词汇结尾,O对应非实体内单字;
(1.7)定义计数器count1,令count1=1,用于遍历Struct_Data数据集应;
(1.8)若count1≤Struc_Data Num,执行步骤(1.9),否则执行步骤(1.11);
(1.9)对数据集Struc_Data中文本中的每个字构成Words数据集,“BIEO”序列标注法的标注结构构成标签数据集Labels,分别为Words={Word1,Word2,…,Wordn,…,WordWordsNum}和Labels={Label1,Label2,…,Labeln,…,LabelWordsNum};
(1.10)count1=count1+1;
(1.11)定义序列标注预处理后的专家实体模型标注数据集为ExpertData
(1.12)将BIEO序列标注结果一一对应存储到专家实体数据集ExpertData中,ExpertData={[Word1,Label1],[Word2,Label2],…,[Wordn,Labeln],…,[
WordWordsNum,LabelWordsNum]}和专家研究实体数据集ResearchData={[Word1,Label1],[Word2,Label2],…,[Wordn,Labeln],…,[WordWordsNum,LabelWordsNum]}。
进一步的,所述步骤(2)中得到基于BERT-Dilated CNN-CRF的国内医疗专家领域专家和研究实体识别模型ExpertModel和ResearchModel的具体步骤如下:
(2.1)根据实体识别模型得到的序列数据标注集ExpertData和ResearchData;
(2.2)对两个数据集进行随机抽取,得到训练集、测试集和验证集三个部分,分别定义为TrainA、TrainB,TestA、TestB,ValidA、ValidB;
(2.3)根据TrainA:ValidA:TestA=7:2:1的比例划分专家实体识别模型标注数据集ExpertData,TrainB:ValidB:TestB=8:1.5:0.5的比例划分专家研究实体识别模型标注数据集ResearchData;
(2.4)得到三个完全独立的数据集ExpertTrain={R1,R2,…,Rn…,RTrainNum}、ExpertValid={R1,R2,…Rn,…,RValidNum}和ExpertTest={R1,R2,…Rn,…,RTestNum},ResearchTrain={R1,R2,…,Rn…,RTrainNum}、ResearchValid={R1,R2,…Rn,…,RValidNum}和ResearchTest={R1,R2,…Rn,…,RTestNum};
(2.5)计算ExpertData和ResearchData数据集的训练集、测试集和验证集具体的数量;
(2.6)具体为,TrainA_Num=0.7Expert_Num,
TrainB_Num=0.8Research_Num,ValidA_Num=0.2Expert_Num,
ValidB_Num=0.15Research_Num,TestA_Num=0.1Expert_Num,TestB_Num=0.05Research_Num;
(2.7)建立Iterated Dilated CNN卷积层,每个元素对应一个characterwdc,每个文本对应一个一维的向量输入;
(2.8)通过Iterated Dilated CNN对输入文本skip掉所有dilation width中间的输入数据,再对膨胀后的新数据每一个字生成一个logits;
(2.9)经过一个隐含层输出到CRFLayer,并通过IDCNN计算出每个词的各标签概率;
(2.10)对CRF层引入序列的转移概率,最终计算出loss反馈回网络,模型输出使用Viterbi算法解码出标注结果;
(2.11)利用BERT模型设定Dilated CNN-CRF网络层数net、每层单元数batch、训练轮次epo、训练优化器optimizer和每次训练的数据长度data_len;
(2.12)判断是否训练,若训练则执行步骤(2.13),否则执行步骤(2.23);
(2.13)定义计数器count2,令count2=1,用于遍历训练集TrainA和TrainB(2.14)分别判断count2≤Expert_Num和count2≤Research_Num,若符合相对应的执行步骤(2.15),否则执行步骤(2.18);
(2.15)将所有的数据每一条独立封装成record的形式,并利用回调函数读取record的数据并组成batch;
(2.16)遍历训练集TrainA和TrainB,将其进行特征转换,定义estimator封装器,使用BERT模型的将每条数据转换为字的embedding;
(2.17)令count2=count2+1,执行步骤(2.14);
(2.18)将训练集TrainA和TrainB分别输入到步骤(2.7)-(2.10)的整个预测网络,其中,模型参数设置BERT中文模型路径,定义计数器flag,模型的准确度Accuracy;
(2.19)令flag初始值为1;
(2.20)经过训练周期利用验证集ValidA和ValidB进行验证,记录Accuracy值;
(2.21)若flag≤epo,则执行步骤(2.22),否则执行步骤(2.24);
(2.22)令flags=flags+1,执行步骤(2.23);
(2.23)结合Accuracy值并利用遗忘神经网络将误差反向传播回网络的功能来实现最优效果的参数获取,再循环执行步骤(2.21),得到最优值后执行步骤(2.24);
(2.24)选取Accuracy值最高的模型参数并保存模型ExpertModel和ResearchMode;
(2.25)训练完成并选取精确度Accuracy最高的模型,得到基于BERT-DilatedCNN-CRF的医疗领域专家和研究实体识别模型ExpertModel和ResearchMode。
进一步的,所述步骤(3)中得到关系抽取模型标注数据集RelationData的具体步骤如下:
(3.1)定义UnStruc_Data为国内医疗专家领域长文本预处理后的国内医疗专家领域非结构化数据集,满足UnStruc_Data={Sentence1,Sentence2,…,Sentencen,..,SentenceUnStruc_DataNum};
(3.2)定义Expert_Research为国内医疗专家领域非结构化数据集UnStruc_Data中每个句子对应的实体构成的数据集,Expert_Research={expert_research1,expert_research2,…,expert_researchn,…,expert_researchUnStruc_DataNum};
(3.3)定义计数器count3,令count3=1;
(3.4)若count3<UnStruc_DataNum,执行步骤(3.5),否则执行步骤(3.7);
(3.5)遍历步骤(3.1)中集合UnStruc_Data数据集,利用步骤(2)中的国内医疗专家领域专家实体识别模型ExpertModel和研究实体识别模型ResearchModel,识别Sentencecount3中的实体,将数据处理分别存入对应数据集Expert和Research中;
(3.6)令count3=count3+1,执行步骤(3.4);
(3.7)将UnStruc_Data分别与Expert和Research中的数据打包为一个个元组,得到两个数据集RawData1={[expert1,Sentence1],[expert2,Sentence2],…,[expertUnStruc_DataNum,SentenceUnStruc_DataNum]}和RawData2={[
research1,Sentence1],[research2,Sentence2],…,[researchn,Sentencen],…,[researchUnStruc_DataNum,SentenceUnStruc_DataNum]};
(3.8)定义Relation分别为数据集RawData1和RawData2中实体之间关系;
(3.9)根据数据实体关系的单一化,直接手动添加实体数据关系relation;
(3.10)定义预处理后的实体关系集合RelationData,将RawData1和RawD ata2数据集根据相同Sentencen并结合relation打包为一个个元组并两者整合,得到数据集RelationData={[expert1,research1,relation],…,[expert2,research2,relation],…,[expertUnStruc_DataNum,researchUnStruc_DataNum,relation];
(3.11)数据处理结束,得到关系抽取模型标注数据集RelationData;
(3.12)重复上述所有步骤得到医疗专家实体和医疗研究与其属性的其他关系数据集并加入RelationData中构成新的关系抽取模型标注数据集RelationData。
进一步的,所述步骤(4)中针对三元组集数据处理引入FP-growth置信度辅助余弦相似度算法实现专家组合推荐的具体步骤如下:
(4.1)通过对关系抽取模型标注数据集RelationData进行处理和标注,得出实体Item1、关系属性Relation和实体Item2
(4.2)定义三元组triplen=(Item1n,Relationn,Item2n),并构成三元组数据集Triples;Triples={[Item11,Relation1,Item21],..,[Item12,Relation2,Item22],…,[Item1n,Relationn,Item2n],..,[Item1triplenum,Relationtriplenum,Item2triplenum]};
(4.3)将数据集Triples根据相同Item1n和Item2n处理成以实体为单位的新数据集Triples_new,Triples_new={triple_new1,triple_new2,…,triple_newn,…,triple_newtriple_newnum};triple_newn=(Item1n,Relation12n,Item2n,Relation13n,Item3n,Relation14n,Item4n,Relation15n,Item5n);
(4.4)将Triples_new数据集中按8:10比例抽取部分特征数据集GT,GT={GT1,GT2,…,GTn,..,GTnum},子集GTn为研究实体对应的属性与triple_newn中元素相对应,即tgXn=ItemXn;
(4.5)GTn={tg1n,tg2n,tg3n,tg4n,tg5n},其中,tg1n,tg2n,tg3n,tg4n,tg5n分别为GTn研究的合作单位、合作项目、合作时间、合作对象、参考对象;
(4.6)定义G为合作研究项目,G={gt1,gt2,gt3,gt4,gt5},其中,gt1,gt2,gt3,gt4,gt5也分别为G项目的合作单位、合作项目、合作时间、合作对象、参考对象;
(4.7)将GTn数据集元素都转化成词向量的形式,一一对应构成行的数据集GTn_new,将合作项目GT也转化成词向量的形式,构成新的元素GT_new;
(4.8)定义计数变量count4,用来遍历GT_new,赋初值count4=1;
(4.9)定义simm表示合作研究项目G_new与研究项目Gt_new的相似度,simm构成相似度集Sim,赋初值Sim={};
(4.10)判断是否count4≤num若是跳到步骤(4.11)否则跳到步骤(4.13);
(4.11)将Sim={{1,sim1},{2,sim2},…,{n,simnum},..,{num,simH}}按相似度由高到低排序构成新的相似度值集合Sim_new;
(4.12)count4=count4+1跳到步骤(4.8);
(4.13)对合作项目已有专家逐个计算相似度值,并合并成总的数据集Simall,并取前top20构成数据集Sim_top;
(4.14)定义Forexpert为预选合作专家集,Forexpert一一对应Sim_top,Forexpert={pm1,pm2,…,pmn,…,p20};
(4.15)定义ExportCom为现有的研究合作G的医疗专家全组合集,ExportCom={Com1,Com2,…,Comx,…,Comnumber},Comx为单个项目的专家组合,Comx={exp1,exp2,…,expn,…,expnum};
(4.16)遍历专家组合集ExportCom,统计每个专家项集数Rn和对应支持度Hn,以及专家总数expnum,n为专家编号;
(4.17)设置相应阈值q和p,q为专家项集数数,p为专家项支持度,定义计数变量count5=1;
(4.18)依次从专家组合集ExportCom中抽取专家项;
(4.19)如果count5≤expnum则跳转到步骤(4.20),否则跳转到步骤(4.23);
(4.20)令count5=count5+1;
(4.20)如果Rn≤q且Hn≤p则跳转到步骤(4.21),否则跳转到步骤(4.22);
(4.21)符合条件的所有数据构成新的数据集ExportCom_new,调用FP-growth算法,生成FP树,跳转到步骤4.23;
(4.22)该专家为无效专家项,直接删除;
(4.23)令count5=count5+1,跳转到步骤(4.18);
(4.24)如果pmn∈ExportCom_new则跳转到步骤(4.26),否则跳转到步骤(4.25);
(4.25)该元素属于无效元素,直接删除;
(4.26)符合元素构成集合替代原ExportCom_new集合和新的集合元素pmn;
(4.27)遍历FP树,得到每个pmn对应条件基val,构成评估集合Valuation,Valuation={val1,val2,…,valnumber};
(4.28)选取Valuation评估集与Forexpert预选合作专家集综合评分最高的三个专家元素valtop1,valtop2,valtop3;
(4.29)Comtop1,Comtop2,Comtop3为医疗专家合作项目G的推荐组合。
进一步的,所述步骤(5)中的构建国内医疗专家知识图谱具体步骤如下:
(5.1)通过利用步骤(2)和步骤(3)得到的医疗专家领域专家和研究实体识别模型ExpertModel和ResearchModel,在医疗专家领域文本数据集中抽取抽取出专家实体Item1、关系Relation和研究实体Item2;
(5.2)定义三元组triple=(Item1,Relation,Item2);
(5.3)定义知识三元组数据集Triples,得到Triples={triple1,triple2,…,triplen},并重复操作得到不同关系的三元组,再组合构成完整得三元组Triples_new,n为数据集Triples_new中三元组总数;
(5.4)将Triples_new保存至csv文件,存入到Neo4j的import文件夹;
(5.5)使用Neo4j数据库语法导入,构建国内医疗专家领域知识图谱。
进一步的,所述步骤(6)中的用户通过WEB页面实现医疗专家知识图谱和专家合作推荐结果的查询访问具体步骤如下:
(6.1)开放Neo4j图数据库API和国内医疗专家关联挖掘系统API;
(6.2)创建线程池Thread Pool;
(6.3)判断线程池Thread Pool所有任务是否执行完毕;
(6.4)用户输入查询语句,包含专家姓名数据或医疗研究方向数据;
(6.5)子线程Child Thread获取任务处理;
(6.6)系统构造包含查询信息的Cypher查询语句,获取专家实体相关属性数据,通过关联挖掘系统提供的接口对查询所得的专家实体数据进行实体间关系维度扩展以及专家实体对应的推荐专家数据;
(6.7)将系统通过关联挖掘所得的实体数据集封装返还WEB应用程序;
(6.8)结束该子进程Child Thread;
(6.9)关闭线程池Thread Pool;
(6.10)WEB应用程序通过ECharts渲染专家实体数据和实体间关系数据,实现医疗专家知识图谱和专家合作推荐结果的查询访问。
本发明采用上述技术方案,具有以下有益效果:
本发明利用已有的医疗专家领域非结构化语料,采用遗忘神经网络模型训练来实现医疗专家领域文本信息的实体识别与属性抽取,从而构建三元组,该模型对其他领域也有一定适用价值,泛化能力较高,同时该方法引入FP-growth的置信度辅助余弦相似度算法实现专家的组合推荐,本方法有效提高模型的精确度。基于已构建的医疗专家领域知识图谱,可以实现专家图谱索引、医疗研究推荐、医疗人员合作组合推荐。
附图说明
图1为本发明的总体流程图;
图2为具体实施例中实体识别模型数据预处理方法的流程图;
图3为具体实施例中训练基于BERT-Dilated CNN-CRF的医疗专家领域实体识别模型方法的流程图;
图4为具体实施例中关系抽取模型数据预处理方法的流程图;
图5为具体实施例中引入FP-growth的置信度辅助余弦相似度算法实现专家组合推荐模型方法的流程图;
图6为具体实施例中构建医疗专家领域知识图谱方法的流程图;
图7为具体实施例中开放的知识图谱API,用户调用的流程图。
具体实施方式
下面结合工程国家标准的具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图1-7所示,本发明所述的一种用于推荐医疗专家的知识图谱构建方法,包括如下步骤:
步骤1:使用网络爬虫技术采集国内医疗专家领域实体、实体属性及语料,对医疗专家数据集进行预处理,得到专家实体识别模型标注数据集ExpertData和研究实体识别模型标注数据集ResearchData;
步骤1.1:选取中国知网上医疗专家研究发表的文献和各地区医疗网站上专家信息数据作为数据源;
步骤1.2:利用网络爬虫从结构化网页中获取国内医疗领域专家和研究的实体以及实体的属性作为结构化数据和国内医疗专家领域的长文本作为非结构化数据;
步骤1.3:根据现有医疗文本信息手动构建无效词汇表UnuseData;
步骤1.4:定义经过预处理后的结构化数据集为Struc_Data,Struc_Data={voc1,voc2,…,vocn,…,vocStruc_DataNum};
步骤1.5:对比无效词汇表UnuseData数据集,实现Struc_Data数据集的词汇过滤形成新的Struc_Data结构化数据集;
步骤1.6:对新数据集Struc_Data采用BIEO的序列标注方式,对文本的每个字进行标注,B表示实体开头,I表示实体词中对应字,E表示实体词汇结尾,O对应非实体内单字;
步骤1.7:定义计数器count1,令count1=1,用于遍历Struct_Data数据集应;
步骤1.8:若count1≤Struc_Data Num,执行步骤1.9,否则执行步骤1.11;
步骤1.9:对数据集Struc_Data中文本中的每个字构成Words数据集,“BIEO”序列标注法的标注结构构成标签数据集Labels,分别为Words={Word1,Word2,…,Wordn,…,WordWordsNum}和Labels={Label1,Label2,…,Labeln,…,LabelWordsNum};
步骤1.10:令count1=count1+1;
步骤1.11:定义序列标注预处理后的专家实体模型标注数据集为ExpertData
步骤1.12:将BIEO序列标注结果一一对应存储到专家实体数据集ExpertData中,ExpertData={[Word1,Label1],[Word2,Label2],…,[Wordn,Labeln],…,[WordWordsNum,LabelWordsNum]}和专家研究实体数据集ResearchData={[Word1,Label1],[Word2,Label2],…,[Wordn,Labeln],…,[WordWordsNum,LabelWordsNum]}。
步骤2:利用数据集ExpertData训练实体识别模型,得到基于BERT-Dilated CNN-CRF的国内医疗专家领域专家和研究实体识别模型ExpertModel和ResearchModel;
步骤2.1:根据实体识别模型得到的序列数据标注集ExpertData和ResearchData;
步骤2.2:对两个数据集进行随机抽取,得到训练集、测试集和验证集三个部分,分别定义为TrainA、TrainB,TestA、TestB,ValidA、ValidB;
步骤2.3:根据TrainA:ValidA:TestA=7:2:1的比例划分专家实体识别模型标注数据集ExpertData,TrainB:ValidB:TestB=8:1.5:0.5的比例划分专家研究实体识别模型标注数据集ResearchData;
步骤2.4:得到三个完全独立的数据集ExpertTrain={R1,R2,…,Rn…,RTrainNum}、ExpertValid={R1,R2,…Rn,…,RValidNum}和ExpertTest={R1,R2,…Rn,…,RTestNum,ResearchTrain={R1,R2,…,Rn…,RTrainNum}、ResearchValid={R1,R2,…Rn,…,RValidNum}和ResearchTest={R1,R2,…Rn,…,RTestNum};
步骤2.5:计算ExpertData和ResearchData数据集的训练集、测试集和验证集的具体数量;
步骤2.6:具体为,TrainA_Num=0.7Expert_Num,TrainB_Num=0.8Research_Num,ValidA_Num=0.2Expert_Num,ValidB_Num=0.15Research_Num,TestA_Num=0.1Expert_Num,TestB_Num=0.05Research_Num;
步骤2.7:建立Iterated Dilated CNN卷积层,每个元素对应一个characterwdc,每个文本对应一个一维的向量输入;
步骤2.8:通过Iterated Dilated CNN对输入文本skip掉所有dilationwidth中间的输入数据,再对膨胀后的新数据每一个字生成一个logits;
步骤2.9:经过一个隐含层输出到CRFLayer,并通过IDCNN计算出每个词的各标签概率;
步骤2.10:对CRF层引入序列的转移概率,最终计算出loss反馈回网络,模型输出使用Viterbi算法解码出标注结果;
步骤2.11:利用BERT模型设定Dilated CNN-CRF网络层数net、每层单元数batch、训练轮次epo、训练优化器optimizer和每次训练的数据长度data_len;
步骤2.12:判断是否训练,若训练则执行步骤2.13,否则执行步骤2.23;
步骤2.13:定义计数器count2,令count2=1,用于遍历训练集TrainA和TrainB
步骤2.14:分别判断count2≤Expert_Num和count2≤Research_Num,若符合相对应的执行步骤2.15,否则执行步骤2.18;
步骤2.15:将所有的数据每一条独立封装成record的形式,并利用回调函数读取record的数据并组成batch;
步骤2.16:遍历训练集TrainA和TrainB,将其进行特征转换,定义estimator封装器,使用BERT模型的将每条数据转换为字的embedding;
步骤2.17:令count2=count2+1,执行步骤2.14;
步骤2.18:将训练集TrainA和TrainB分别输入到步骤2.7-2.10的整个预测网络,其中,模型参数设置BERT中文模型路径,定义计数器flag,模型的准确度Accuracy;
步骤2.19:令flag初始值为1;
步骤2.20:经过训练周期利用验证集ValidA和ValidB进行验证,记录Accuracy值;
步骤2.21:若flag≤epo,则执行步骤2.22,否则执行步骤2.24;
步骤2.22:令flags=flags+1,执行步骤2.23;
步骤2.23:结合Accuracy值并利用遗忘神经网络将误差反向传播回网络的功能来实现最优效果的参数获取,再循环执行步骤2.21,得到最优值后执行步骤2.24;
步骤2.24:选取Accuracy值最高的模型参数并保存模型ExpertModel和ResearchMode;
步骤2.25:训练完成并选取精确度Accuracy最高的模型,得到基于BERT-DilatedCNN-CRF的医疗领域专家和研究实体识别模型ExpertModel和ResearchMode。
步骤3:对国内医疗专家领域关系集进行预处理,得到关系抽取模型标注数据集RelationData;
步骤3.1:定义UnStruc_Data为国内医疗专家领域长文本预处理后的国内医疗专家领域非结构化数据集,满足UnStruc_Data={Sentence1,Sentence2,…,Sentencen,..,SentenceUnStruc_DataNum};
步骤3.2:定义Expert_Research为国内医疗专家领域非结构化数据集UnStruc_Data中每个句子对应的实体构成的数据集,Expert_Research={
expert_research1,expert_research2,…,expert_researchUnStruc_DataNum};
步骤3.3:定义计数器count3,令count3=1;
步骤3.4:若count3<UnStruc_DataNum,执行步骤3.5,否则执行步骤3.7;
步骤3.5:遍历步骤3.1中集合UnStruc_Data的数据,利用步骤(2)中的国内医疗专家领域专家实体识别模型ExpertModel和研究实体识别模型ResearchModel,识别Sentencecount3中的实体,将数据处理分别存入对应数据集Expert和Research中;
步骤3.6:令count3=count3+1,执行步骤3.4;
步骤3.7:将UnStruc_Data分别与Expert和Research中的数据打包为一个个元组,得到两个数据集RawData1={[expert1,Sentence1],[expert2,Sentence2],…,[expertUnStruc_DataNum,SentenceUnStruc_DataNum]}和RawData2={[research1,Sentence1],[research2,Sentence2],…,[researchn,Sentencen],…,[researchUnStruc_DataNum,SentenceUnStruc_DataNum]};
步骤3.8:定义Relation分别为数据集RawData1和RawData2中实体之间关系;
步骤3.9:根据数据实体关系的单一化,直接手动添加实体数据关系Relation;
步骤3.10:定义预处理后的实体关系集合RelationData,将RawData1和RawData2数据集根据相同Sentencen并结合Relation打包为一个个元组并两者整合,得到数据集RelationData={[expert1,research1,relation],…,[expert2,research2,relation],…,[expertUnStruc_DataNum,researchUnStruc_DataNum,relation];
步骤3.11:数据处理结束,得到关系抽取模型标注数据集RelationData;
步骤3.12:重复上述所有步骤得到医疗专家实体和医疗研究与其属性的其他关系数据集并加入RelationData中构成新的关系抽取模型标注数据集RelationData。
步骤4:重复RelationData数据集构建操作,形成新的完整RelationData数据集并整合对应的三元组Triples和按实体划分新三元组Triples_new,针对三元组集数据处理引入FP-growth置信度辅助余弦相似度算法实现专家组合推荐;
步骤4.1:通过对关系抽取模型标注数据集RelationData进行处理和标注,得出实体Item1、关系属性relation和实体Item2;
步骤4.2:定义三元组triplen=(Item1n,relationn,Item2n),并构成三元组数据集Triples;Triples={[Item11,relation1,Item21],..,[Item12,relation2,Item22],…,[Item1n,relationn,Item2n],..,[Item1triplenum,relationtriplenum,Item2triplenum]};
步骤4.3:将数据集Triples根据相同Item1n和Item2n处理成以实体为单位的新数据集Triples_new,Triples_new={triple_new1,triple_new2,…,triple_newn,…,triple_new triple_newnum};triple_newn=(Item1n,Relation12n,Item2n,Relation13n,Item3n,Relation14n,Item4n,Relation15n,Item5n);
步骤4.4:将Triples_new数据集中按8:10比例抽取部分特征数据集GT,GT={GT1,GT2,…,GTn,..,GTnum},子集GTn为研究实体对应的属性与triple_newn中元素相对应,即tgXn=ItemXn;
步骤4.5:GTn={tg1n,tg2n,tg3n,tg4n,tg5n},其中,tg1n,tg2n,tg3n,tg4n,tg5n分别为GTn研究的合作单位、合作项目、合作时间、合作对象、参考对象;
步骤4.6:定义G为合作研究项目,G={gt1,gt2,gt3,gt4,gt5},其中,gt1,gt2,gt3,gt4,gt5也分别为G项目的合作单位、合作项目、合作时间、合作对象、参考对象;
步骤4.7:将GTn数据集元素都转化成词向量的形式,一一对应构成行的数据集GTn_new,将合作项目GT也转化成词向量的形式,构成新的元素GT_new;
步骤4.8:定义计数变量count4,用来遍历GT_new,赋初值count4=1;
步骤4.9:定义simm表示合作研究项目G_new与研究项目Gt_new的相似度,simm构成相似度集Sim,赋初值Sim={};
步骤4.10:判断是否count4≤num若是跳到步骤4.11否则跳到步骤4.13;
步骤4.11:将Sim={{1,sim1},{2,sim2},…,{n,simnum},..,{num,simH}}按相似度由高到低排序构成新的相似度值集合Sim_new;
步骤4.12:count4=count4+1跳到步骤4.8;
步骤4.13:对合作项目已有专家逐个计算相似度值,并合并成总的数据集Simall,并取前top20构成数据集Sim_top;
步骤4.14:定义Forexpert为预选合作专家集,Forexpert一一对应Sim_top,Forexpert={pm1,pm2,…,pmn,…,p20};
步骤4.15:定义ExportCom为现有的研究合作G的医疗专家全组合集,ExportCom={Com1,Com2,…,Comx,…,Comnumber},Comx为单个项目的专家组合,Comx={exp1,exp2,…,expn,…,expnum};
步骤4.16:遍历专家组合集ExportCom,统计每个专家项集数Rn和对应支持度Hn,以及专家总数expnum,n为专家编号;
步骤4.17:设置相应阈值q和p,q为专家项集数数,p为专家项支持度,定义计数变量count5=1;
步骤4.18:依次从专家组合集ExportCom中抽取专家项;
步骤4.19:如果count5≤expnum则跳转到步骤4.20,否则跳转到步骤4.23;
步骤4.20:如果Rn≤q且Hn≤p则跳转到步骤4.21,否则跳转到步骤4.22;
步骤4.21:符合条件的所有数据构成新的数据集ExportCom_new,调用FP-growth算法,生成FP树,跳转到步骤4.23;
步骤4.22:该专家项为无效专家项,直接删除;
步骤4.23:令count5=count5+1,跳转到步骤4.18;
步骤4.24:如果pmn∈ExportCom_new则跳转到步骤4.26,否则跳转到步骤4.25;
步骤4.25:该元素属于无效元素,直接删除;
步骤4.26:符合元素构成集合替代原ExportCom_new集合和新的集合元素pmn;
步骤4.27:遍历FP树,得到每个pmn对应条件基val,构成评估集合Valuation,Valuation={val1,val2,…,valnumber};
步骤4.28:选取Valuation评估集与Forexpert预选合作专家集综合评分最高的三个专家元素valtop1,valtop2,valtop3;
步骤4.29:Comtop1,Comtop2,Comtop3为医疗专家合作项目G的推荐组合。
步骤5:根据三元组数据,构建国内医疗专家知识图谱;
步骤5.1:通过利用步骤(2)和步骤(3)得到的医疗专家领域专家和研究实体识别模型ExpertModel和ResearchModel,在医疗专家领域文本数据集中抽取抽取出专家实体Item1、关系Relation和研究实体Item2;
步骤5.2:定义三元组triple=(Item1,Relationship,Item2);
步骤5.3:定义知识三元组数据集Triples,得到Triples={triple1,triple2,…,triplen},并重复操作得到不同关系的三元组,再组合构成完整得三元组Triples_new,n为数据集Triples_new中三元组总数;
步骤5.4:将Triples_new保存至csv文件,存入到Neo4j的import文件夹;
步骤5.5:使用Neo4j数据库语法导入,构建国内医疗专家领域知识图谱。
步骤6:开放Neo4j图数据库接口API和关联挖掘系统接口API,用户通过WEB页面实现医疗专家知识图谱和专家合作推荐结果的查询访问;
步骤6.1:开放Neo4j图数据库API和国内医疗专家关联挖掘系统API;
步骤6.2:创建线程池Thread Pool;
步骤6.3:判断线程池Thread Pool所有任务是否执行完毕;
步骤6.4:用户输入查询语句,包含专家姓名数据或医疗研究方向数据;
步骤6.5:子线程Child Thread获取任务处理;
步骤6.6:系统构造包含查询信息的Cypher查询语句,获取专家实体相关属性数据,通过关联挖掘系统提供的接口对查询所得的专家实体数据进行实体间关系维度扩展以及专家实体对应的推荐专家数据;
步骤6.7:将系统通过关联挖掘所得的实体数据集封装返还WEB应用程序;
步骤6.8:结束该子进程Child Thread;
步骤6.9:关闭线程池Thread Pool;
步骤6.10:WEB应用程序通过ECharts渲染专家实体数据和实体间关系数据,实现医疗专家知识图谱和专家合作推荐结果的查询访问。
为了更好的说明本方法的有效性,通过对67849条医疗专家领域文本数据进行处理,通过数据预处理训练基于BERT-Dilated CNN-CRF的实体识别模型。在测试集上,实体抽取模型的识别准确率为96%,专家组合推荐的准确度也达到了了75%,实验结果对比如表1所示。
表1实验结果对比表
本发明可直接通过系统通过实体抽取模型和关系抽取模型实现在非结构化文本数据中抽取出实体和关系,从而有效建立三元组,构建对应领域的知识图谱。
以上所述仅为本发明的实施例子而已,并不用于限制本发明。凡在本发明的原则之内,所作的等同替换,均应半酣在本发明的保护范围之内。本发明未作详细阐述的内容属于本专业领域技术人员公知的已有技术。
本发明创造性的提出了一种用于推荐医疗专家的知识图谱构建方法及系统,得到医疗专家领域实体识别模型。再通过引入置信度并调整阈值结合余弦相似度算法,经多次实验达到最佳阈值的专家组合推荐。
本发明提出的一种用于推荐医疗专家的知识图谱构建方法及系统普遍适用于医疗专家领域文本数据实体抽取和专家组合推荐。
上述方法所涉及的变量说明如下表2-表8所示:
表2全局变量表
变量定义 | 变量名称 |
ExpertData | 医疗专家实体识别模型标注数据集 |
ExpertModel | 医疗专家实体识别模型 |
ResearchData | 医疗研究实体识别模型标注数据集 |
ResearchModel | 医疗研究实体识别模型 |
RelationData | 关系抽取模型标注数据集 |
RelationModel | 医疗专家领域关系抽取模型 |
Expert_Num | 实体识别模型标注数据集Expert Data的数据总数 |
Research_Num | 实体识别模型标注数据集Research Data的数据总数 |
RelationDataNum | 实体关系集合中数据的个数 |
表3步骤1变量表
表4步骤2变量表
/>
表5步骤3变量表
变量定义 | 变量名称 |
UnStruc_Data | 预处理后的建筑领域非结构化数据集 |
UnStruc_DataNum | 非结构化语料数据的个数 |
Sentence | 非结构化数据 |
Expert_Research | 数据集UnStruc_Data中每个句子对应的实体构成的数据集 |
expert_research | 实体 |
count3 | 计数器,用于遍历数据集UnStruc_Data |
Relation | 实体属性数据集 |
RawData1 | 抽取非结构化数据中的医疗专家实体构成的过程数据集 |
RawData2 | 抽取非结构化数据中的医疗研究实体构成的过程数据集 |
relation | 医疗专家实体间的关系属性 |
expertn | 第n个医疗专家实体 |
researchn | 第n个医疗研究实体 |
Sentencen | 第n个非结构化数据 |
relationn | 第n个关系属性 |
表6步骤4变量表
/>
/>
表7步骤5变量表
变量定义 | 变量名称 |
Item1 | 实体1 |
Relationship | 属性 |
Item2 | 实体2 |
triple | 三元组 |
Triples | 知识三元组数据集 |
Triples_new | 融合专家推荐的新知识三元组数据集 |
表8步骤6变量表
变量定义 | 变量名称 |
ThreadPool | 线程池 |
ChildThread | 子线程 |
Claims (5)
1.一种用于推荐医疗专家的知识图谱构建方法,其特征在于,具体步骤如下:
(1)使用网络爬虫技术采集国内医疗专家领域实体、实体属性及语料,对医疗专家数据集进行预处理,得到专家实体识别模型标注数据集ExpertData和研究实体识别模型标注数据集ResearchData;
(2) 利用专家实体识别模型标注数据集ExpertData和研究实体识别模型标注数据集ResearchData训练实体识别模型,得到基于BERT-Dilated CNN-CRF的国内医疗专家领域专家和研究实体识别模型ExpertModel和ResearchModel;
具体步骤如下:
(2.1)获取专家实体识别模型标注数据集ExpertData和研究实体识别模型标注数据集ResearchData;
(2.2) 对两个数据集进行随机抽取,得到训练集、测试集和验证集三个部分,分别定义为TrainA、TrainB,TestA、TestB,ValidA、ValidB;
(2.3) 根据TrainA:ValidA:TestA=7:2:1的比例划分专家实体识别模型标注数据集ExpertData,TrainB:ValidB:TestB=8:1.5:0.5的比例划分专家研究实体识别模型标注数据集ResearchData;
(2.4)各自得到三个完全独立的数据集TrainA={RTA1,RTA2,…,RTAn…,RTATrainA_Num}、ValidA ={RVA1,RVA2,…RVAn,…,RVAValidA_Num}和TestA ={REA1,REA2,…REAn,…,RTestA_Num},TrainB ={RTB1,RTB2,…,RTBn…,RTBTrainB_Num}、ValidB ={RVB1,RVB2,…RVBn,…,RVBValidB_Num}和TestB ={REB1,REB2,…REBn,…,REBTestB_Num};
(2.5) 计算ExpertData和ResearchData数据集的训练集、测试集和验证集具体的数量;
(2.6) 具体为,TrainA_Num=0.7Expert_Num,TrainB_Num=0.8Research_Num,ValidA_Num=0.2Expert_Num,ValidB_Num=0.15Research_Num,TestA_Num=0.1 Expert_Num,TestB_Num=0.05Research_Num;其中,Expert_Num表示专家实体识别模型标注数据集ExpertData的数据总数,Research_Num表示专家研究实体识别模型标注数据集ResearchData的数据总数;
(2.7) 建立Iterated Dilated CNN卷积层,每个元素对应一个characterwdc,每个文本对应一个一维的向量输入;
(2.8) 通过Iterated Dilated CNN对输入文本skip掉所有dilation width中间的输入数据,再对膨胀后的新数据每一个字生成一个logits;
(2.9) 经过一个隐含层输出到CRFLayer,并通过IDCNN计算出每个词的各标签概率;
(2.10) 对CRF层引入序列的转移概率,最终计算出loss值反馈回网络,模型输出使用Viterbi算法解码出标注结果;
(2.11) 利用BERT模型设定Dilated CNN-CRF网络层数net、每层单元数batch、训练轮次epo、训练优化器optimizer和每次训练的数据长度data_len;
(2.12) 判断是否训练,若训练则执行步骤(2.13),否则执行步骤(2.23);
(2.13) 定义计数器count2,令count2 =1,用于遍历训练集TrainA和TrainB;
(2.14) 分别判断count2≤Expert_Num和count2≤Research_Num,若符合相对应的执行步骤(2.15),否则执行步骤(2.18);
(2.15) 将所有的数据每一条独立封装成record的形式,并利用回调函数读取record的数据并组成batch;
(2.16) 遍历训练集TrainA和TrainB,将其进行特征转换,定义estimator封装器,使用BERT模型将每条数据转换为字的embedding;
(2.17) 令count2=count2+1,执行步骤(2.14);
(2.18) 将测试集TestA和TestB分别输入到整个预测网络,其中,模型参数设置BERT中文模型路径,定义计数器flag,模型的准确度Accuracy;
(2.19) 令flag初始值为1;
(2.20) 经过训练周期利用验证集 ValidA和ValidB进行验证,记录Accuracy值;
(2.21) 若flag≤epo,则执行步骤(2.22),否则执行步骤(2.24);
(2.22) 令flags=flags+1,执行步骤(2.23);
(2.23) 结合Accuracy值并利用遗忘神经网络将误差反向传播回网络的功能来实现最优效果的参数获取,再循环执行步骤(2.21),得到最优值后执行步骤(2.24);
(2.24)选取Accuracy值最高的模型参数并保存模型ExpertModel和ResearchModel;
(2.25) 训练完成并选取精确度Accuracy最高的模型,得到基于BERT-Dilated CNN-CRF的医疗领域专家和研究实体识别模型ExpertModel和ResearchModel;
(3) 对国内医疗专家领域关系集进行预处理,得到关系抽取模型标注数据集RelationData;
(4) 重复RelationData数据集构建操作,形成新的完整RelationData数据集并整合对应的三元组Triples和按实体划分新三元组Triples_new,针对三元组集数据处理引入FP-growth置信度辅助余弦相似度算法实现专家组合推荐;针对三元组集数据处理引入FP-growth置信度辅助余弦相似度算法实现专家组合推荐的具体步骤如下:
(4.1) 通过对关系抽取模型标注数据集RelationData进行处理和标注,得出实体Item1、关系属性relation和实体Item2;
(4.2) 定义三元组triplen=(Item1n,relationn,Item2n),并构成三元组数据集Triples;Triples={[Item11,relation1,Item21],..,[Item12,relation2,Item22],…,[Item1n,relationn,Item2n],..,
[Item1triplenum,relationtriplenum,Item2triplenum]};
(4.3) 将数据集Triples根据相同Item1n和Item2n处理成以实体为单位的新数据集Triples_new,Triples_new={triple_new1,triple_new2,…,triple_newn,…,triple_newtriple_newnum};triple_newn=(Item1n,relation12n,Item2n,relation13n,Item3n,relation14n,Item4n,relation15n,Item5n);
(4.4) 将Triples_new数据集中按8:10比例抽取部分特征数据集GT,GT={GT1,GT2,…,GTn,..,GTnum},子集GTn为研究实体对应的属性与triple_newn中元素相对应;
(4.5) GTn={tg1n,tg2n,tg3n,tg4n,tg5n},其中,tg1n,tg2n,tg3n,tg4n,tg5n分别为已合作项目GTn研究的合作单位、合作项目、合作时间、合作对象、参考对象;
(4.6) 定义G为待合作研究项目,G={gt1,gt2,gt3,gt4,gt5},其中,gt1,gt2,gt3,gt4,gt5也分别为G项目的合作单位、合作项目、合作时间、合作对象、参考对象;
(4.7) 将已合作项目GTn数据集元素都转化成词向量的形式,一一对应构成行的数据集GTn_new,将待合作研究项目G也转化成词向量的形式,构成新的元素G_new;
(4.8) 定义计数变量count4,用来遍历G_new,赋初值count4=1;
(4.9) 定义simm表示待合作研究项目G_new与已合作项目GTn_new的相似度,simm构成相似度集Sim,赋初值Sim={};
(4.10) 判断是否count4≤num,若是跳到步骤(4.11),否则跳到步骤(4.13);
(4.11) 将Sim={{1,sim1},{2,sim2},…, {n,simnum},..,{num,simH}}按相似度由高到低排序构成新的相似度值集合Sim_new;
(4.12) count4=count4+1跳到步骤(4.10);
(4.13) 对合作项目已有专家逐个计算相似度值,并合并成总的数据集Simall,并取前top20构成数据集Sim_top;
(4.14) 定义Forexpert为预选合作专家集,Forexpert一一对应Sim_top,Forexpert={pm1,pm2,…,pmn,…,pm20};
(4.15) 定义ExportCom为现有的医疗专家全组合集,ExportCom={Com1,Com2,…,Comx,…,Comnumber}, Comx为单个项目的专家组合,Comx={exp1,exp2,…,expn,…,expnum};
(4.16) 遍历专家组合集ExportCom,统计每个专家项集数Rn和对应支持度Hn,以及专家总数expnum,n为专家编号;
(4.17) 设置相应阈值q和p,q为专家项集数,p为专家项支持度,定义计数变量count5=1;
(4.18) 依次从专家组合集ExportCom中抽取专家项;
(4.19) 如果count5≤expnum则跳转到步骤(4.20),否则跳转到步骤(4.24);
(4.20) 如果Rn≤q且Hn≥p则跳转到步骤(4.21),否则跳转到步骤(4.22);
(4.21) 符合条件的所有数据构成新的数据集ExportCom_new,调用FP-growth算法,生成FP树,跳转到步骤(4.23);
(4.22) 该专家为无效专家项,直接删除;
(4.23) 令count5=count5+1,跳转到步骤(4.19);
(4.24) 如果pmn∈ExportCom_new则跳转到步骤(4.26),否则跳转到步骤(4.25);
(4.25) 该元素属于无效元素,直接删除;
(4.26) 符合元素构成集合替代原ExportCom_new集合和集合元素pmn;
(4.27) 遍历FP树,得到每个pmn对应条件模式基val,构成评估集合Valuation,Valuation={val1,val2,…,valnumber};
(4.28) 选取Valuation评估集与Forexpert预选合作专家集综合评分最高的三个专家元素valtop1,valtop2,valtop3;
(4.29) valtop1,valtop2,valtop3为医疗专家待合作项目G的推荐组合;
(5) 根据三元组数据,构建国内医疗专家知识图谱;
(6) 开放Neo4j图数据库接口API和关联挖掘系统接口API,用户通过WEB页面实现医疗专家知识图谱和专家合作推荐结果的查询访问。
2.根据权利要求1所述的一种用于推荐医疗专家的知识图谱构建方法,其特征在于,所述步骤(1)中得到专家实体识别模型标注数据集ExpertData和研究实体识别模型标注数据集ResearchData的具体步骤如下:
(1.1)选取中国知网上医疗专家研究发表的文献和各地区医疗网站上专家信息数据作为数据源;
(1.2) 利用网络爬虫从结构化网页中获取国内医疗领域专家和研究的实体以及实体的属性作为结构化数据和国内医疗专家领域的长文本作为非结构化数据;
(1.3) 根据现有医疗文本信息手动构建无效词汇表UnuseData;
(1.4) 定义经过预处理后的结构化数据集为Struc_Data,Struc_Data={voc1,voc2,…,vocn,…,vocStruc_DataNum};
(1.5) 对比无效词汇表UnuseData数据集,实现Struc_Data数据集的词汇过滤形成新的Struc_Data结构化数据集;
(1.6) 对新数据集Struc_Data采用BIEO的序列标注方式,对实体的每个字进行标注,B表示实体开头,I表示实体词中对应字,E表示实体词汇结尾,O对应非实体内单字;
(1.7) 定义计数器count1,令count1=1,用于遍历Struct_Data数据集;
(1.8) 若count1≤Struc_DataNum,执行步骤(1.9),否则执行步骤(1.11);
(1.9) 对数据集Struc_Data中实体中的每个字构成Words数据集,BIEO序列标注法的标注结构构成标签数据集Labels,分别为Words={Word1,Word2,…,Wordn,…,WordWordsNum}和Labels ={Label1,Label2,…,Labeln,…,LabelWordsNum};
(1.10) count1=count1+1;
(1.11) 定义序列标注预处理后的专家实体模型标注数据集为ExpertData;
(1.12) 将BIEO序列标注结果一一对应存储到专家实体数据集ExpertData中,ExpertData={[Word1,Label1],[Word2,Label2],…,[Wordn,Labeln],…, [WordWordsNum,LabelWordsNum]}和专家研究实体数据集ResearchData={[Word1,Label1], [Word2,Label2],…,[Wordn,Labeln],…,[WordWordsNum,LabelWordsNum]}。
3.根据权利要求1所述的一种用于推荐医疗专家的知识图谱构建方法,其特征在于,所述步骤(3)中得到关系抽取模型标注数据集RelationData的具体步骤如下:
(3.1) 定义UnStruc_Data为国内医疗专家领域长文本预处理后的国内医疗专家领域非结构化数据集,满足UnStruc_Data={Sentence1,Sentence2,…, Sentencen,..,SentenceUnStruc_DataNum};
(3.2) 定义Expert_Research为国内医疗专家领域非结构化数据集UnStruc_Data中每个句子对应的实体构成的数据集,Expert_Research={expert_research1,expert_research2,…,expert_researchn,…,
expert_researchUnStruc_DataNum};
(3.3) 定义计数器count3,令count3 =1;
(3.4) 若count3<UnStruc_DataNum,执行步骤(3.5),否则执行步骤(3.7);
(3.5) 遍历步骤(3.1)中集合UnStruc_Data数据集, 利用步骤(2)中的国内医疗专家领域专家实体识别模型ExpertModel和研究实体识别模型ResearchModel,识别Sentencecount3中的实体,将数据处理分别存入对应数据集Expert和Research中;
(3.6) 令count3=count3+1,执行步骤(3.4);
(3.7) 将UnStruc_Data分别与Expert和Research中的数据打包为一个个元组,得到两个数据集RawData1={[expert1,Sentence1], [expert2,Sentence2],…,[expertUnStruc_DataNum,SentenceUnStruc_DataNum]}和RawData2={[research1,Sentence1],[research2,Sentence2],…,[researchn,Sentencen],…,
[researchUnStruc_DataNum,SentenceUnStruc_DataNum]};
(3.8) 定义Relation分别为数据集RawData1和RawData2中实体之间关系;
(3.9) 根据数据实体关系的单一化,直接手动添加实体数据关系Relation;
(3.10) 定义预处理后的实体关系集合RelationData,将RawData1和RawData2数据集根据相同Sentencen并结合Relation打包为一个个元组并两者整合,得到数据集RelationData={[expert1,research1, Relation],…,[expert2,research2,Relation],…,[expertUnStruc_DataNum,researchUnStruc_DataNum,Relation];
(3.11) 数据处理结束,得到关系抽取模型标注数据集RelationData;
(3.12) 重复上述所有步骤得到医疗专家实体和医疗研究与其属性的其他关系数据集并加入RelationData中构成新的关系抽取模型标注数据集RelationData。
4.根据权利要求1所述的一种用于推荐医疗专家的知识图谱构建方法,其特征在于,所述步骤(5)中的构建国内医疗专家知识图谱具体步骤如下:
(5.1) 通过利用步骤(2)和步骤(3)得到的医疗专家领域专家和研究实体识别模型ExpertModel和ResearchModel,在医疗专家领域文本数据集中抽取出专家实体Item1、关系Relation和研究实体Item2;
(5.2) 定义三元组triple=(Item1,Relation,Item2);
(5.3) 定义知识三元组数据集Triples,得到Triples={triple1,triple2,…,triplen},并重复操作得到不同关系的三元组,再组合构成完整得三元组Triples_new,n为数据集Triples_new中三元组总数;
(5.4) 将Triples_new保存至csv文件,存入到Neo4j的import文件夹;
(5.5) 使用Neo4j数据库语法导入,构建国内医疗专家领域知识图谱。
5.根据权利要求1所述的一种用于推荐医疗专家的知识图谱构建方法,其特征在于,所述步骤(6)中的用户通过WEB页面实现医疗专家知识图谱和专家合作推荐结果的查询访问具体步骤如下:
(6.1) 开放Neo4j 图数据库API和国内医疗专家关联挖掘系统API;
(6.2) 创建线程池Thread Pool;
(6.3) 判断线程池Thread Pool所有任务是否执行完毕;
(6.4) 用户输入查询语句,包含专家姓名数据;
(6.5) 子线程Child Thread获取任务处理;
(6.6) 系统构造包含查询信息的Cypher查询语句,获取专家实体相关属性数据,通过关联挖掘系统提供的接口对查询所得的专家实体数据进行实体间关系维度扩展以及进行推荐专家实体对应的其他专家;
(6.7) 将系统通过关联挖掘所得的实体数据集封装返还WEB应用程序;
(6.8) 结束该子线程Child Thread;
(6.9) 关闭线程池Thread Pool;
(6.10) WEB应用程序通过ECharts渲染专家实体数据和实体间关系数据,实现医疗专家知识图谱和专家合作推荐结果的查询访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010794152.9A CN112100394B (zh) | 2020-08-10 | 2020-08-10 | 一种用于推荐医疗专家的知识图谱构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010794152.9A CN112100394B (zh) | 2020-08-10 | 2020-08-10 | 一种用于推荐医疗专家的知识图谱构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100394A CN112100394A (zh) | 2020-12-18 |
CN112100394B true CN112100394B (zh) | 2023-07-21 |
Family
ID=73752786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010794152.9A Active CN112100394B (zh) | 2020-08-10 | 2020-08-10 | 一种用于推荐医疗专家的知识图谱构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100394B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113221547B (zh) * | 2021-01-21 | 2022-05-03 | 重庆邮电大学 | 基于信息抽取和知识图谱的试题推荐方法 |
WO2022198625A1 (zh) * | 2021-03-26 | 2022-09-29 | 深圳华大基因股份有限公司 | 变异文献解读知识库的构建方法、解读方法及电子设备 |
CN113191497B (zh) * | 2021-05-28 | 2024-04-23 | 国家电网有限公司 | 一种面向变电站踏勘选址的知识图谱构建方法和系统 |
CN113343666B (zh) * | 2021-06-29 | 2023-07-14 | 深圳前海微众银行股份有限公司 | 评分的置信度的确定方法、装置、设备及存储介质 |
CN114398464B (zh) * | 2021-12-28 | 2023-01-24 | 北方工业大学 | 一种基于知识图谱的研讨数据展示方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7720720B1 (en) * | 2004-08-05 | 2010-05-18 | Versata Development Group, Inc. | System and method for generating effective recommendations |
CN106897370A (zh) * | 2017-01-18 | 2017-06-27 | 淮阴工学院 | 一种基于皮尔逊相似度和FP‑Growth的图审专家推荐方法 |
CN108009897A (zh) * | 2017-12-25 | 2018-05-08 | 北京中关村科金技术有限公司 | 一种商品的实时推荐方法、系统及可读存储介质 |
CN109062961A (zh) * | 2018-06-27 | 2018-12-21 | 淮阴工学院 | 一种基于知识图谱的专家组合推荐方法 |
CN109614507A (zh) * | 2018-11-22 | 2019-04-12 | 浙江大学 | 一种基于频繁项挖掘的遥感图像推荐装置 |
CN110287334A (zh) * | 2019-06-13 | 2019-09-27 | 淮阴工学院 | 一种基于实体识别和属性抽取模型的学校领域知识图谱构建方法 |
-
2020
- 2020-08-10 CN CN202010794152.9A patent/CN112100394B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7720720B1 (en) * | 2004-08-05 | 2010-05-18 | Versata Development Group, Inc. | System and method for generating effective recommendations |
CN106897370A (zh) * | 2017-01-18 | 2017-06-27 | 淮阴工学院 | 一种基于皮尔逊相似度和FP‑Growth的图审专家推荐方法 |
CN108009897A (zh) * | 2017-12-25 | 2018-05-08 | 北京中关村科金技术有限公司 | 一种商品的实时推荐方法、系统及可读存储介质 |
CN109062961A (zh) * | 2018-06-27 | 2018-12-21 | 淮阴工学院 | 一种基于知识图谱的专家组合推荐方法 |
CN109614507A (zh) * | 2018-11-22 | 2019-04-12 | 浙江大学 | 一种基于频繁项挖掘的遥感图像推荐装置 |
CN110287334A (zh) * | 2019-06-13 | 2019-09-27 | 淮阴工学院 | 一种基于实体识别和属性抽取模型的学校领域知识图谱构建方法 |
Non-Patent Citations (5)
Title |
---|
An expert recommendation algorithm based on Pearson correlation coefficient and FP-growth;Feng W等;Cluster Computing;第22卷;7401–7412 * |
ntelligent Graph Review System Based on Knowledge Map;L. Zhu 等;2019 18th International Symposium on Distributed Computing and Applications for Business Engineering and Science (DCABES);100-103 * |
个性化推荐系统中的一种基于FP—growth的改进算法;刘建东 等;计算机光盘软件与应用;76-77 * |
关联规则在移动电子商务推荐系统中的应用;张剑凯;齐金平;;信息技术与信息化(第05期);115-117 * |
融合知识图谱与深度学习的疾病诊断方法研究;董丽丽;程炯;张翔;叶娜;;计算机科学与探索(第05期);99-108 * |
Also Published As
Publication number | Publication date |
---|---|
CN112100394A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112100394B (zh) | 一种用于推荐医疗专家的知识图谱构建方法 | |
CN110287334B (zh) | 一种基于实体识别和属性抽取模型的学校领域知识图谱构建方法 | |
CN106874378B (zh) | 基于规则模型的实体抽取与关系挖掘构建知识图谱的方法 | |
CN110633409B (zh) | 一种融合规则与深度学习的汽车新闻事件抽取方法 | |
JP7468929B2 (ja) | 地理知識取得方法 | |
CN111813950B (zh) | 一种基于神经网络自适应寻优调参的建筑领域知识图谱构建方法 | |
CN109255031A (zh) | 基于知识图谱的数据处理方法 | |
CN110990590A (zh) | 一种基于强化学习和迁移学习的动态金融知识图谱构建方法 | |
CN105378731A (zh) | 从被回答问题关联语料库/语料值 | |
CN105404674B (zh) | 一种知识依赖的网页信息抽取方法 | |
CN113761893B (zh) | 一种基于模式预训练的关系抽取方法 | |
CN105045875A (zh) | 个性化信息检索方法及装置 | |
CN112101029B (zh) | 一种基于bert模型的高校导师推荐管理方法 | |
CN108984775A (zh) | 一种基于商品评论的舆情监控方法及系统 | |
Ji et al. | Tag tree template for Web information and schema extraction | |
CN106407113A (zh) | 一种基于Stack Overflow和commit库的bug定位方法 | |
CN111680131B (zh) | 基于语义的文档聚类方法、系统及计算机设备 | |
CN111191099B (zh) | 一种基于社交媒体的用户活动类型识别方法 | |
CN103440315B (zh) | 一种基于主题的Web页面清洗方法 | |
CN103559199A (zh) | 网页信息抽取方法和装置 | |
Duan et al. | Research on the service mode of the university library based on data mining | |
Chu et al. | Automatic data extraction of websites using data path matching and alignment | |
CN112667819A (zh) | 一种实体描述推理知识库构建与推理证据量化信息获取方法和装置 | |
CN112100323B (zh) | 一种基于表示学习的隐藏关联挖掘方法 | |
Wang et al. | Ssar-gnn: Self-supervised artist recommendation with graph neural networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20201218 Assignee: Fanyun software (Nanjing) Co.,Ltd. Assignor: HUAIYIN INSTITUTE OF TECHNOLOGY Contract record no.: X2023980052895 Denomination of invention: A knowledge graph construction method for recommending medical experts Granted publication date: 20230721 License type: Common License Record date: 20231219 |