领域知识图谱的医生推荐系统:利用 BERT+CRF+BiLSTM 的医疗实体识别,建立医学知识图谱,建立知识问答系统
领域知识图谱的医生推荐系统:利用 BERT+CRF+BiLSTM 的医疗实体识别,建立医学知识图谱,建立知识问答系统
本项目主要实现了疾病自诊和医生推荐两个功能并构建了医生服务指标评价体系。疾病自诊主要通过利用 BERT+CRF+BiLSTM 的医疗实体识别, 建立医学知识图谱,从而实现基于患者问诊文本的疾病初诊。这个功能帮助患者初步了解自身的疾病情况并为下一步与医生的交流提供支持。第二个功能是医生推荐。本平台采用基于 Jacard 距离的 Minhash 和 minhashLSHForest 算法来进行推荐,匹配患者的咨询文本和医生的历史问诊信息,从而为患者推荐最适合的医生。最后我们使用 django 框架进行项目发布。
1.项目框架
2.数据采集
本项目除了使用公开的医疗数据集外,还采集了中国领先医疗平台的数据集。
spiders
模块提供了数据采集的信息。
39crawler 用于获取 39 健康网的数据,hdf 用于获取好大夫网的数据(scrapy)。
运行程序在 dist 文件夹中,双击 spider_run.exe 即可运行爬虫程序。
爬取指定的疾病信息,在 disease.txt 加入科室名称(拼音)或者疾病名称(拼音),每一个科室或者科室占据单独一行。
无论你在 disease.txt 文件中添加多少行,爬虫只会爬取第一行对应的科室或疾病,结果将在程序运行完成后,输出为 doctor.csv,disease.csv。
如需爬取第二个疾病,请将第一行科室或者疾病删去,重新运行程序。
3.疾病自诊
在疾病自诊模块,平台会读取用户疾病描述的语义信息,首先进行文本预处理,然后通过实体识别模型抽取出其中的关键成分,即:疾病症状、并发症、身体部位等医学实体。然后,这些医学实体会输入到平台后端的知识图谱(基于大规模数据集构建)中。最终,通过知识图谱的快速查询和计算,平台将返回基于患者疾病描述的疾病推断以及相应的概率值。同时,疾病相关的介绍、需要去就诊的科室和疾病多发人群的相关信息也会推送给用户。
3.1. 医学实体识别
医疗实体识别是指从给定句子中识别出医疗实体。在本项目中,需要从患者咨询的病情描述中识别出疾病、症状、科室等多种类型的医疗实体,找到与疾病特征相关的关键词。
entity_extract
模块提供了有关医学实体识别的有关信息。
由于模型过大因此并未放置在项目文件路径下,见项目资料
3.2. 支持识别的实体类型
3.3. 模型选择
我们在训练集上检验了 BERT、BERT+CRF、BERT+BiLSTM 和 BERT+BiLSTM+CRF 各模型的准确率、召回率和 micro_f1 值后,我们发现 BERT+BiLSTM+CRF 模型具有更好的医疗实体识别能力,因此,在本项目中,我们选用**BERT+BiLSTM +CRF**
模型完成后续医疗实体识别的任务。
3.4. 知识图谱构建
为了进行准确的疾病诊断,我们依托于大规模数据集构建知识图谱。
build_kg
模块提供了有关知识图谱构建的信息。
我们将应用于疾病自诊这一模块的所需实体标记为诊断检查项目、科室、疾病、药品、患病的部位、疾病症状、患病程度,在用户输入一段文本后,我们首先通过实体识别将以上这些关键实体识别出来。
通过事先考察,我们发现在进行疾病诊断的过程中,不仅仅是以身体的症状为依据,也有许多其他的所属关系可供我们参考。因此在进行关系抽取中,我们将各个实体间的关系分为 8 类,分别为属于、疾病常用药品、疾病对应科室、疾病别名、疾病所需检查、疾病部位、疾病症状、疾病并发疾病。我们通过以上 8 类关系判断在知识图谱中实体间两两之间的关系,从而计算出患该种疾病的概率。定义知识图谱实体间关系的描述性统计特征如下表所示。
4. 医生推荐智能系统
在医生推荐模块,平台期望寻找到历史数据中与用户最相似的患者,并找到与之对应到相应的医生,来完成个性化的推荐。具体而言,平台首先通过用户的描述文本获得其中的医学实体,即:一段文本到多个 token 的映射。然后,将每一个实体都采用词向量的形式进行表示。紧接着,Minihash 和 MinihashLSHForest 算法连接了两端,即:用户的描述文本和数据库中医生的历史问诊记录。平台使用 jacard 距离来计算二者的相似性,相似度高的被认为有较高的匹配度。最后,平台通过匹配度较高的问诊记录来推荐医生。
recommend
模块提供了有关知识图谱构建的信息。
5.医生服务指标评价体系
医生评价指标在考虑经济指标的同时,更应该突出社会效益导向,要体现以病人 为中心,追求利润的合理化,引导医生努力提高医疗服务质量。本研究在大规模客观数据集的基础上,构建了基于医生发文量、患者投票数、医生推荐热度、问诊后患者报道数量、在线服务患者数量和总患者数量六大维度的服务指标评级体系。
6.项目可视化展示
本项目的运行依托 django 框架。
web_server
模块提供了有关平台运行的信息。
6.1. 平台首页
6.2. 疾病自诊
6.3. 医生推荐
6.4. 医生服务指标评价体系
码源链接跳转见文末
更多优质内容请关注公号 &知乎:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。
版权声明: 本文为 InfoQ 作者【汀丶人工智能】的原创文章。
原文链接:【http://xie.infoq.cn/article/da59b8ee7f081c4b8e7cdfd27】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论