喜欢本项目的话,欢迎点击右上角的star,感谢每一个点赞的你。
本项目的模型参考苏剑林的文章GlobalPointer:用统一的方式处理嵌套和非嵌套NER,并用Pytorch实现。
GlobalPointer的设计思路与TPLinker-NER类似,但在实现方式上不同。具体体现在:
- 加性乘性Attention
TPLinker在Multi-Head上用的是加性Attention:
而GlobalPointer用的是乘性Attention:
- 位置编码
GlobalPointer在模型中还加入了一种旋转式位置编码RoPE。这是一种“通过绝对位置编码的方式实现相对位置编码”,在本模型中效果明显。
本次实验进行时Python版本为3.6,其他主要的第三方库包括:
- pytorch==1.8.1
- wandb==0.10.26 #for logging the result
- transformers==4.1.1
- tqdm==4.54.1
请下载Bert的中文预训练模型bert-base-chinese存放至 pretrained_models/
,并在config.py中配置正确的bert_path
python train.py
python evaluate.py
默认配置(超参数已在 config.py
文件中),数据集是 CLUENER
- 验证集 Best F1:0.7966