의료 지식 그래프 및 자동 질문 및 답변을 구축 할 때는 항목 1을 참조하십시오. 의료 지식 그래프와 질문 및 답변 시스템을 구축하는 데 다음과 같은 최적화가 이루어졌습니다.
지식 그래프 및 질문 및 답변 시스템을 구축 한 후 Echarts의 힘 유도 맵을 사용하여 프론트 엔드 상호 작용 및 KG 디스플레이가 추가됩니다. 구현 참조 프로젝트 4 .
neo4j-community-4.1.4 % bin/neo4j start
medical_knowledge_graph_app-master % python med_kg/manage.py runserver
IMG 기능 인터페이스 다이어그램
kg/ready_data crawler 파일
kg/data/medical_rebuild.json 최종 처리 된 데이터입니다
kg/build_medicalgraph.py는 neo4j 그래프 데이터베이스를 만듭니다
MED_KG/EL_MODEL 엔티티 링크 모델
MED_KG/EL_MODEL/질병/약물/증상 사전의 표현 단어 임베딩
med_kg/el_model/entity_linking.py entity 링크 스크립트
med_kg/med_kg django 프레임 워크보기 및 구성 파일
Django 프레임 워크의 MED_KG/TEMPLATES 템플릿
MED_KG/정적 프론트 엔드 부트 스트랩 파일
MED_KG/NER_MODEL 명명 엔터티 인식 모델
MED_KG/NER_MODEL/모델이라는 엔티티 인식 모델 모델 코드
MED_KG/NER_MODEL/교육 모델에 대한 데이터 데이터
교육 모델의 MED_KG/NER_MODEL/손실 손실 기능
med_kg/ner_model/outpus/1101medselfner-finetune 모델 미세 조정 (훈련)
med_kg/ner_model/prev_traind_model pytorch의 사전 치료 모델
med_kg/util 도구, 콜드 스타트
MED_KG/모델 스크립트 NEO4J 그래프 데이터베이스와 상호 작용합니다
MED_KG/MEDMODEL 자동 질문 및 답변
med_kg/medmodel/question_classifier.py 의도 인식 스크립트
med_kg/medmodel/question_parser.py 스크립트 식별 된 단어와 의도를 쿼리 문으로 변환합니다.
med_kg/medmodel/answer_search.py query 그래프 데이터베이스를 반환합니다
MED_KG/MEDMODEL/DICT 도메인 사전
'*'번호는 원래 프로젝트를 기반으로 변경되는 항목을 나타냅니다.
| 엔티티 유형 | 중국의 의미 | 엔티티 수 | 예를 들어보세요 |
|---|---|---|---|
| 확인하다 | 진단 검사 항목 | 3,353 | 기관지학; 관절 경찰 |
| 부서 | 의료 과목 | 54 | 성형 수술 부서; 번 부서 |
| 질병 | 질병 | 8,807 | Thromboocytic vasculitis; 가슴의 내림차순 대동맥 동맥류 |
| 의약품 | 의약품 | 3,828 | Jingwanhong 치질 크림; 브린조 아민 눈 드롭 |
| 음식 | 음식 | 4,870 | 토마토와 야채 쇠고기 볼 수프; 대나무 싹이 양고기로 끓었다 |
| 생산자 | 의약품의 주요 범주 | 17,201 | Tongyao Pharmaceutical Penicillin v 칼륨 정제; Qingyang Dexamethasone 아세테이트 정제 |
| 징후* | 질병의 증상 | 4,377 | 유방 조직의 비대; 뇌 실질에서 깊은 출혈 |
| 총 | 총 | 44,111 | 약 44,000 개 단체 |
'*'번호는 원래 프로젝트를 기반으로 변경되는 항목을 나타냅니다.
| 엔티티 관계 유형 | 중국의 의미 | 관계 수 | 예를 들어보세요 |
|---|---|---|---|
| 속성 _to | 제자리에 있다 | 8,844 | <부인과, 소속, 산부인과> |
| common_drug | 질병을위한 일반적인 의약품 | 14,649 | <Yangqiang, 일반적으로 사용되는 펜톨 아민 메탄 설포 네이트 분산 정제> |
| do_eat | 아플 때 음식을 먹으십시오 | 22,238 | <유소한 골절, 식사에 적합한, 검은 물고기> |
| 마약 _of | 판매중인 약 | 17,315 | <페니실린 v 칼륨 정제, 판매중인 Tongyao Pharmaceutical Penicillin v 칼륨 정제> |
| Need_Check | 질병 검사 | 39,422 | <일방적 인 폐기종, 필수 검사, 기관지 촬영> |
| no_eat | 질병에서 음식을 먹지 마십시오 | 22,247 | <립 병, 먹지 않아, 아몬드> |
| 권장 _drug | 질병에 대한 권장 의약품 | 59,467 | <혼합 치질, 권장 약물, Jingwanhong 치질 크림> |
| 권장 _eat | 질병에 대한 권장 레시피 | 40,221 | <halvesting, 권장 레시피, 토마토 및 쇠고기 볼 수프> |
| has_symptom* | 질병의 증상 | 99,492 | <초기 유방암, 질병 증상, 유방 조직 비대> |
| acompany_with | 질병과 질병 | 12,029 | <교통 정맥의하지의 밸브 폐쇄 부족, 질병의 합병증, 혈전 성 혈관염> |
| 총 | 총 | 294,149 | 약 300,000 관계 크기 |
| 속성 유형 | 중국의 의미 | 예를 들어보세요 |
|---|---|---|
| 이름 | 질병 이름 | 천명 기관지염 |
| DESC | 질병 소개 | 천식 기관지염이라고도합니다 ... |
| 원인 | 질병의 원인 | 일반적인 것들에는 세포 융합 바이러스가 포함됩니다 ... |
| 예방하다 | 예방 조치 | 가족과 어린이 알레르기 역사에주의하십시오 ... |
| cure_lasttime | 치료주기 | 6-12 개월 |
| cure_way | 치료 방법 | "의학 치료", "지지 치료" |
| cured_prob | 치료 가능성 | 95% |
| easy_get | 질병에 대한 감수성이있는 사람들 | 구체적인 군중이 없습니다 |
| 질문 유형 | 중국의 의미 | 예를 들어 질문하십시오 | 설명 |
|---|---|---|---|
| 질병 _symptom | 질병의 증상 | 유방암의 증상은 무엇입니까? | 다른 엔티티 간의 관계 |
| 증상 _disease | 알려진 증상으로 가능한 질병을 찾으십시오 | 콧물의 문제는 무엇입니까? | 다른 엔티티 간의 관계 |
| 질병 _cause | 질병의 원인 | 어떤 사람들은 왜 불면증으로 고통 받습니까? | 엔티티 속성 |
| 질병 _acompany | 질병의 합병증 | 불면증의 합병증은 무엇입니까? | 유사한 개체 간의 관계 |
| 질병 _not_food | 음식을 피하기 위해 음식이 필요한 음식 | 불면증이있는 사람들은 무엇을 먹지 않아야합니까? | 다른 엔티티 간의 관계 |
| 질병 _do_food | 질병에 권장되는 음식 | 이명이 있으면 무엇을 먹어야합니까? | 다른 엔티티 간의 관계 |
| food_not_disease | 무언가를 먹지 않는 것이 가장 좋은 질병 | 꿀을 먹는 가장 좋은 사람은 누구입니까? | 다른 엔티티 간의 관계 |
| food_do_disease | 음식에 좋은 질병 | 거위 고기의 이점은 무엇입니까? | 다른 엔티티 간의 관계 |
| 질병 _drug | 질병에 대해 어떤 약을 복용 해야하는지 | 간 질환을 위해 어떤 약을 복용해야합니까? | 다른 엔티티 간의 관계 |
| Drug_disease | 의약품을 치료할 수있는 질병 | 이사티스 뿌리 과립을 치료할 수있는 질병은 무엇입니까? | 다른 엔티티 간의 관계 |
| 질병 _check | 질병에 어떤 검사가 필요한지 | 수막염은 어떻게 발견 될 수 있습니까? | 다른 엔티티 간의 관계 |
| check_disease | 검사에서 어떤 질병을 발견 할 수 있는지 | 완전한 혈액 세포 수로 무엇을 감지 할 수 있습니까? | 다른 엔티티 간의 관계 |
| 질병 _prevent | 예방 조치 | 신장 결핍을 예방하는 방법? | 엔티티 속성 |
| 질병 _lasttime | 치료주기 | 감기에 걸리는 데 얼마나 걸립니까? | 엔티티 속성 |
| 질병 _cureway | 치료 방법 | 고혈압을 치료하는 방법? | 엔티티 속성 |
| 질병 _cureProb | 치료 가능성 | 백혈병을 치료할 수 있습니까? | 엔티티 속성 |
| 질병 _easyget | 질병에 대한 감수성이있는 사람들 | 고혈압이 발생하기 쉬운 사람은 누구입니까? | 엔티티 속성 |
| 질병 _desc | 질병 설명 | 당뇨병이란 무엇입니까? | 엔티티 속성 |
| 질병 _getProb (todo) | 질병 확률 | 당뇨병의 유병률은 얼마나 높습니까? | 엔티티 속성 |
(1) 참조 인식 : 사전 기반 일치 + NER BERT_CRF를 기반으로 한 언급 단어로 더 오래 걸립니다.
(2) 엔티티 링크 : SBERT의 의미 론적 일치에 기초하여 사전의 임베딩이 저장되며, 언급 단어와 도메인 사전 사이의 사전 일치. 유사성 TOP20을 갖는 후보 엔티티는 겹치는 단어를 결합하고 후보 엔티티는 유사성 TOP20과 언급 시간과 겹치는 단어를 결합합니다.
(3) 의도 인식 : 질문 단어 + 도메인 사전에 근거합니다. 예를 들어, "건조한 눈은 무엇입니까?"라는 질문에서, "증상 : 건조한 눈"과 질병 질문 "질병"이라는 언급. 질문을하려는 의도는 증상입니다 : 알려진 증상으로 가능한 질병을 찾으십시오.

Bert와 Domain 사전 일치 방법을 결합하여 쿼리에서 증상을 얻습니다. "코 점막 부기".

SBERT 문장과 대상 개체 "코 점막 부기"의 일치는 대상 엔티티 "코 점막 부종"과 일치하는 데 사용됩니다.




질문에서 하나 이상의 참조 단어를 식별하고 해당 하나 이상의 kg 엔티티에 링크하고 의도 인식 결과와 함께 쿼리 답변을 반환합니다.

이 버그가 발생합니다.
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.
5 를 참조하고, ./site-package/torch/serialization.py의 def load 함수를 사용하여 def load(f, map_location='cpu', pickle_module=pickle, **pickle_load_args): def load(f, map_location=None, pickle_module=pickle, **pickle_load_args):
https://github.com/liuhuanyong/qasystemonmedicalkg ↩
https://github.com/lonepatient/bert-ner-pytorch ↩
https://github.com/ukplab/sentence-transformers ↩
https://github.com/jiangnanboy/movie_knowledge_graph_app ↩
https://stackoverflow.com/questions/56369030/runtimeerror-attempting-teserialize-object-on-a-cuda-device ↩