Mevcut bir NER modelini eğit
Bir spaCy modeli, verilen bir veri üzerinde iyi çalışmayabilir. Çözüm yollarından biri, modeli kendi verimiz üzerinde eğitmektir. Bu egzersizde, bir NER modelini eğiterek tahmin performansını iyileştirmeyi pratik edeceksin.
nlp olarak erişebileceğin bir spaCy en_core_web_sm modeli var ve bu model test dizesinde house öğesini bir varlık olarak doğru şekilde tahmin edemiyor.
Verilen training_data ile, verinin üzerinden iki kez geçerek bu modeli güncelleme adımlarını yaz. Diğer işlem hatları (pipelines) zaten devre dışı bırakıldı ve optimizer kullanıma hazır. Epoch sayısı da 2 olarak ayarlandı.
Bu egzersiz
spaCy ile Natural Language Processing
kursunun bir parçasıdırEgzersiz talimatları
optimizernesnesini kullan ve her epoch için veri kümesinirandompaketiyle karıştırarak birExamplenesnesi oluştur.nlpmodelini.updateözelliğiyle güncelle vesgdargümanlarını optimizer'ı kullanacak şekilde ayarla.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
nlp = spacy.load("en_core_web_sm")
print("Before training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']
nlp.disable_pipes(*other_pipes)
optimizer = nlp.create_optimizer()
# Shuffle training data and the dataset using random package per epoch
for i in range(epochs):
random.____(training_data)
for text, ____ in training_data:
doc = nlp.____(____)
# Update nlp model after setting sgd argument to optimizer
example = Example.____(____, ____)
nlp.____([____], sgd = ____)
print("After training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])