ฝึกโมเดล spaCy จากศูนย์
spaCy มีแนวทางที่สะอาดและมีประสิทธิภาพสูงสำหรับการฝึกโมเดลของคุณเอง ในแบบฝึกหัดนี้ จะฝึกโมเดล NER จากศูนย์บน corpus จริง (ข้อมูล CORD-19)
ข้อมูลสำหรับการฝึกมีให้ในรูปแบบที่ถูกต้องแล้วในตัวแปร training_data ในแบบฝึกหัดนี้ จะใช้รายการ label ที่กำหนดไว้ ("Pathogen", "MedicalCondition", "Medicine") ซึ่งเก็บอยู่ใน labels โดยใช้โมเดลภาษาอังกฤษเปล่า (nlp) ที่มี NER component จากนั้นจะเพิ่ม labels ทางการแพทย์ที่ต้องการเข้าไปใน NER pipeline แล้วฝึกโมเดลเป็นเวลา 1 epoch สามารถใช้คลาส Example ที่ import ไว้แล้วในการแปลงข้อมูลสำหรับการฝึกให้อยู่ในรูปแบบที่ต้องการ และเพิ่มรายการ losses เข้าไปในเมธอด .update() เพื่อติดตามการฝึกโมเดลและตรวจสอบค่า training loss ได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การประมวลผลภาษาธรรมชาติด้วย spaCy
คำแนะนำการฝึกหัด
- สร้างโมเดล spaCy เปล่าและเพิ่ม NER component เข้าไปในโมเดล
- ปิดการใช้งาน pipeline component อื่น ๆ ใช้ออบเจกต์
optimizerที่สร้างไว้ และอัปเดตค่าน้ำหนักของโมเดลโดยใช้ข้อมูลที่แปลงเป็นรูปแบบExampleแล้ว
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Load a blank English model, add NER component, add given labels to the ner pipeline
nlp = spacy.____("____")
ner = nlp.____("ner")
for ent in labels:
ner.add_label(ent)
# Disable other pipeline components, complete training loop and run training loop
other_pipes = [____ for pipe in nlp.____ if ____ != "____"]
nlp.disable_pipes(*____)
losses = {}
optimizer = nlp.begin_training()
for text, annotation in training_data:
doc = nlp.____(text)
example = Example.____(doc, annotation)
nlp.____([example], sgd=____, losses=losses)
print(losses)