使用 spaCy 訓練

使用 spaCy 的自然語言處理

Azadeh Mobasher

Principal Data Scientist

訓練步驟

 

  1. 標註並準備輸入資料
  2. 停用其他 pipeline 元件
  3. 訓練數個 epochs 的模型
  4. 評估模型效能
使用 spaCy 的自然語言處理

停用其他 pipeline 元件

 

  • 除了 NER停用所有 pipeline 元件:

 

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

nlp.disable_pipes(*other_pipes)
使用 spaCy 的自然語言處理

模型訓練流程

  • 多次跑過訓練集;一次迭代稱為 epoch
  • 每個 epoch 以小幅度更新模型權重。
  • Optimizers 會更新模型權重。
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 的自然語言處理

推論用模型

 

  • 在推論時使用已儲存的模型。

 

  • 套用 NER 模型並存下(實體文字、實體標籤)的元組:
doc = nlp(text)
entities = [(ent.text, ent.label_) for ent in doc.ents]
使用 spaCy 的自然語言處理

一起來練習吧!

使用 spaCy 的自然語言處理

Preparing Video For Download...