Ärzteempfehlungssystem der Domänenwissenskarte: Verwenden Sie die medizinische Entitätserkennung BERT+CRF+BiLSTM, um eine medizinische Wissenskarte und ein System zur Beantwortung von Wissensfragen zu erstellen

Fügen Sie hier eine Bildbeschreibung ein

Projektdesign-Sammlung (Richtung künstliche Intelligenz): Helfen Sie Neulingen, schnell Fertigkeiten im tatsächlichen Kampf zu erlernen, Projektdesign-Upgrades selbstständig abzuschließen und ihre eigene Hard Power zu verbessern (nicht beschränkt auf NLP, Wissensgraph, Computer Vision usw.): Sammeln Sie aussagekräftige Projekte Designsammlungen, die Neulingen dabei helfen, Fertigkeiten im tatsächlichen Kampf schnell zu erlernen, und Benutzern dabei helfen, die CSDN-Plattform besser zu nutzen, Projektdesign-Upgrades selbstständig abzuschließen und ihre eigene harte Leistung zu verbessern.

Fügen Sie hier eine Bildbeschreibung ein

  1. Kolumnenabonnement: Enzyklopädie der Projekte zur Verbesserung Ihrer Hard Power

  2. [Detaillierte Einführung in die Spalte: Projektdesign-Sammlung (Richtung künstliche Intelligenz): Helfen Sie Neulingen, Fähigkeiten im tatsächlichen Kampf schnell zu erlernen, Projektdesign-Upgrades unabhängig abzuschließen und ihre eigene Hard Power zu verbessern (nicht beschränkt auf NLP, Wissensdiagramme, Computer Vision usw.). .)

Ärzteempfehlungssystem der Domänenwissenskarte: Verwenden Sie die medizinische Entitätserkennung BERT+CRF+BiLSTM, um eine medizinische Wissenskarte und ein System zur Beantwortung von Wissensfragen zu erstellen

Dieses Projekt realisiert hauptsächlich zwei Funktionen der Selbstdiagnose von Krankheiten und der Empfehlung eines Arztes und baut ein System zur Bewertung des Arztdienstindex auf. Die Selbstdiagnose von Krankheiten nutzt hauptsächlich die medizinische Entitätserkennung von BERT+CRF+BiLSTM, um eine medizinische Wissenskarte zu erstellen und
so die Erstdiagnose von Krankheiten auf der Grundlage von Patientenanfragetexten zu realisieren. Diese Funktion hilft Patienten, ihren Krankheitszustand zunächst zu verstehen und unterstützt die weitere Kommunikation mit Ärzten.
Die zweite Funktion ist die ärztliche Empfehlung. Die Plattform verwendet die auf der Jacard-Distanz basierenden Algorithmen Minhash und minhashLSHForest, um Empfehlungen abzugeben, indem sie
den Konsultationstext des Patienten und die historischen Konsultationsinformationen des Arztes abgleicht, um dem Patienten den am besten geeigneten Arzt zu empfehlen. Schließlich verwenden wir das Django-Framework für die Projektfreigabe.

1. Projektrahmen

Informationen zum Herunterladen der Codequelle finden Sie oben oder am Ende des Artikels

https://download.csdn.net/download/sinat_39620217/87990778

2. Datenerfassung

Neben der Nutzung öffentlicher medizinischer Datensätze sammelte dieses Projekt auch Datensätze von führenden medizinischen Plattformen in China.

spidersDas Modul stellt Informationen zur Datenerfassung bereit.

39crawler wird verwendet, um Daten vom 39 Health Network zu erhalten, und hdf wird verwendet, um Daten von Haodafu.com (Scrapy) zu erhalten.

Das laufende Programm befindet sich im Ordner dist. Doppelklicken Sie auf Spider_run.exe, um das Crawler-Programm auszuführen.

Crawlen Sie die angegebenen Krankheitsinformationen, fügen Sie den Abteilungsnamen (Pinyin) oder den Krankheitsnamen (Pinyin) zur Datei Disease.txt hinzu, und jede Abteilung oder Abteilung belegt eine separate Zeile.

Unabhängig davon, wie viele Zeilen Sie zur Datei „disease.txt“ hinzufügen, durchsucht der Crawler nur die Abteilung oder Krankheit, die der ersten Zeile entspricht, und die Ergebnisse werden als „doctor.csv“ und „disease.csv“ ausgegeben, nachdem die Ausführung des Programms abgeschlossen ist.

Wenn Sie die zweite Krankheit durchsuchen müssen, löschen Sie bitte die erste Zeile mit Abteilungen oder Krankheiten und führen Sie das Programm erneut aus.

3. Selbstdiagnose der Krankheit

Im Modul zur Selbstdiagnose von Krankheiten liest die Plattform die semantischen Informationen der Krankheitsbeschreibung des Benutzers, führt zunächst eine Textvorverarbeitung durch und extrahiert dann die Schlüsselkomponenten über das Entitätserkennungsmodell, nämlich: medizinische Entitäten wie Krankheitssymptome, Komplikationen usw Körperteile. Diese medizinischen Einheiten werden dann in einen Wissensgraphen (der auf einem umfangreichen Datensatz basiert) im Backend der Plattform eingespeist. Letztendlich wird die Plattform durch die schnelle Abfrage und Berechnung des Wissensgraphen die Krankheitsfolgerung basierend auf der Krankheitsbeschreibung des Patienten und dem entsprechenden Wahrscheinlichkeitswert zurückgeben. Gleichzeitig werden auch krankheitsbezogene Einführungen, Abteilungen, die einen Arzt aufsuchen müssen, und Informationen über Menschen mit häufigen Krankheiten an die Benutzer weitergegeben.

3.1. Anerkennung medizinischer Einrichtungen

Unter Erkennung medizinischer Entitäten versteht man die Identifizierung medizinischer Entitäten aus einem bestimmten Satz. In diesem Projekt ist es notwendig, verschiedene Arten medizinischer Einheiten wie Krankheiten, Symptome und Abteilungen anhand der von Patienten konsultierten Zustandsbeschreibungen zu identifizieren und Schlüsselwörter zu finden, die sich auf Krankheitsmerkmale beziehen.

entity_extractDas Modul bietet relevante Informationen zur Anerkennung medizinischer Einrichtungen.

Da das Modell zu groß ist, wird es nicht im Projektdateipfad platziert, siehe项目资料

输入:汪主任您好,1月中旬常规体检发现TCT高度病变,HPV未查,2020年hpv和tct正常。已经在南京鼓楼医院做了活检,报告如下,诊断写的肿瘤,请问现在这个是不是癌呢?是不是很严重?因为娃太小很害怕,后续该怎么手术呢?十分迫切希望得到您的答复,不胜感激!

输出:{'test': [('hpv', 35), ('tct', 39), ('活检', 56)], 'symptom': [('肿瘤', 68)], 'feature': [('严重', 87)]}
使用示例:
# predict.py
args.bert_dir = '../data/bert-base-chinese'  # 加载预训练的语义模型
model_name = 'bert_bilstm_crf'  # 使用的model类型:bert_bilstm, bert_bilstm_crf, bert_crf, bert
id2query = pickle.load(open('../data/id2query.pkl', 'rb'))  # 加载词典
ent2id_dict = pickle.load(open('../data/ent2id_dict.pkl', 'rb'))  # 加载词典
args.num_tags = len(ent2id_dict)
bertForNer = BertForNer(args, id2query)
model_path = './checkpoints/{}/model.pt'.format(model_name)  # 模型存储路径
model = bert_ner_model.BertNerModel(args)  # 根据参数实例化模型
model, device = trainUtils.load_model_and_parallel(model, args.gpu_ids, model_path)  # 模型加载
model.eval()
raw_text = "汪主任您好,1月中旬常规体检发现TCT高度病变,HPV未查,2020年hpv和tct正常。已经在南京鼓楼医院做了活检,报告如下,诊断写的肿瘤,请问现在这个是不是癌呢?是不是很严重?因为娃太小很害怕,后续该怎么手术呢?十分迫切希望得到您的答复,不胜感激!".strip().replace(
    '(', '(').replace(')', ')').replace('+', '&')  # 患者输入的自述文本
print(raw_text)
bertForNer.predict(raw_text, model, device)  # 识别的医学实体

3.2. Entitätstypen, die die Erkennung unterstützen

body:患病部位,如:胃,皮肤
drug :药品,如:产妇康清洗液
feature:患病程度,如:严重
disease:疾病,如:前列腺炎
symptom:疾病症状,如:胃壁增厚
department:科室,如:五官科
test:疾病相关的检查,如:血常规

3.3. Modellauswahl

Nachdem wir die Genauigkeit, den Rückruf und die micro_f1-Werte der BERT-, BERT+CRF-, BERT+BiLSTM- und BERT+BiLSTM+CRF-Modelle am Trainingssatz getestet hatten, stellten wir fest, dass das BERT+BiLSTM+CRF-Modell über eine bessere Fähigkeit zur Erkennung medizinischer Entitäten verfügt Daher wählen wir in diesem Projekt **BERT+BiLSTM +CRF**das Modell, um die Aufgabe der anschließenden Anerkennung medizinischer Entitäten abzuschließen.

3.4. Aufbau einer Wissenskarte

Um eine genaue Krankheitsdiagnose durchführen zu können, stützen wir uns bei der Erstellung von Wissensgraphen auf umfangreiche Datensätze.

build_kgDie Module bieten Informationen zum Aufbau von Wissensgraphen.

Wir markieren die erforderlichen Entitäten, die im Modul zur Selbstdiagnose von Krankheiten angewendet werden, als diagnostische Untersuchungselemente, Abteilungen, Krankheiten, Medikamente, erkrankte Teile, Krankheitssymptome und Krankheitsgrade. Nachdem der Benutzer einen Text eingegeben hat, durchlaufen wir zunächst die Entitätserkennung. Identifizieren Sie die über den wichtigsten Einheiten.

Durch vorherige Untersuchungen haben wir festgestellt, dass im Prozess der Krankheitsdiagnose nicht nur körperliche Symptome, sondern auch viele andere Zugehörigkeiten als Referenz herangezogen werden. Daher unterteilen wir bei der Beziehungsextraktion die Beziehung zwischen jeder Entität in 8 Kategorien, nämlich Zugehörigkeit, häufig verwendete Medikamente gegen Krankheiten, entsprechende Krankheitsabteilungen, Aliase von Krankheiten, für Krankheiten erforderliche Inspektionen, Teile von Krankheiten, Krankheitssymptome usw gleichzeitige Erkrankungen von Krankheiten. Wir verwenden die oben genannten 8 Arten von Beziehungen, um die Beziehung zwischen Entitäten in der Wissenskarte zu beurteilen und so die Wahrscheinlichkeit zu berechnen, an der Krankheit zu leiden. Die beschreibenden statistischen Merkmale, die die Beziehungen zwischen KG-Entitäten definieren, sind in der folgenden Tabelle aufgeführt.

4. Intelligentes System für Arztempfehlungen

Im Arztempfehlungsmodul erwartet die Plattform, in den historischen Daten den Patienten zu finden, der dem Benutzer am ähnlichsten ist, und den entsprechenden Arzt zu finden, um die personalisierte Empfehlung zu vervollständigen. Konkret ruft die Plattform zunächst die medizinischen Entitäten im Beschreibungstext des Benutzers ab, also die Zuordnung von einem Textabschnitt zu mehreren Token. Dann wird jede Entität in Form eines Wortvektors dargestellt. Unmittelbar danach verbinden die Algorithmen Minihash und MinihashLSHForest die beiden Enden, nämlich den Beschreibungstext des Benutzers und die historischen Konsultationsaufzeichnungen des Arztes in der Datenbank. Die Plattform verwendet den Jacard-Abstand, um die Ähnlichkeit zwischen den beiden zu berechnen, und derjenige mit der höheren Ähnlichkeit wird als höher übereinstimmend angesehen. Schließlich empfiehlt die Plattform Ärzte anhand der Konsultationsunterlagen mit einem hohen Grad an Übereinstimmung.

recommendDie Module bieten Informationen zum Aufbau von Wissensgraphen.

输入:一周前稍感胸闷,入院检查,心脏彩超,腹部彩超正常,心脏冠状动脉CT,显示狭窄

输出:[{'Unnamed: 0': 0, 'patient_score': 11, 'patient_online': 2116, 'educate': '教授', 'articleCount': '22篇', 'spaceRepliedCount': '2116位', 'totaldiagnosis': '367位', 'openSpaceTime': '2008-10-22 18:15', 'hot_num': 3.6, 'hospitalName': '上海交通大学医学院附属上海儿童医学中心', 'keshi': '心内科', 'good_at': '先天性心脏病的诊断和介入治疗,小儿肺动脉高压的诊治,儿童心肌病的诊断和治疗', 'introduction': '傅立军,男,主任医师,教授,医学博士,博士生导师,心内科主任,国家卫计委先天性心脏病介入培训基地导师。从事小儿心血管疾病的诊疗二十年,尤其擅长于先天性心脏病的诊断和介入治疗以及肺动脉高压、心肌病的诊治,累计完成先天性心脏病介入治疗3000余例。 中华医学会儿科学分会心血管病学组委员,遗传代谢性心肌病协作组组长 中华医学会心血管病学分会肺血管病学组委员 中国医师协会儿科医师分会心血管疾病专业委员会委员兼秘书长 上海市儿科学会心血管病学组副组长 在国内外发表论文三十余篇。 参编专著多部。', 'doctor_title': '主任医师', 'doctor_id': 221603, 'doctorName': '傅立军', 'disease': 'gaoxueya'}, {'Unnamed: 0': 0, 'patient_score': 71, 'patient_online': 8515, 'educate': '教授', 'articleCount': '8篇', 'spaceRepliedCount': '8515位', 'totaldiagnosis': '1357位', 'openSpaceTime': '2009-05-07 16:16', 'hot_num': 4.0, 'hospitalName': '首都医科大学附属北京安贞医院鹤壁市人民医院', 'keshi': '心脏内科中心心血管内科', 'good_at': '冠心病,介入治疗;心肌病,心力衰竭,难治性高血压的诊断治疗。', 'introduction': '赵全明,博士,首都医科大学教授,博士研究生导师,北京安贞医院心脏内科中心主任医师。1989年西安医科大学内科硕士毕业,1997年底法国路易斯巴斯德大学医学院博士毕业,2000年晋升主任医师。擅长各种心血管疾病的诊断和治疗,重点从事冠心病的临床和研究,个人完成冠状动脉造影10000例,冠心病介入治疗(PCI)超过5000例。开展了冠心病诊断(冠脉造影,血管内超声-IVUS,光学相干断层显像-OCT,冠脉血流储备分数-FFR)和复杂冠心病介入治疗的各种新技术(冠状动脉支架术,钙化病变的旋磨术,支架内再狭窄的药物球囊治疗,生物可降解支架临床研究),并获得丰富经验。', 'doctor_title': '主任医师', 'doctor_id': 4269, 'doctorName': '赵全明', 'disease': 'gaoxueya'}, {'Unnamed: 0': 0, 'patient_score': 13, 'patient_online': 14327, 'educate': '教授', 'articleCount': '95篇', 'spaceRepliedCount': '14327位', 'totaldiagnosis': '3385位', 'openSpaceTime': '2011-07-06 14:35', 'hot_num': 3.6, 'hospitalName': '首都医科大学附属北京安贞医院', 'keshi': '心脏内科中心', 'good_at': '房颤和复杂心律失常的导管消融治疗,尤其擅长各种类型心房颤动(房颤)、心房扑动(房扑)、房性心动过速(房速)的导管消融,包括心脏外科术后如二尖瓣置换术后、房间隔封堵术后以及射频消融术后复发的房颤、房扑;室性心动过速(室速)和室上性心动过速(室上速);瓣膜病的球囊扩张术,特别是风湿性心脏病二尖瓣狭窄的治疗。', 'introduction': '马长生,主任医师,教授,博士生导师。于1998年完成国内首例房颤导管消融术,并系统建立了我国心律失常消融的技术和方法。 北京市心血管疾病防治办公室主任 中华医学会心血管病学分会副主任委员 中国医师协会心血管内科医师分会会长 中华医学会心电生理和起搏分会副主任委员 中国生物医学工程学会常务理事兼心律分会主任委员 中国生物医学工程学会介入医学工程分会主任委员 为卫生部有突出贡献中青年专家、科技北京百名领军人才、北京市卫生系统领军人才及JournalofCardiovascularElectrophysiology、Europace、JournalofInterventionalCardiacElectrophysiology和ChineseMedicalJournal等30余种学术期刊编委。 3次获国家科学技术进步二等奖 首创单导管法、“2C3L”术式、倒U形导管塑形消融右侧旁路等一系列原创性方法。 牵头研制成功自主知识产权的磁定位三维电解剖标测系统和首套房颤导管消融模拟器。 主编的《介入心脏病学》《心律失常射频消融图谱》为本专业最具影响的教科书之一。 以第一作者或通信作者发表SCI收录论文80余篇, 承担“十二五”国家科技支撑计划、“十二五”国家科技重大专项子课题、“十一五”863计划、“十五”国家科技攻关项目等省部级以上课题数十项。 已授权或公告专利7项,其中PCT专利2项。', 'doctor_title': '主任医师', 'doctor_id': 4255, 'doctorName': '马长生', 'disease': 'gaoxueya'}, {'Unnamed: 0': 0, 'patient_score': 0, 'patient_online': 3151, 'educate': '教授', 'articleCount': '4篇', 'spaceRepliedCount': '3151位', 'totaldiagnosis': '115位', 'openSpaceTime': '2008-12-20 03:09', 'hot_num': 3.5, 'hospitalName': '中国医学科学院阜外医院中国医学科学院阜外医院深圳医院', 'keshi': '心血管内科心血管内科', 'good_at': '冠心病的诊断与介入治疗,急性心肌梗死介入治疗', 'introduction': '主任医师,教授,博士研究生导师 中国医学科学院阜外医院深圳医院内科管委会主任 内科教研室主任、冠心病中心主任、介入中心主任 美国心脏病学会会员(FACC)、美国心脏协会会员(FAHA);欧洲心脏病学会会员(FESC)。  著名的心血管病学专家,国家级领军人才 中央保健委会诊专家 深圳市医学重点学科(心血管内科)负责人 深圳市重大疾病(冠心病)防治中心负责人 深圳市医防融合心血管病项目专家组组长 深圳市医疗卫生三名工程急性冠脉综合征团队负责人  受教育经历: 1982年武汉大学医学部获学士学位(改革开放后首批本科生);1988年华中科大同济医学院(全日制)硕士学位;1994年日本国立滨松医大(全日制)博士学位。  专业特长: 全球心血管介入手术例数最多和经验最丰富的的专家之一;各种心血管急重症的诊断与治疗;复杂冠心病介入治疗和长期管理;研究方向:急性心梗临床与转化医学研究。  工作语言: 普通话、英语和日语 中国医师协会胸痛专业委员会副主任委员 《中国介入心脏病学杂志》副主编 《中华心血管病杂志》等编委 《中华医学杂志》等审稿专家 先后建立了中日友好医院、北京安贞医院和北京阜外医院急性心梗救治通道;先后承担国家和省部级研究项目30项,共获得6000万元基金支持。 发表或参与发表文章550篇(https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=HONGBING+YANBeijing+&btnG=)。 出版著(译)作60部(https://book.jd.com/writer/颜红兵_1.html?stop=1&book=y&vt=2)。', 'doctor_title': '主任医师', 'doctor_id': 4274, 'doctorName': '颜红兵', 'disease': 'gaoxueya'}, {'Unnamed: 0': 0, 'patient_score': 4, 'patient_online': 4829, 'educate': '教授', 'articleCount': '33篇', 'spaceRepliedCount': '4829位', 'totaldiagnosis': '1228位', 'openSpaceTime': '2009-08-31 10:21', 'hot_num': 3.6, 'hospitalName': '首都医科大学附属北京安贞医院', 'keshi': '心脏内科中心', 'good_at': '冠心病介入治疗(支架术) 心绞痛/心肌梗死诊治 起搏器/除颤器植入 经导管主动脉瓣置入术 肺动脉高压诊治', 'introduction': '聂绍平,男,教授、主任医师、医学博士、博士研究生导师、欧洲心脏病学会专家会员(FESC),美国心血管造影和介入学会国际会员(FSCAI)。现任首都医科大学附属北京安贞医院急诊危重症中心主任。主要从事冠心病介入治疗、心肺血管急危重症临床与研究工作。个人累计完成经皮冠状动脉介入治疗(支架术)达15000余例,擅长复杂冠心病介入治疗(如钙化病变旋磨术、闭塞病变介入治疗等)。 主持863项目一项,国家自然科学基金面上项目3项,以及多项省部级重点项目。', 'doctor_title': '主任医师', 'doctor_id': 4264, 'doctorName': '聂绍平', 'disease': 'gaoxueya'}]
运行示例:
# try_minhash.py
df_csv = pd.read_csv('./gaoxueya-1.csv')
# 建立参数
# Number of Permutations
permutations = 128
forest = get_forest(df_csv, permutations)
# Number of Recommendations to return
# 召回top—n数目
num_recommendations = 100
# 精确需要的医生id数
num_doctors = 5
# 输入测试文本
raw_text = ' 一周前稍感胸闷,入院检查,心脏彩超,腹部彩超正常,心脏冠状动脉CT,显示狭窄 '
raw_text = raw_text.strip().replace('(', '(').replace(')', ')').replace('+', '&')
# 模型加载
args.bert_dir = '../data/bert-base-chinese'
model_name = 'bert_bilstm_crf'  # 使用的model类型:bert_bilstm, bert_bilstm_crf, bert_crf, bert
id2query = pickle.load(open('../data/id2query.pkl', 'rb'))
ent2id_dict = pickle.load(open('../data/ent2id_dict.pkl', 'rb'))
args.num_tags = len(ent2id_dict)
bertForNer = BertForNer(args, id2query)
model_path = '../entity_extract/checkpoints/{}/model.pt'.format(model_name)
model = bert_ner_model.BertNerModel(args)
model, device = trainUtils.load_model_and_parallel(model, args.gpu_ids, model_path)
model.eval()
# 识别测试文本中的医疗实体
text_shiti = path_pre(raw_text, bertForNer, model, device)
# 推荐医生
df = pd.read_csv('./haodaifu/doctors_gaoxueya.csv')
recommend(df_csv, text_shiti,df)

5. System zur Bewertung des Arztdienstindex

Unter Berücksichtigung wirtschaftlicher Indikatoren sollten die Bewertungsindikatoren der Ärzte die Ausrichtung auf den sozialen Nutzen hervorheben, das patientenzentrierte Streben nach Rationalisierung der Gewinne widerspiegeln und Ärzte bei der Suche nach einer Verbesserung der Qualität medizinischer Dienstleistungen anleiten. Auf der Grundlage eines umfangreichen objektiven Datensatzes erstellt diese Studie ein Service-Index-Bewertungssystem, das auf sechs Dimensionen basiert: der Anzahl der von Ärzten veröffentlichten Dokumente, der Anzahl der Stimmen der Patienten, der Beliebtheit von Arztempfehlungen und der Anzahl der Patienten Berichte nach der Konsultation, die Anzahl der Online-Service-Patienten und die Gesamtzahl der Patienten.

6. Visuelle Darstellung des Projekts

Der Betrieb dieses Projekts basiert auf dem Django-Framework.

web_serverModule geben Auskunft über den Betrieb der Plattform.

6.1. Homepage der Plattform

6.2. Selbstdiagnose der Krankheit

6.3. Empfehlung des Arztes

6.4. System zur Bewertung des Arztdienstindex

Informationen zum Herunterladen der Codequelle finden Sie oben oder am Ende des Artikels

https://download.csdn.net/download/sinat_39620217/87990778

Supongo que te gusta

Origin blog.csdn.net/sinat_39620217/article/details/131697045
Recomendado
Clasificación