学習データの準備

spaCyで学ぶNatural Language Processing

Azadeh Mobasher

Principal data scientist

学習の手順

 

  1. 入力データをアノテーションして準備
  2. モデルの重みを初期化
  3. 現在の重みで少数の例を予測
  4. 予測を正解と比較
  5. オプティマイザで性能が上がる重みを計算
  6. 重みを少し更新
  7. 手順3に戻る
spaCyで学ぶNatural Language Processing

データのアノテーションと準備

  • 最初の手順は所定の形式で学習データを用意
  • データ収集後にアノテーションする
  • アノテーションは意図(intent)やエンティティなどにラベル付けすること
  • これはアノテーション済みデータの例:
annotated_data = {
"sentence": "An antiviral drugs used against influenza is neuraminidase inhibitors.",
"entities": {
             "label": "Medicine",
             "value": "neuraminidase inhibitors",
    }
}
spaCyで学ぶNatural Language Processing

データのアノテーションと準備

  • もう一つのアノテーション例:

 

annotated_data = {
"sentence": "Bill Gates visited the SFO Airport.",
"entities": [{"label": "PERSON", "value": "Bill Gates"}, 
             {"label": "LOC", "value": "SFO Airport"}]
}
spaCyで学ぶNatural Language Processing

spaCy の学習データ形式

  • データのアノテーションは、モデルに学習させたい内容に合わせて学習データを整えること
  • 学習データセットは辞書(のリスト)で保存:
training_data = [
("I will visit you in Austin.", {"entities": [(20, 26, "GPE")]}),
("I'm going to Sam's house.", {"entities": [(13,18, "PERSON"), (19, 24, "GPE")]}),
("I will go.", {"entities": []})
]

3つの例のペア:

  • 各ペアの第1要素は文
  • 第2要素はアノテーション済みエンティティと開始・終了位置のリスト
spaCyで学ぶNatural Language Processing

学習用の Example オブジェクト

  • 生テキストは直接 spaCy に渡せない

  • 各学習例ごとに Example オブジェクトを作成する必要がある

import spacy
from spacy.training import Example

nlp = spacy.load("en_core_web_sm")

doc = nlp("I will visit you in Austin.")

annotations = {"entities": [(20, 26, "GPE")]} example_sentence = Example.from_dict(doc, annotations)
print(example_sentence.to_dict())
spaCyで学ぶNatural Language Processing

Passons à la pratique !

spaCyで学ぶNatural Language Processing

Preparing Video For Download...