🚀 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問題跟蹤器 中提交問題。