Schlampig / MedNER

Chinese Medical Named Entity Recognition (MedNER) using BERT as backbone in PyTorch
9 stars 5 forks source link
medical-information medner named-entity-recognition nlp-chinese

MedNER


996.icu LICENSE

Introduction:

It's almost a self-practice (。・ω・。)ノ . I've collected, combined, cleaned, and trained a Chinese medical named entity recognition dataset through the basic open-sourced bert-chinese model.


File Dependency:

bert_codes -> __init__.py
            | modeling.py
            | optimization.py
            | tokenization.py
            | utils.py

check_points -> your_trained_model_name -> best_model.pth (your trained bert model)
                                         | log.txt (show results of each epoch)
                                         | log_dev.txt (show detailed results of each batch)
                                         | setting.txt (show hyper-parameters configuration)

datasets -> your_train_data.json
          | your_dev_data.json
          | your_test_data.json
          | your_train_features.json (generated from your_train_data.json)
          | your_dev_features.json (generated from your_dev_data.json)
          | your_test_features.json (generated from your_test_data.json)

pretrained_models -> bert_chinese -> bert_config.json
                                   | pytorch_model.pth
                                   | vocab.txt

prepro.py (create your train/dev/test datasets from the original one)

train.py (train/dev/save your model)


Dataset


Command Line:


Requirements


Examples of Results

Sent: 妊娠期高血压@应详细问及患者的个人史及家族史,明确心血管疾病或其危险因素(如糖尿病、脂质异常)的相关证据。 True: >病史: 妊娠(1, 3); 家族史(20, 23); 脂质异常(43, 47); >部位: 、(42, 43); >诊断: 高血压(4, 7); 心血管疾病(26, 31); 糖尿病(39, 42);
Pred: >病史: 妊娠(1, 3); 家族史(20, 23); 脂质异常(43, 47); >诊断: 高血压(4, 7); 心血管疾病(26, 31); 糖尿病(39, 42);

Sent: 转运中必须保持吸入no治疗no治疗不中断。 True: >检查: 吸入no治疗(8, 13); 治疗(14, 16); >药物: no(13, 14);
Pred: >检查: 吸入(8, 10); 治疗(11, 13); 治疗(14, 16); >药物: no(10, 11); no(13, 14);

Sent: 图4-1婴儿与母乳头的含接(3)哺乳禁忌证:有活动性结核、急性传染病、艾滋病、严重心肾疾病、恶性肿瘤及精神病者以及接受放射性核素治疗或服用前述药物的母亲,不宜给婴儿哺乳。 True: >病史: 药物(72, 74); >部位: 母乳头(8, 11); 、(29, 30); ,(77, 78); >诊断: 活动性结核(24, 29); 急性传染病(30, 35); 艾滋病(36, 39); 严重心肾疾病(40, 46); 恶性肿瘤(47, 51); 精神病(52, 55); >药物: 放射性核素治疗(60, 67); >人群: 婴儿(5, 7); 婴儿(81, 83);
Pred: >病史: 药物(72, 74); >部位: 乳头(9, 11); >检查: 放射性核素治疗(60, 67); >诊断: 活动性结核(24, 29); 急性传染病(30, 35); 艾滋病(36, 39); 严重心肾疾病(40, 46); 恶性肿瘤(47, 51); 精神病(52, 55); >人群: 婴儿(5, 7); 婴儿(81, 83);

Sent: b族链球菌感染@###胎膜早破(prom)使产妇更容易出现上行性子宫感染,是新生儿早发型感染的一种独立危险因素。 True: >病史: 胎膜早破(12, 16); pro(17, 18); m(18, 19); >部位: 子宫(31, 33); >诊断: 感染(6, 8); 感染(33, 35); 早发型(40, 43); 感染(43, 45); >其他: 链球菌(3, 6); 新生儿(37, 40);
Pred: >诊断: 感染(6, 8); 胎膜早破(12, 16); pro(17, 18); m(18, 19); 上行性子宫感染(28, 35); 新生儿早发型感染(37, 45); >其他: 链球菌(3, 6);

Sent: 肿瘤发生在肢体的远、近端及组织类型与预后无明显相关。 True: >部位: 肢体的远、近端(6, 13); 组织(14, 16); >诊断: 肿瘤(1, 3);
Pred: >部位: 肢体(6, 8); 组织(14, 16); >诊断: 肿瘤(1, 3);

Sent: 只要一吃甜食就牙疼,往里钻的疼是什么病,平时不疼 True: >症状: 牙疼(8, 10); >部位: ,(10, 11);
Pred: >症状: 牙疼(8, 10); >部位: ,(20, 21);

Sent: 他们将病人分层次,根据右心室大小和是否伴有右心室依赖性冠脉循环,接受单独的、部分的双心室或全部的双心室修补,全部存活率为98%,并积累了许多经导管治疗的经验。 True: >症状: 存活(57, 59); >症状_程度: 部分(39, 41); >部位: 右心室(12, 15); 右心室(22, 25); 冠脉(28, 30); ,(32, 33); 双心室(42, 45); >检查: 双心室修补(49, 54); 治疗(73, 75); >预后: 98(61, 62); %(62, 63); >器材: 导管(71, 73);
Pred: >症状: 存活(57, 59); >症状_程度: 部分(39, 41); >部位: ,(9, 10); 右心室(12, 15); 右心室(22, 25); 冠脉(28, 30); 双心室(42, 45); >检查: 双心室修补(49, 54); 治疗(73, 75); >预后: 98(61, 62); %(62, 63); >器材: 导管(71, 73);

Sent: 晚近香港大学神经外科专家创用脑室-上矢状窦分流术(吻合术),可避免其他分流术的缺点,交通性和非交通性脑积水病例均可采用。 True: >部位: 其他(34, 36); >检查: 脑室-上矢状窦分流术(15, 25); 吻合术(26, 29); 分流术(36, 39); >诊断: 交通性和非交通性脑积水(43, 54); >科室: 神经外科(7, 11);
Pred: >部位: 神经(7, 9); 其他(34, 36); 分流(36, 38); >检查: 脑室-上矢状(15, 21); >诊断: 交通性和非交通性脑积水(43, 54); >治疗: 吻合术(26, 29); >科室: 外科(9, 11);

Sent: 早产@胎儿的呼吸运动消失亦提示分娩风险增加。早产@###未足月胎膜早破(pprom)未足月胎膜早破(pprom)是一个临床诊断,基于阴道流液史,消毒窥器在后穹隆看到羊水池则可进一步明确诊断。 True: >症状: 增加(20, 22); >病史: 胎儿的呼吸运动消失(4, 13); >部位: 提示(14, 16); 胎(32, 33); 阴道(63, 65); 羊水(79, 81); >检查: 诊断(58, 60); 消毒(69, 71); 诊断(89, 91); >诊断: 早产(1, 3); 早产(23, 25); pp(37, 38); ro(38, 39); m(39, 40); pp(49, 50); ro(50, 51); m(51, 52); >治疗: 分娩(16, 18); >科室: 临床(56, 58);
Pred: >症状: 消失(11, 13); 增加(20, 22); >病史: 运动(9, 11); >部位: 提示(14, 16); 阴道(63, 65); 羊水(79, 81); >检查: 呼吸(7, 9); 诊断(58, 60); 消毒(69, 71); 诊断(89, 91); >诊断: 早产(1, 3); 早产(23, 25); 未足月胎膜早破(29, 36); pp(37, 38); ro(38, 39); m(39, 40); pp(49, 50); ro(50, 51); m(51, 52); >治疗: 分娩(16, 18); >人群: 胎儿(4, 6); >科室: 临床(56, 58);

Sent: 病情描述(发病时间、主要症状等):一星期前感冒了有点咳嗽,后来严重了吃了急支糖浆没效...还有就是喉咙也疼,感觉有什么东西堵着。前天下楼梯滑几个台阶,应该没关系吧。 True: >症状: 咳嗽(27, 29); >症状_程度: 严重(32, 34); >部位: 病(7, 8); 喉咙(50, 52); ,(75, 76); >诊断: 感冒(22, 24); >药物: 急支糖浆(37, 41);
Pred: >症状: 咳嗽(27, 29); >症状_程度: 严重(32, 34); >部位: ,(29, 30); 喉咙(50, 52); >诊断: 感冒(22, 24); >药物: 急支糖浆(37, 41); >时间: 前天(65, 67);

Sent: 甲状腺癌@*随访过程中最重要的是临床查体和甲状腺球蛋白测定。甲状腺癌@甲状腺球蛋白升高提示可能存在肿瘤复发,多数发生在颈中部或侧颈部。 True: >症状: 升高(42, 44); >部位: 甲状腺球蛋白(22, 28); 甲状腺(36, 39); 蛋白(40, 42); 提示(44, 46); 颈部(65, 67); >检查: 随访(7, 9); 查体(19, 21); >诊断: 腺癌(3, 5); 腺癌(33, 35); 肿瘤复发(50, 54); >科室: 临床(17, 19);
Pred: >部位: 甲状腺(36, 39); 蛋白(40, 42); 提示(44, 46); 部或侧颈部(62, 67); >检查: 随访(7, 9); 查体(19, 21); 甲状腺球蛋白测定(22, 30); >诊断: 腺癌(3, 5); 腺癌(33, 35); 肿瘤(50, 52); >预后: 复发(52, 54); >科室: 临床(17, 19);

Sent: 早产儿应适当早期添加维生素a。 True: >诊断: 早产(1, 3); >药物: 维生素a(11, 15); >其他: 早期(7, 9);
Pred: >诊断: 早产(1, 3); >药物: 维生素a(11, 15); >其他: 早期(7, 9);

Sent: 约2/3患者伴有肺部病变,症状轻重不等。 True: >症状: 肺部病变(9, 13);
Pred: >症状: 肺部病变(9, 13);

Sent: 因此对常规检查不能确诊的患者可采用rflp,达到早期诊断的目的。 True: >检查: 常规检查(4, 8); rf(18, 19); lp(19, 20); 诊断(25, 27); >其他: 早期(23, 25);
Pred: >检查: 常规检查(4, 8); rf(18, 19); lp(19, 20); 诊断(25, 27); >其他: 早期(23, 25);



<br>

## References
* **code**: the original BERT-related codes are from [bert_cn_finetune](https://github.com/ewrfcas/bert_cn_finetune) project of [ewrfcas](https://github.com/ewrfcas) and [transformers](https://github.com/huggingface/transformers) project of [Hugging Face](https://github.com/huggingface). <br>
* **extended learning**: 
  - [awesome_Chinese_medical_NLP](https://github.com/GanjinZero/awesome_Chinese_medical_NLP)
  - [Medical-Names-Corpus](https://github.com/wainshine/Medical-Names-Corpus)
  - [CBLUE](https://github.com/CBLUEbenchmark/CBLUE)
  - [TCM-NER](http://openkg.cn/dataset/tcm-ner): [开源开放 | 中药说明书实体识别数据集TCM-NER](https://mp.weixin.qq.com/s/VL3mtIZk7Rg5Mjds-Xh6bQ)
  - [医疗文本结构化:一种新视角](https://mp.weixin.qq.com/s/XN6AlHPumyRbR1OzCUYouQ)

<br>

<img src="https://github.com/Schlampig/Knowledge_Graph_Wander/blob/master/content/daily_ai_paper_view.png" height=25% width=25% />