🚀 Flair西班牙语命名实体识别(大模型)
本项目提供了一个用于西班牙语的大型4类命名实体识别(NER)模型,该模型基于 Flair 框架构建。它能够准确识别西班牙语文本中的人名、地名、组织机构名和其他类型的实体,F1分数达到了 90.54(基于CoNLL - 03西班牙语数据集),为西班牙语的信息提取和文本分析提供了强大的支持。
🚀 快速开始
本模型基于Flair框架,使用前请确保已经安装Flair库。你可以通过以下命令进行安装:
pip install flair
✨ 主要特性
- 高准确率:在CoNLL - 03西班牙语数据集上,F1分数达到了 90.54,能够准确识别西班牙语文本中的各类实体。
- 4类实体识别:可以识别4种类型的命名实体,包括人名(PER)、地名(LOC)、组织机构名(ORG)和其他类型(MISC)。
- 基于文档级嵌入:采用了XLM - R的文档级嵌入和 FLERT 技术,能够更好地捕捉文本的上下文信息。
属性 |
详情 |
模型类型 |
用于西班牙语的4类命名实体识别模型 |
训练数据 |
CoNLL - 03西班牙语数据集 |
💻 使用示例
基础用法
以下是一个简单的示例,展示了如何使用该模型进行命名实体识别:
from flair.data import Sentence
from flair.models import SequenceTagger
tagger = SequenceTagger.load("flair/ner-spanish-large")
sentence = Sentence("George Washington fue a Washington")
tagger.predict(sentence)
print(sentence)
print('The following NER tags are found:')
for entity in sentence.get_spans('ner'):
print(entity)
此代码将产生以下输出:
Span [1,2]: "George Washington" [− Labels: PER (1.0)]
Span [5]: "Washington" [− Labels: LOC (1.0)]
在句子 "George Washington fue a Washington" 中,模型成功识别出了实体 "George Washington"(标记为 人名)和 "Washington"(标记为 地名)。
🔧 技术细节
本模型的训练过程基于Flair框架,具体步骤如下:
- 获取语料库:使用CoNLL - 03西班牙语数据集作为训练数据。
- 确定标签类型:要预测的标签类型为
ner
。
- 创建标签字典:从语料库中生成标签字典。
- 初始化嵌入层:使用
TransformerWordEmbeddings
初始化可微调的XLM - Roberta大模型嵌入,并结合文档上下文信息。
- 初始化序列标签器:使用
SequenceTagger
初始化一个简单的序列标签器,不使用CRF、RNN和重投影。
- 初始化训练器:使用
AdamW
优化器初始化训练器。
- 运行训练:设置训练参数,如学习率、批次大小、训练轮数等,进行模型训练。
以下是训练该模型的完整代码:
import torch
from flair.datasets import CONLL_03_SPANISH
corpus = CONLL_03_SPANISH()
tag_type = 'ner'
tag_dictionary = corpus.make_tag_dictionary(tag_type=tag_type)
from flair.embeddings import TransformerWordEmbeddings
embeddings = TransformerWordEmbeddings(
model='xlm-roberta-large',
layers="-1",
subtoken_pooling="first",
fine_tune=True,
use_context=True,
)
from flair.models import SequenceTagger
tagger = SequenceTagger(
hidden_size=256,
embeddings=embeddings,
tag_dictionary=tag_dictionary,
tag_type='ner',
use_crf=False,
use_rnn=False,
reproject_embeddings=False,
)
from flair.trainers import ModelTrainer
trainer = ModelTrainer(tagger, corpus, optimizer=torch.optim.AdamW)
from torch.optim.lr_scheduler import OneCycleLR
trainer.train('resources/taggers/ner-spanish-large',
learning_rate=5.0e-6,
mini_batch_size=4,
mini_batch_chunk_size=1,
max_epochs=20,
scheduler=OneCycleLR,
embeddings_storage_mode='none',
weight_decay=0.,
)
📄 许可证
文档中未提及相关许可证信息。
📚 详细文档
引用
使用此模型时,请引用以下论文:
@misc{schweter2020flert,
title={FLERT: Document-Level Features for Named Entity Recognition},
author={Stefan Schweter and Alan Akbik},
year={2020},
eprint={2011.06993},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
问题反馈
如果你在使用过程中遇到问题,可以在 Flair问题跟踪器 中提交问题。