医療知識グラフと自動質問と回答を構築する場合は、アイテム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/prepare_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エンティティリンクスクリプト
MED_KG/MED_KG DJANGOフレームワークビューと構成ファイル
DjangoフレームワークのMED_KG/テンプレートテンプレート
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_treade_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クエリグラフデータベースを返して回答を返します
MED_KG/MEDMODEL/DICTドメイン辞書
「*」番号は、元のプロジェクトに基づいて変更されるアイテムを示します
| エンティティタイプ | 中国の意味 | エンティティの数 | 例を挙げてください |
|---|---|---|---|
| チェック | 診断検査項目 | 3,353 | 気管支グラフィー;関節鏡検査 |
| 部門 | 医療科目 | 54 | 整形手術部門;火傷部門 |
| 病気 | 病気 | 8,807 | 血球球血管炎;胸部の下降大動脈動脈瘤 |
| 薬 | 薬 | 3,828 | Jingwanhong hemolhiodクリーム;ブリントアミンの目滴 |
| 食べ物 | 食べ物 | 4,870 | トマトと野菜のビーフボールスープ。子羊で煮込んだ竹の芽 |
| プロデューサー | 医薬品の主要なカテゴリ | 17,201 | Tongyao Pharmaceutical Penicillin vカリウム錠剤;清yangデキサメタゾン酢酸錠剤 |
| 症状* | 病気の症状 | 4,377 | 乳房組織の肥大;脳の実質の深い出血 |
| 合計 | 合計 | 44,111 | 約44,000のエンティティ |
「*」番号は、元のプロジェクトに基づいて変更されるアイテムを示します
| エンティティリレーションシップタイプ | 中国の意味 | 関係の数 | 例を挙げてください |
|---|---|---|---|
| belonds_to | 属する | 8,844 | <婦人科、属性、産婦人科> |
| common_drug | 病気の一般的な薬 | 14,649 | <Yangqiang、一般的に使用されている、フェントラミンメタンスルホネート分散錠> |
| do_eat | 病気のときは食べ物を食べてください | 22,238 | <供給性骨折、食べるのに適し、黒い魚> |
| drugs_of | 販売中の薬 | 17,315 | <ペニシリンvカリウム錠剤、販売中、トンギャオ医薬品ペニシリンvカリウム錠剤> |
| need_check | 疾患検査 | 39,422 | <片側性肺気腫、必要な検査、気管支造影> |
| no_eat | 病気で食べ物を食べないでください | 22,247 | <唇の病気、食べない、アーモンド> |
| 推奨_drug | 疾患に推奨される薬 | 59,467 | <混合hemo、推奨薬、Jingwanhong hemol核クリーム> |
| busemended_eat | 疾患に推奨されるレシピ | 40,221 | <ハルベスト、推奨レシピ、トマトとビーフボールスープ> |
| has_symptom* | 病気の症状 | 99,492 | <早期乳がん、病気の症状、乳房組織肥大> |
| acompany_with | 病気や病気 | 12,029 | <交通静脈の下肢のバルブ閉鎖の不足、疾患の合併症、血球細胞血管炎> |
| 合計 | 合計 | 294,149 | 約300,000の関係の大きさ |
| 属性タイプ | 中国の意味 | 例を挙げてください |
|---|---|---|
| 名前 | 病気の名前 | 気管支炎の喘鳴 |
| desc | 病気の紹介 | 喘息気管支炎としても知られています... |
| 原因 | 病気の原因 | 一般的なものには、合胞体ウイルスが含まれます... |
| 防ぐ | 予防措置 | 家族と子供のアレルギーの歴史に注意を払ってください... |
| cure_lasttime | 治療サイクル | 6〜12ヶ月 |
| cure_way | 治療法 | 「薬の治療」、「支援治療」 |
| cured_prob | 治療の確率 | 95% |
| easy_get | 疾患に対する感受性のある人 | 特定の群衆はありません |
| 質問タイプ | 中国の意味 | 例を尋ねてください | 説明します |
|---|---|---|---|
| diseas_symptom | 病気の症状 | 乳がんの症状は何ですか? | 異なるエンティティ間の関係 |
| systedom_disease | 既知の症状のある疾患を見つけます | 鼻水の問題は何ですか? | 異なるエンティティ間の関係 |
| diseas_cause | 病気の原因 | なぜ一部の人々は不眠症に苦しむのですか? | エンティティプロパティ |
| 病気_Acompany | 病気の合併症 | 不眠症の合併症は何ですか? | 同様のエンティティ間の関係 |
| diseas_not_food | 食べ物を避けるために食品を必要とする食品 | 不眠症の人は何を食べてはいけませんか? | 異なるエンティティ間の関係 |
| diseas_do_food | どの食品が病気に推奨されていますか | 耳鳴りがあったら何を食べるべきですか? | 異なるエンティティ間の関係 |
| food_not_disease | どんな病気が何かを食べないのが最善ですか | 蜂蜜を食べるのに最適な人は誰ですか? | 異なるエンティティ間の関係 |
| food_do_disease | どの病気が食物に良いですか | ガチョウの肉の利点は何ですか? | 異なるエンティティ間の関係 |
| diseas_drug | どんな病気にも薬を服用すべきか | 肝臓病のためにどのような薬を服用すればよいですか? | 異なるエンティティ間の関係 |
| drug_disease | どの病気が治療できるか | イサチス根顆粒はどのような病気を治すことができますか? | 異なるエンティティ間の関係 |
| diseas_check | 病気に必要なテスト | 髄膜炎をどのように検出できますか? | 異なるエンティティ間の関係 |
| check_disease | 検査でどのような病気を検出できるか | 完全な血球数によって何を検出できますか? | 異なるエンティティ間の関係 |
| disease_prevent | 予防措置 | 腎臓の欠乏を防ぐ方法は? | エンティティプロパティ |
| diseas_lasttime | 治療サイクル | 風邪を引くのにどれくらい時間がかかりますか? | エンティティプロパティ |
| diseas_cureway | 治療法 | 高血圧の治療方法は? | エンティティプロパティ |
| diseas_cureprob | 治療の確率 | 白血病は治すことができますか? | エンティティプロパティ |
| diseas_easyget | 疾患に対する感受性のある人 | 誰が高血圧になりやすいですか? | エンティティプロパティ |
| diseas_desc | 病気の説明 | 糖尿病とは何ですか? | エンティティプロパティ |
| diseas_getProb(todo) | 病気の確率 | 糖尿病の有病率はどれくらい高いですか? | エンティティプロパティ |
(1)参照認識:BERT_CRFに基づく辞書ベースのマッチング + NERは、言及された単語として両方を長くします。
(2)エンティティリンク:Sbertのセマンティックマッチングに基づいて、辞書の埋め込みが保存され、言及ワードとドメイン辞書の間の辞書の一致が保存されます。類似性TOP20を持つ候補者エンティティは、重複する単語と、類似性TOP20と候補者エンティティと言及時間の重複する単語を兼ね備えています。これは、ターゲットエンティティと見なされる言及単語の長さの半分以上です。
(3)意図認識:質問語 +ドメイン辞書に基づいています。たとえば、「ドライアイとは何ですか?」という質問では、「症状:ドライアイズ」と病気の質問「病気」について言及されています。質問をする意図は症状であると考えられています。

BERTとドメインの辞書マッチング方法を組み合わせて、「鼻粘膜の腫れ」に言及しているクエリの症状を得ることができます。

ターゲットエンティティの「鼻粘膜の腫れ」とスバート文の一致は、ターゲットエンティティ「鼻粘膜の腫れ」に一致するために使用されます。




質問の1つ以上の参照単語を特定し、対応する1つ以上の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.
Refer to 5 , use def load function of ./site-package/torch/serialization.py to use def load(f, map_location='cpu', pickle_module=pickle, **pickle_load_args): instead of 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-to-Deserialize-Object-on-a-cuda-device↩