spaCy 파이프라인

spaCy로 배우는 자연어 처리

Azadeh Mobasher

Principal Data Scientist

spaCy 파이프라인

 

  • spaCy는 먼저 텍스트를 토크나이즈하여 Doc 객체를 만듭니다.
  • Doc은 여러 단계의 처리 파이프라인을 거칩니다.

 

import spacy
nlp = spacy.load("en_core_web_sm")

doc = nlp(example_text)
spaCy로 배우는 자연어 처리

spaCy 파이프라인

  • 파이프라인파이프(구성요소)의 순서, 즉 데이터를 처리하는 단계입니다.
  • spaCy NER 파이프라인:
    • 토크나이즈
    • 개체 인식
    • 개체 분류  

NER용 spaCy 파이프라인 예시

print([ent.text for ent in doc.ents])
spaCy로 배우는 자연어 처리

파이프 추가

 

  • sentencizer: 문장 구분을 위한 spaCy 파이프라인 구성요소
text = " ".join(["This is a test sentence."]*10000)

en_core_sm_nlp = spacy.load("en_core_web_sm") start_time = time.time() doc = en_core_sm_nlp(text)
print(f"Finished processing with en_core_web_sm model in {round((time.time() - start_time)/60.0 , 5)} minutes")
>>> Finished processing with en_core_web_sm model in 0.09332 minutes
spaCy로 배우는 자연어 처리

파이프 추가

 

  • 빈 모델을 만들고 sentencizer 파이프를 추가합니다:
blank_nlp = spacy.blank("en")

blank_nlp.add_pipe("sentencizer")
start_time = time.time() doc = blank_nlp(text) print(f"Finished processing with blank model in {round((time.time() - start_time)/60.0 , 5)} minutes")
>>> Finished processing with blank model in 0.00091 minutes
spaCy로 배우는 자연어 처리

파이프라인 구성요소 분석

  • nlp.analyze_pipes()spaCy 파이프라인을 분석하여 다음을 확인합니다:
    • 구성요소가 설정하는 속성
    • 학습 중 구성요소가 생성하는 점수
    • 필수 속성의 존재 여부

 

  • prettyTrue로 설정하면 구조화 데이터 대신 표로 출력됩니다.
import spacy

nlp = spacy.load("en_core_web_sm")
analysis = nlp.analyze_pipes(pretty=True)
spaCy로 배우는 자연어 처리

파이프라인 구성요소 분석

analyze_pipes 메서드 결과

spaCy로 배우는 자연어 처리

연습해 봅시다!

spaCy로 배우는 자연어 처리

Preparing Video For Download...