การฝึกด้วย spaCy

การประมวลผลภาษาธรรมชาติด้วย spaCy

Azadeh Mobasher

Principal Data Scientist

ขั้นตอนการฝึก

 

  1. ระบุ Annotation และเตรียมข้อมูล Input
  2. ปิดใช้งาน Pipeline Component อื่น
  3. ฝึกโมเดลหลายรอบ
  4. ประเมินประสิทธิภาพของโมเดล
การประมวลผลภาษาธรรมชาติด้วย spaCy

การปิดใช้งาน Pipeline Component อื่น

 

  • ปิดใช้งาน Pipeline Component ทั้งหมด ยกเว้น NER:

 

other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']

nlp.disable_pipes(*other_pipes)
การประมวลผลภาษาธรรมชาติด้วย spaCy

ขั้นตอนการฝึกโมเดล

  • วนซ้ำชุดข้อมูลฝึกหลายครั้ง แต่ละรอบเรียกว่า epoch
  • ในแต่ละ Epoch ให้อัปเดตค่า Weight ของโมเดลทีละน้อย
  • Optimizer ทำหน้าที่อัปเดต Weight ของโมเดล
optimizer = nlp.create_optimizer()
losses = {}
for i in range(epochs):
  random.shuffle(training_data)

for text, annotation in training_data: doc = nlp.make_doc(text) example = Example.from_dict(doc, annotation)
nlp.update([example], sgd = optimizer, losses=losses)
การประมวลผลภาษาธรรมชาติด้วย spaCy

บันทึกและโหลดโมเดลที่ฝึกแล้ว

 

  • บันทึกโมเดล NER ที่ฝึกแล้ว:
ner = nlp.get_pipe("ner")
ner.to_disk("<ner model name>")
  • โหลดโมเดลที่บันทึกไว้:
    ner = nlp.create_pipe("ner")
    ner.from_disk("<ner model name>")
    nlp.add_pipe(ner, "<ner model name>")
    
การประมวลผลภาษาธรรมชาติด้วย spaCy

การใช้โมเดลสำหรับ Inference

 

  • นำโมเดลที่บันทึกไว้มาใช้ในขั้นตอน Inference

 

  • ใช้โมเดล NER และเก็บ Tuple ของ (Entity text, Entity label):
doc = nlp(text)
entities = [(ent.text, ent.label_) for ent in doc.ents]
การประมวลผลภาษาธรรมชาติด้วย spaCy

มาฝึกกันเถอะ!

การประมวลผลภาษาธรรมชาติด้วย spaCy

Preparing Video For Download...