spaCyでの学習

spaCyで学ぶNatural Language Processing

Azadeh Mobasher

Principal Data Scientist

学習の手順

 

  1. データにアノテーションし前処理
  2. 他のパイプを無効化
  3. 数エポック学習
  4. 性能を評価
spaCyで学ぶNatural Language Processing

他パイプの無効化

 

  • NER以外のパイプをすべて無効化:

 

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

nlp.disable_pipes(*other_pipes)
spaCyで学ぶNatural Language Processing

モデル学習の流れ

  • 学習セットを複数回反復。1回をepochと呼ぶ。
  • 各エポックで重みを少しずつ更新。
  • Optimizerが重みを更新する。
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で学ぶNatural Language Processing

学習済みモデルの保存と読み込み

 

  • 学習済み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で学ぶNatural Language Processing

推論用モデル

 

  • 推論で保存モデルを使用

 

  • NERを適用し、(エンティティのtext、エンティティのlabel)のタプルを取得:
doc = nlp(text)
entities = [(ent.text, ent.label_) for ent in doc.ents]
spaCyで学ぶNatural Language Processing

練習しましょう!

spaCyで学ぶNatural Language Processing

Preparing Video For Download...