lodash 中文文档 lodash 中文文档
英文官网 (opens new window)
GitHub (opens new window)
英文官网 (opens new window)
GitHub (opens new window)
  • 简介
  • 数组
  • 集合
  • 函数
  • 语言
  • 数学
  • 数字
  • 对象
  • Seq
  • 字符串
  • 实用函数
  • Properties

CMeKG 工具 代码及模型


Index


CMeKG工具
模型下载

依赖库
模型使用
关系抽取
医学实体识别
医学文本分词

cmekg工具


CMeKG网站

中文医学知识图谱CMeKG CMeKG(Chinese Medical Knowledge Graph)是利用自然语言处理与文本挖掘技术,基于大规模医学文本数据,以人机结合的方式研发的中文医学知识图谱。

CMeKG 中主要模型工具包括 医学文本分词,医学实体识别和医学关系抽取。这里是三种工具的代码、模型和使用方法。

模型下载


由于依赖和训练好的的模型较大,将模型放到了百度网盘中,链接如下,按需下载。

RE:链接:https://pan.baidu.com/s/1cIse6JO2H78heXu7DNewmg 密码:4s6k

NER: 链接:https://pan.baidu.com/s/16TPSMtHean3u9dJSXF9mTw 密码:shwh

分词:链接:https://pan.baidu.com/s/1bU3QoaGs2IxI34WBx7ibMQ 密码:yhek

依赖库


json
random
numpy
torch
transformers
gc
re
time
tqdm

模型使用


医学关系抽取


依赖文件

pytorch_model.bin : 医学文本预训练的 BERT-base model
vocab.txt
config.json
model_re.pkl: 训练好的关系抽取模型文件,包含了模型参数、优化器参数等
predicate.json

使用方法

配置参数在medical_re.py的class config里,首先在medical_re.py的class config里修改各个文件路径

训练

  1. ``` python
  2. import medical_re
  3. medical_re.load_schema()
  4. medical_re.run_train()
  5. ```

model_re/train_example.json 是训练文件示例

使用

  1. ``` python
  2. import medical_re
  3. medical_re.load_schema()
  4. model4s, model4po = medical_re.load_model()

  5. text = '据报道称,新冠肺炎患者经常会发热、咳嗽,少部分患者会胸闷、乏力,其病因包括: 1.自身免疫系统缺陷\n2.人传人。'  # content是输入的一段文字
  6. res = medical_re.get_triples(text, model4s, model4po)
  7. print(json.dumps(res, ensure_ascii=False, indent=True))
  8. ```

执行结果

  1. ``` sh
  2. [
  3. {
  4.   "text": "据报道称,新冠肺炎患者经常会发热、咳嗽,少部分患者会胸闷、=乏力,其病因包括: 1.自身免疫系统缺陷\n2.人传人",
  5.   "triples": [
  6.    [
  7.     "新冠肺炎",
  8.     "临床表现",
  9.     "肺炎"
  10.    ],
  11.    [
  12.     "新冠肺炎",
  13.     "临床表现",
  14.     "发热"
  15.    ],
  16.    [
  17.     "新冠肺炎",
  18.     "临床表现",
  19.     "咳嗽"
  20.    ],
  21.    [
  22.     "新冠肺炎",
  23.     "临床表现",
  24.     "胸闷"
  25.    ],
  26.    [
  27.     "新冠肺炎",
  28.     "临床表现",
  29.     "乏力"
  30.    ],
  31.    [
  32.     "新冠肺炎",
  33.     "病因",
  34.     "自身免疫系统缺陷"
  35.    ],
  36.    [
  37.     "新冠肺炎",
  38.     "病因",
  39.     "人传人"
  40.    ]
  41.   ]
  42. }
  43. ]

  44. ```

医学实体识别


调整的参数和模型在ner_constant.py中

训练

python3 train_ner.py

使用示例

medical_ner 类提供两个接口测试函数

predict_sentence(sentence): 测试单个句子,返回:{"实体类别":“实体”},不同实体以逗号隔开
predict_file(input_file, output_file): 测试整个文件 文件格式每行待提取实体的句子和提取出的实体{"实体类别":“实体”},不同实体以逗号隔开

  1. ``` python
  2. from run import medical_ner

  3. #使用工具运行
  4. my_pred=medical_ner()
  5. #根据提示输入单句:“高血压病人不可食用阿莫西林等药物”
  6. sentence=input("输入需要测试的句子:")
  7. my_pred.predict_sentence("".join(sentence.split()))

  8. #输入文件(测试文件,输出文件)
  9. my_pred.predict_file("my_test.txt","outt.txt")
  10. ```

医学文本分词


调整的参数和模型在cws_constant.py中

训练

python3 train_cws.py

使用示例

medical_cws 类提供两个接口测试函数

predict_sentence(sentence): 测试单个句子,返回:{"实体类别":“实体”},不同实体以逗号隔开
predict_file(input_file, output_file): 测试整个文件 文件格式每行待提取实体的句子和提取出的实体{"实体类别":“实体”},不同实体以逗号隔开

  1. ``` python
  2. from run import medical_cws

  3. #使用工具运行
  4. my_pred=medical_cws()
  5. #根据提示输入单句:“高血压病人不可食用阿莫西林等药物”
  6. sentence=input("输入需要测试的句子:")
  7. my_pred.predict_sentence("".join(sentence.split()))

  8. #输入文件(测试文件,输出文件)
  9. my_pred.predict_file("my_test.txt","outt.txt")
  10. ```
Last Updated: 2023-06-16 08:32:57