Latih model NER yang sudah ada
Sebuah model spaCy mungkin tidak bekerja dengan baik pada data tertentu. Salah satu solusinya adalah melatih model pada data kita sendiri. Pada latihan ini, Anda akan berlatih melatih model NER untuk meningkatkan kinerja prediksinya.
Model spaCy en_core_web_sm yang dapat diakses sebagai nlp tidak mampu memprediksi house sebagai entitas dengan benar pada string test.
Dengan training_data yang diberikan, tuliskan langkah-langkah untuk memperbarui model ini sambil melakukan iterasi melalui data sebanyak dua kali. Pipeline lainnya sudah dinonaktifkan dan optimizer juga sudah siap digunakan. Jumlah epoch sudah ditetapkan menjadi 2.
Latihan ini adalah bagian dari kursus
Pemrosesan Bahasa Alami dengan spaCy
Petunjuk latihan
- Gunakan objek
optimizerdan untuk setiap epoch, acak himpunan data menggunakan paketrandomdan buat objekExample. - Perbarui model
nlpmenggunakan atribut.updatedan atur argumensgduntuk menggunakan optimizer tersebut.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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])