Skip to content

taishan1994/pytorch_TPLinker_Plus_Ner

Repository files navigation

pytorch_TPLinker_Plus_Ner

基于pytorch的TPLinker_plus进行中文命名实体识别。

还是和之前其它几种实体识别方式相同的代码模板,这里稍微做了一些修改,主要是在数据加载方面。之前都是预先处理好所有需要的数据保存好,由于tplinker需要更多内存,这里使用DataLoader中的collate_fn对每一批的数据分别进行操作,可以大大减少内存的使用。模型主要是来自这里:tplinker_plus,需要额外了解的知识有:基于Conditional Layer Normalization的条件文本生成 - 科学空间|Scientific Spaces将“softmax+交叉熵”推广到多标签分类问题 - 科学空间|Scientific Spaces。实现运行步骤如下:

  • 1、在raw_data下新建一个process.py将数据处理成mid_data下的格式。
  • 2、修改部分参数运行main.py,以进行训练、验证、测试和预测。

模型及数据下载地址:链接:https://pan.baidu.com/s/1B-e-MV1lOMQj2ur5MADRww?pwd=he3e 提取码:he3e

依赖

pytorch==1.6.0
tensorboasX
seqeval
pytorch-crf==0.7.2
transformers==4.4.0

运行

在16GB的显存下都只能以batch_size=2进行运行。。。

python main.py \
--bert_dir="model_hub/chinese-bert-wwm-ext/" \
--data_dir="./data/cner/" \
--log_dir="./logs/" \
--output_dir="./checkpoints/" \
--num_tags=8 \
--seed=123 \
--gpu_ids="0" \
--max_seq_len=150 \
--lr=3e-5 \
--other_lr=3e-4 \
--train_batch_size=2 \
--train_epochs=1 \
--eval_batch_size=8 \
--max_grad_norm=1 \
--warmup_proportion=0.1 \
--adam_epsilon=1e-8 \
--weight_decay=0.01 \
--dropout_prob=0.3 \

结果

precision:0.8806 recall:0.8999 micro_f1:0.8901
          precision    recall  f1-score   support

   TITLE       0.87      0.88      0.87       767
    RACE       0.88      0.93      0.90        15
    CONT       1.00      1.00      1.00        33
     ORG       0.89      0.90      0.89       543
    NAME       0.99      1.00      1.00       110
     EDU       0.82      0.94      0.88       109
     PRO       0.67      0.95      0.78        19
     LOC       1.00      1.00      1.00         2

micro-f1       0.88      0.90      0.89      1598

虞兔良先生1963年12月出生汉族中国国籍无境外永久居留权浙江绍兴人中共党员MBA经济师。
{'TITLE': [['中共党员', 41], ['经济师', 50]], 'RACE': [['汉族', 18]], 'CONT': [['中国国籍', 21]], 'NAME': [['虞兔良', 1]], 'EDU': [['MBA', 46]], 'LOC': [['浙江绍兴人', 35]]}

延申

About

基于pytorch的TPLinker_plus进行中文命名实体识别

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages