Views
No views yet
| tag | meaning |
|---|---|
| PER | person name |
| LOC | location name |
| ORG | organization name |
| MISC | other name |
pip install flair)1from flair.data import Sentence
2from flair.models import SequenceTagger
3
4# load tagger
5tagger = SequenceTagger.load("flair/ner-german-large")
6
7# make example sentence
8sentence = Sentence("George Washington ging nach Washington")
9
10# predict NER tags
11tagger.predict(sentence)
12
13# print sentence
14print(sentence)
15
16# print predicted NER spans
17print('The following NER tags are found:')
18# iterate over entities and print
19for entity in sentence.get_spans('ner'):
20 print(entity)
21Span [1,2]: "George Washington" [− Labels: PER (1.0)]
Span [5]: "Washington" [− Labels: LOC (1.0)]1import torch
2
3# 1. get the corpus
4from flair.datasets import CONLL_03_GERMAN
5
6corpus = CONLL_03_GERMAN()
7
8# 2. what tag do we want to predict?
9tag_type = 'ner'
10
11# 3. make the tag dictionary from the corpus
12tag_dictionary = corpus.make_tag_dictionary(tag_type=tag_type)
13
14# 4. initialize fine-tuneable transformer embeddings WITH document context
15from flair.embeddings import TransformerWordEmbeddings
16
17embeddings = TransformerWordEmbeddings(
18 model='xlm-roberta-large',
19 layers="-1",
20 subtoken_pooling="first",
21 fine_tune=True,
22 use_context=True,
23)
24
25# 5. initialize bare-bones sequence tagger (no CRF, no RNN, no reprojection)
26from flair.models import SequenceTagger
27
28tagger = SequenceTagger(
29 hidden_size=256,
30 embeddings=embeddings,
31 tag_dictionary=tag_dictionary,
32 tag_type='ner',
33 use_crf=False,
34 use_rnn=False,
35 reproject_embeddings=False,
36)
37
38# 6. initialize trainer with AdamW optimizer
39from flair.trainers import ModelTrainer
40
41trainer = ModelTrainer(tagger, corpus, optimizer=torch.optim.AdamW)
42
43# 7. run training with XLM parameters (20 epochs, small LR)
44from torch.optim.lr_scheduler import OneCycleLR
45
46trainer.train('resources/taggers/ner-german-large',
47 learning_rate=5.0e-6,
48 mini_batch_size=4,
49 mini_batch_chunk_size=1,
50 max_epochs=20,
51 scheduler=OneCycleLR,
52 embeddings_storage_mode='none',
53 weight_decay=0.,
54 )
55
56)@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}
}