File size: 1,256 Bytes
da88570 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import json
import random
import spacy
from spacy.training.example import Example
# Lade das deutsche Basismodell
nlp = spacy.load("de_core_news_sm")
with open('../annotations.json', encoding='utf-8') as f:
TRAINING_DATA = json.load(f)
# Wenn das Modell keine benutzerdefinierten Entitäten hat, füge die Entitätenerkennung hinzu
if "ner" not in nlp.pipe_names:
ner = nlp.create_pipe("ner")
nlp.add_pipe("ner", last=True)
else:
ner = nlp.get_pipe("ner")
# Füge die Entitäten hinzu
ner.add_label("START_DATE")
ner.add_label("END_DATE")
ner.add_label("DATE")
ner.add_label("OTHER")
# Trainingsdaten in Beispiele umwandeln
examples = []
for text, annotations in TRAINING_DATA:
doc = nlp.make_doc(text)
example = Example.from_dict(doc, annotations)
examples.append(example)
# Beginne mit dem Training
optimizer = nlp.begin_training()
for epoch in range(30): # Anzahl der Epochen
print(f"Epoch {epoch + 1}")
losses = {}
# Shuffle und trainiere das Modell mit den Beispielen
random.shuffle(examples)
# Trainiere mit den Beispielen
for example in examples:
nlp.update([example], drop=0.5, losses=losses)
print(losses)
# Speichere das trainierte Modell
nlp.to_disk("models/date_model")
|