Huấn luyện một mô hình NER hiện có
Một mô hình spaCy có thể không hoạt động tốt trên một tập dữ liệu nhất định. Một cách giải quyết là huấn luyện mô hình trên dữ liệu của bạn. Trong bài tập này, bạn sẽ thực hành huấn luyện một mô hình NER để cải thiện hiệu quả dự đoán.
Mô hình spaCy en_core_web_sm có sẵn dưới tên nlp hiện chưa thể dự đoán đúng house là một thực thể trong chuỗi test.
Với training_data đã cho, hãy viết các bước để cập nhật mô hình này khi lặp qua dữ liệu hai lần. Các pipeline khác đã được vô hiệu hóa và optimizer cũng đã sẵn sàng sử dụng. Số epoch đã được đặt là 2.
Bài tập này là một phần của khóa học
Xử lý ngôn ngữ tự nhiên với spaCy
Hướng dẫn bài tập
- Sử dụng đối tượng
optimizervà với mỗi epoch, hãy xáo trộn tập dữ liệu bằng góirandomvà tạo đối tượngExample. - Cập nhật mô hình
nlpbằng thuộc tính.updatevà đặt tham sốsgdđể sử dụng optimizer.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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])