시작하기무료로 시작하기

spaCy 모델을 처음부터 학습하기

spaCy는 직접 모델을 학습하기 위한 매우 간결하고 효율적인 방법을 제공합니다. 이 연습 문제에서는 실제 코퍼스(CORD-19 데이터)로 NER 모델을 처음부터 학습해 보겠습니다.

학습 데이터는 올바른 형식의 training_data로 제공됩니다. 이 연습 문제에서는 빈 영어 모델(nlp)에 NER 컴포넌트를 추가하고, labels에 저장된 레이블(“Pathogen”, “MedicalCondition”, “Medicine”) 목록을 사용합니다. 의료 도메인의 해당 labels를 NER 파이프라인에 추가한 뒤, 모델을 한 에포크(epoch) 동안 학습하세요. 필요한 형식으로 학습 데이터를 변환하기 위해 미리 임포트된 Example 클래스를 사용할 수 있습니다. 모델 학습 과정을 추적하려면 .update() 메서드에 losses 딕셔너리를 전달하고 학습 손실을 확인하세요.

이 연습은 강의의 일부입니다

spaCy로 배우는 자연어 처리

강의 보기

연습 안내

  • 빈 spaCy 모델을 만들고 NER 컴포넌트를 모델에 추가하세요.
  • 다른 파이프라인 컴포넌트는 비활성화하고, 생성한 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)
코드 편집 및 실행