Skip to content

Named Entity Recognition for Chinese Drug Instructions

Notifications You must be signed in to change notification settings

sxwee/BERT_BiLSTM_CRF_NER

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
“lw”
Mar 30, 2022
138785c · Mar 30, 2022

History

14 Commits
Jun 9, 2021
May 13, 2021
May 13, 2021
Mar 30, 2022
May 13, 2021
May 13, 2021
May 13, 2021
May 13, 2021
May 13, 2021
May 13, 2021
May 13, 2021
May 13, 2021
May 13, 2021
May 13, 2021
May 13, 2021
Jun 9, 2021

Repository files navigation

BERT_BiLSTM_CRF_NER

项目简介:该项目用BERT预训练模型+双向长短期记忆网络+条件随机场(BERT-BiLSTM-CRF)对中文医药说明书进行命名实体识别。

环境要求

Python版本:3.6.11

深度学习框架:Pytorch-1.7.0

依赖库及其版本

依赖库 版本
matplotlib 3.3.2
pandas 1.1.4
numpy 1.19.3
transformers 4.5.1
tqdm 4.49.0

相关文件下载

BERT模型:下载地址,提取码:kgap,备注:下载后解压放入bert_model目录下

Word2Vec和Glove词嵌入:下载地址,提取码:6xt0,备注:下载后解压放入datas目录下

原始数据集:下载地址,提取码:gn5q,备注:下载后解压放入datas目录下

使用方法

数据集预处理

数据集是使用Brat标注工具标注得来的,首先运行data_processing.py文件进行数据集的预处理,主要进行数据集的划分,BIO序列文件的获取。

模型训练

本项目实现了EmbeddingBiLSTMCRFBertBiLSTMCRFBertIDCNNCRF三个模型。其中EmbeddingBiLSTMCRF是指使用常规词嵌入+BiLSTM+CRF,其中常规词嵌入包括nn.Embedding层随机初始化的词嵌入或训练好的Word2Vec/Glove词嵌入。BertBiLSTMCRF是指使用Bert词嵌入+BiLSTM+CRF。而BertIDCNNCRF是指Bert词嵌入+IDCNN+CRF,其中IDCNN为自膨胀卷积模块。

默认开启BertBiLSTMCRF模型的训练,运行命令如下(后续的参数可根据自己的实际情况进行更改,也可以不进行改进按照args.py中的默认参数运行):

python main.py	--trainset  datas/processed/train.txt \
		--validset  datas/processed/val.txt \
    		--pretrained_path  bert_model/chinese_L-12_H-768_A-12 \
        	--model model_name BertBiLSTMCRF \
            	--isBERT True \
            	--extra_embedding False \
                --embedding_path datas/word2vec.bin \
                --dropout_prob 0.5 \
                --batch_size 64 \
                --lr 0.001

参数说明:

  • trainset:训练集的路径
  • validset:验证集的路径
  • pretrained_path:bert模型的路径
  • model:模型名,['EmbeddingBiLSTMCRF', 'BertBiLSTMCRF', 'BertIDCNNCRF']
  • isBERT:布尔值,True表示使用Bert模型来加载序列数据,False表示采用常规词嵌入的方式来加载序列数据
  • extra_embedding:布尔值,True表示使用外部词嵌入,False表示直接使用nn.Embedding随机初始化生成的词嵌入
  • embedding_path:外部词嵌入的加载路径,前提是extra_embedding为True,可加载Word2Vec词嵌入和Glove词嵌入
  • dropout_prob:设置dropout率,范围[0,1]
  • batch_size:数据批大小
  • lr:学习率

模型评估

打开test.py文件,设置model_path的值,即训练好的模型的路径,然后运行下面命令即可:

python test.py 	--testset datas/processed/test.txt \
		--model BiLSTMCRF

参数说明:

  • testset:测试集的路径

系统实现

GUI版系统

本项目还实现了一个基于Tkinter的用户交互界面,通过该界面可以导入文档或用户进行输入,识别完成后还能进行可视化展示,最终还能导出识别的命名实体集,打开GUI界面的运行命令:

python gui.py

备注:运行命名后面的参数也可先做args.py中设置好,然后直接运行相应的脚本即可。

Django版系统

本项目基于Django-3.2.3实现了一个基于BERT-BiLSTM-CRF算法模型的命名实体识别系统,系统源码参见cmners文件夹,进入系统后,按照说明的markdown文档的指示下载好相应的模型,然后运行下列命令启动系统:

python manage.py runserver

然后在浏览器中输入下列的URL即可看到系统的页面:

http://127.0.0.1/ner/system/

About

Named Entity Recognition for Chinese Drug Instructions

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published