spaCy 기초

spaCy로 배우는 자연어 처리

Azadeh Mobasher

Principal Data Scientist

spaCy NLP 파이프라인

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp("Here's my spaCy pipeline.")
  • spaCy 임포트
  • spacy.load()Language 클래스를 반환하는 nlp 생성
    • Language 객체는 텍스트 처리 파이프라인
  • nlp()에 텍스트를 주어 Doc 컨테이너 생성
spaCy로 배우는 자연어 처리

spaCy NLP 파이프라인

 

spaCyLanguage 클래스로 다음 단계를 수행합니다:

spaCy Language pipeline

spaCy로 배우는 자연어 처리

spaCy의 컨테이너 객체

  • spaCy에는 텍스트를 표현하는 여러 자료구조가 있습니다:

 

Name Description
Doc 텍스트의 언어 주석에 접근하는 컨테이너
Span Doc의 슬라이스
Token 개별 토큰(단어, 구두점, 공백 등)
spaCy로 배우는 자연어 처리

파이프라인 컴포넌트

  • spaCy의 언어 처리 파이프라인은 로드한 모델과 기능에 따라 달라집니다.

 

Component Name Description
Tokenizer Tokenizer 텍스트를 토큰으로 분할하고 Doc 생성
Tagger Tagger 품사 태그 부여
Lemmatizer Lemmatizer 단어를 원형으로 축약
EntityRecognizer NER 개체명 인식 및 라벨 지정
spaCy로 배우는 자연어 처리

파이프라인 컴포넌트

 

  • 각 컴포넌트는 텍스트 처리를 위한 고유 기능 보유

    • Language
    • DependencyParser
    • Sentencizer
spaCy로 배우는 자연어 처리

토크나이즈

  • 항상 첫 번째 작업
  • 이후 작업은 모두 토큰이 필요
  • 토큰은 단어, 숫자, 구두점일 수 있음
import spacy
nlp = spacy.load("en_core_web_sm")

doc = nlp("Tokenization splits a sentence into its tokens.")

print([token.text for token in doc])
['Tokenization', 'splits', 'a', 'sentence', 'into', 'its', 'tokens', '.']
spaCy로 배우는 자연어 처리

문장 분할

  • 토크나이즈보다 더 복잡함
  • DependencyParser 컴포넌트의 일부
import spacy
nlp = spacy.load("en_core_web_sm")

text = "We are learning NLP. This course introduces spaCy."
doc = nlp(text)

for sent in doc.sents: print(sent.text)
We are learning NLP.
This course introduces spaCy.
spaCy로 배우는 자연어 처리

표제어 추출(Lemmatization)

  • Lemma는 토큰의 기본형
  • eats, ate의 lemma는 eat
  • 언어 모델 정확도 향상
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("We are seeing her after one year.")

print([(token.text, token.lemma_) for token in doc])
[('We', 'we'), ('are', 'be'), ('seeing', 'see'), ('her', 'she'), 
('after', 'after'), ('one', 'one'), ('year', 'year'), ('.', '.')]
spaCy로 배우는 자연어 처리

연습해 봅시다!

spaCy로 배우는 자연어 처리

Preparing Video For Download...