TianRanPig / chinese_ner

中文命名实体识别:BERT-BiLSTM-CRF模型实现中文,数据集使用CLUENER2020
52 stars 9 forks source link

BERT-BiLSTM-CRF模型

【简介】使用谷歌的BERT模型在BiLSTM-CRF模型上进行预训练用于中文命名实体识别

项目结构

|-- chinese_ner
    |-- torch_ner
        |-- data                                    ---ClUENER数据集
        |   |-- clue2bioes.py                       ---将json格式数据转为bioes数据格式
        |   |-- dev.json                            ---验证集(json格式)
        |   |-- test.json                           ---测试集(json格式)
        |   |-- train.json                          ---训练集(json格式)
        |   |-- result                              ---放置bioes格式数据
        |   |   |-- cluener.dev.bioes               ---验证集
        |   |   |-- cluener.test.bioes              ---测试集
        |   |   |-- cluener.train.bioes             ---训练集
        |-- output                                  ---模型、日志信息等
        |   |-- 20220417160929                      ---bert预训练模型和自己训练好的NER模型
        |   |   |-- eval                            ---模型结果,包括F1值、准确率、召回率
        |   |-- logs                                ---输出日志
        |-- source                                  ---源代码
        |   |-- config.py                           ---项目配置、模型参数
        |   |-- conlleval.py                        ---模型验证工具(在训练过程中调用)
        |   |-- logger.py                           ---项目日志配置
        |   |-- models.py                           ---bert_bilstm_crf模型的torch实现
        |   |-- ner_main.py                         ---训练主模块,包括训练、保存模型、模型验证
        |   |-- ner_predict.py                      ---使用模型进行命名实体识别
        |   |-- ner_processor.py                    ---数据预处理
        |   |-- utils.py                            ---工具包
        |-- NER_GUI.py                              ---中文命名实体识别图形化界面

数据集

CLUENER2020数据集

训练集:10748
验证集:1343
测试集:1345

标签类别:地址(address),书名(book),公司(company),游戏(game),政府(goverment),电影(movie),姓名(name),组织机构(organization),职位(position),景点(scene)

CLUENER2020下载链接:数据下载

例子:

{"text": "浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,", "label": {"name": {"叶老桂": [[9, 11]]}, "company": {"浙商银行": [[0, 3]]}}}

原始数据格式为json格式,需要将其转为bioes格式的数据,转换后的数据格式如下:

浙 B-company
商 I-company
银 I-company
行 E-company
企 O
业 O
信 O
贷 O
部 O
叶 B-name
老 I-name
桂 E-name
博 O
士 O
...

运行环境

torch==1.8.0
pytorch_crf==0.7.2
numpy==1.17.0
transformers==4.9.0
tqdm==4.62.0
PyYAML==5.4.1
tensorboardX==2.4
tensorboard==2.8.0

使用方法

如果显存够大,可以改为self.gradient_accumulation_steps=1self.train_batch_size=16