Lors de la création d'un graphique de connaissances médicales et d'une question et d'une réponse automatique, reportez-vous à l'article 1 . Les optimisations suivantes ont été faites dans la création d'un graphique de connaissances médicales et d'un système de questions et réponses:
Après avoir construit le graphique de connaissances et le système de questions-réponses, l'interaction frontale et l'affichage de KG sont ajoutés, en utilisant la carte guidée par la force d'Echarts. Projet de référence de mise en œuvre 4 .
neo4j-community-4.1.4 % bin/neo4j start
medical_knowledge_graph_app-master % python med_kg/manage.py runserver
Diagramme d'interface de la fonction IMG
Fichier KG / Prepare_Data
kg / data / medical_rebuild.json les données traitées finales
kg / build_medicalgraph.py crée une base de données de graphiques NEO4J
Modèle de liaison d'entité MED_KG / EL_MODEL
MED_KG / EL_MODEL / Mot d'intégration de la représentation de la maladie / médicament / des symptômes dictionnaire
med_kg / el_model / entity_linking.py script de liaison entité
MED_KG / MED_KG Django Framework Views et Fichiers de configuration
Modènes MED_KG / Templates de Django Framework
MED_KG / Fichier d'amorçage frontal statique
MED_KG / NER_MODEL Modèle de reconnaissance d'entité nommée
MED_KG / NER_MODEL / MODÈLES NAPPOSÉ CODE DE MODÈLE DE COMMANDE ENTITÉE
MED_KG / NER_MODEL / DATA DATA pour le modèle de formation
Med_Kg / Ner_Model / Pertes Fonction de perte pour le modèle de formation
MED_KG / NER_MODEL / OUTPUS / 1101 Modèle de Finetune-Finetune finement réglé (formé)
MED_KG / NER_MODEL / PREV_TRAINE_MODEL Modèle prétrainé pour Pytorch
MED_KG / UTIL TOLL, Cold Start
script med_kg / modèle pour interagir avec la base de données de graphiques NEO4J
MED_KG / MEDMODEL Question et réponse automatique
med_kg / medmodel / question_classifier.py script de reconnaissance de l'intention
Med_kg / MedModel / Quester_parser.py Script qui convertit les mots de mention identifiés et les intentions en instructions de requête
med_kg / medmodel / réponse_search.py Base de données de graphiques de requête à retourner Réponse
MED_KG / MEDMODEL / DICT Domain Dictionary
Le numéro '*' indique l'élément qui change en fonction du projet d'origine
| Type d'entité | Signification chinoise | Nombre d'entités | Donner un exemple |
|---|---|---|---|
| Vérifier | Éléments d'examen diagnostique | 3 353 | Bronchographie; arthroscopie |
| Département | Sujets médicaux | 54 | Département de chirurgie plastique; Département des brûlures |
| Maladie | maladie | 8 807 | Vascularite thromboocytaire; anévrisme aortique descendant de la poitrine |
| Médicament | médicament | 3 828 | Crème hémorroïde de Jingwanhong; Gouttes des yeux brintzoamine |
| Nourriture | nourriture | 4 870 | Tomate et légumes Soup à boulets de boeuf; Bamboo tire avec de l'agneau |
| Producteur | Catégories majeures de médicaments | 17.201 | Tongyao Pharmaceutical Penicillin V comprimés de potassium; Comprimés de qingyang dexaméthasone acétate |
| Symptôme* | Symptômes de la maladie | 4 377 | Hypertrophie des tissus mammaires; Saignement profond dans le parenchyme du cerveau |
| Total | total | 44,111 | Environ 44 000 entités |
Le numéro '*' indique l'élément qui change en fonction du projet d'origine
| Type de relation d'entité | Signification chinoise | Nombre de relations | Donner un exemple |
|---|---|---|---|
| appartient_to | appartenir | 8 844 | <Gynécologie, appartenant à, obstétrique et gynécologie> |
| Common_drug | Médicaments communs pour les maladies | 14 649 | <Yangqiang, couramment utilisé, comprimés dispersés de méthanesulfonate de la pHentolamine>> |
| do_eat | Mangez de la nourriture quand vous êtes malade | 22 238 | <Fracture de souplesse, adaptée à la consommation, poisson noir> |
| drogues_of | Médicaments en vente | 17,315 | <Pénicilline V Comprimés de potassium, en vente, Tongyao Pharmaceutical Penicillin V Potassium comprimés> |
| a besoin_check | Tests de maladie | 39 422 | <emphysème unilatéral, examen requis, bronchographie> |
| no_eat | Évitez de manger des aliments dans les maladies | 22 247 | <Maladie des lèvres, éviter de manger, amandes> |
| recommandé_drug | Médicaments recommandés pour les maladies | 59 467 | <Hémorroïdes mélangées, médicaments recommandés, crème hémorroïde de Jingwanhong> |
| recommandé_eat | Recettes recommandées pour les maladies | 40 221 | <Haloute, recette recommandée, soupe à la balle de tomate et de bœuf> |
| Has_symptom * | Symptômes de la maladie | 99 492 | <Cancer du sein précoce, symptômes de la maladie, hypertrophie des tissus mammaires> |
| acompany_with | Maladies et maladies | 12 029 | <Insuffisance de la fermeture de la valve des membres inférieurs de la veine de la circulation, complications des maladies, vascularite thromboocytaire> |
| Total | total | 294 149 | Environ 300 000 relations avec les relations |
| Type d'attribut | Signification chinoise | Donner un exemple |
|---|---|---|
| nom | Nom de la maladie | Bronchite sifflante |
| dessiner | Introduction de la maladie | Également connu sous le nom de bronchite d'asthme ... |
| Cause | Causes de la maladie | Les virus syncytiaux communs incluent les virus syncytiaux ... |
| prévenir | Mesures préventives | Faites attention à l'histoire des allergies de la famille et des enfants ... |
| cure_lasttime | Cycle de traitement | 6-12 mois |
| cure_way | Méthode de traitement | "Traitement de médecine", "traitement de soutien" |
| gured_prob | Probabilité de remède | 95% |
| Easy_get | Les personnes ayant une sensibilité aux maladies | Pas de foule spécifique |
| Type de question | Signification chinoise | Demander un exemple | illustrer |
|---|---|---|---|
| maladie_symptom | Symptômes de la maladie | Quels sont les symptômes du cancer du sein? | Relations entre différentes entités |
| symptôme | Trouver des maladies possibles avec des symptômes connus | Quel est le problème d'avoir un nez qui coule? | Relations entre différentes entités |
| maladie_caute | Causes de la maladie | Pourquoi certaines personnes souffrent-elles d'insomnie? | Propriétés de l'entité |
| maladie_acompany | Complications de la maladie | Quelles sont les complications de l'insomnie? | Relations entre entités similaires |
| maladie_not_food | Les aliments qui ont besoin de nourriture pour éviter les aliments | Que ne devraient pas manger les personnes souffrant d'insomnie? | Relations entre différentes entités |
| maladie_do_food | Quels aliments sont recommandés pour la maladie | Que dois-je manger si j'ai des acouphènes? | Relations entre différentes entités |
| food_not_disease | Quelle maladie est la meilleure pour ne pas manger quelque chose | Quelle est la meilleure personne à manger du miel? | Relations entre différentes entités |
| food_do_didease | Quelle maladie est bonne pour la nourriture | Quels sont les avantages de la viande d'oie? | Relations entre différentes entités |
| maladie_drug | Quel médicament dois-je prendre pour toute maladie | Quel médicament dois-je prendre pour les maladies du foie? | Relations entre différentes entités |
| Drug_Disease | Quelles maladies peuvent guérir les médicaments | Quelles maladies les granules de racine Isatis peuvent-ils guérir? | Relations entre différentes entités |
| malaxe_check | Quels tests sont nécessaires pour la maladie | Comment détecter la méningite? | Relations entre différentes entités |
| Check_Disease | Quelle maladie peut être détectée lors de l'examen | Que peut-il être détecté par un nombre complet de cellules sanguines? | Relations entre différentes entités |
| maladie_prevent | Mesures préventives | Comment prévenir une carence en rein? | Propriétés de l'entité |
| maladie_lasttime | Cycle de traitement | Combien de temps faut-il pour avoir un rhume? | Propriétés de l'entité |
| Disease_cureway | Méthode de traitement | Comment traiter l'hypertension? | Propriétés de l'entité |
| maladie_cureprob | Probabilité de remède | La leucémie peut-elle être guéri? | Propriétés de l'entité |
| maladie_easyget | Les personnes ayant une sensibilité aux maladies | Qui est sujet à l'hypertension? | Propriétés de l'entité |
| Disease_Desc | Description de la maladie | Qu'est-ce que le diabète? | Propriétés de l'entité |
| Disease_getprob (TODO) | Probabilité de maladie | Quelle est la hauteur de la prévalence du diabète? | Propriétés de l'entité |
(1) Reconnaissance des références: Matching basé sur le dictionnaire + NER basé sur Bert_CRF, prenez plus les deux comme les mots de mention.
(2) Lien d'entité: Sur la base de la correspondance sémantique de SBERT, l'intégration du dictionnaire est stockée, la correspondance du dictionnaire entre les mots de mention et le dictionnaire de domaine. L'entité candidate avec la similitude Top20 combine des mots qui se chevauchent, et l'entité candidate avec la similitude TOP20 et les mots qui se chevauchent avec les temps de mention sont supérieurs ou égaux à la moitié de la durée du mot de mention, qui est considéré comme l'entité cible.
(3) Reconnaissance de l'intention: Basé sur les mots de question + dictionnaire de domaine. Par exemple, dans la question «Qu'est-ce que les yeux secs?», Le mot de mention «symptôme: les yeux secs» et la question de la maladie «maladie». On pense que l'intention de poser la question est le symptôme_Disease: trouver des maladies possibles avec des symptômes connus.

La combinaison des méthodes de correspondance de Bert et du dictionnaire de domaine pour obtenir les symptômes de la requête mentionne le "gonflement des muqueuses du nez".

L'appariement de l'entité cible "gonflement de la muqueuse du nez" avec la phrase SBERT est utilisé pour correspondre à l'entité cible "Bounage de muqueuse du nez".




Identifiez un ou plusieurs mots de référence dans la question, lien vers les entités correspondantes ou plusieurs kg et renvoyez la réponse de la requête en combinaison avec les résultats de la reconnaissance de l'intention.

Ce bug se produit:
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.
Reportez-vous à 5 , utilisez la fonction de charge Def de ./site-package/torch/serialization.py pour utiliser def load(f, map_location='cpu', pickle_module=pickle, **pickle_load_args): au lieu de 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/sence-transformateurs ↩
https://github.com/jiangnanboy/movie_knowledge_graph_app ↩
https://stackoverflow.com/questions/56369030/runtimeerror-attemipt-to-deerialize-object-on-a-cuda-device ↩