언어적 특징

spaCy로 배우는 자연어 처리

Azadeh Mobasher

Principal Data Scientist

품사 태깅 (POS)

  • 품사 태그는 문맥(주변 단어와 태그)에 따라 달라집니다
import spacy
nlp = spacy.load("en_core_web_sm")
text = "My cat will fish for a fish tomorrrow in a fishy way."
print([(token.text, token.pos_, spacy.explain(token.pos_)) 
        for token in nlp(text)])

품사 태깅 예시

spaCy로 배우는 자연어 처리

품사의 중요성은?

 

  • 많은 NLP 작업에서 정확도가 향상됩니다

 

I will fish tomorrow.

I ate fish.

 

  • 번역 시스템 활용 사례

 

verb -> pescaré

noun -> pescado
spaCy로 배우는 자연어 처리

품사의 중요성은?

 

  • 어의 중의성 해소(WSD)는 문장에서 단어가 어떤 의미로 쓰였는지 판단하는 문제입니다.
  • 의미 판별은 기계번역 등에서 매우 중요합니다.

WSD 예시

spaCy로 배우는 자연어 처리

어의 중의성 해소 (WSD)

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

verb_text = "I will fish tomorrow."
noun_text = "I ate fish."


print([(token.text, token.pos_) for token in nlp(verb_text) if "fish" in token.text], "\n") print([(token.text, token.pos_) for token in nlp(noun_text) if "fish" in token.text])
[('fish', 'VERB', 'verb')] 
[('fish', 'NOUN', 'noun')]
spaCy로 배우는 자연어 처리

의존 구문 분석

  • 문장 구문을 탐색합니다
  • 두 토큰 간의 연결을 표시합니다
  • 트리로 표현됩니다

의존 구문 분석 예시

spaCy로 배우는 자연어 처리

의존 구문 분석과 spaCy

 

  • 의존 레이블은 두 토큰 간 구문 관계 유형을 나타냅니다

 

의존 레이블 설명
nsubj 명사 주어
root 루트
det 한정사
dobj 직접 목적어
aux 조동사
spaCy로 배우는 자연어 처리

의존 구문 분석과 displaCy

  • displaCy로 의존 트리를 그릴 수 있습니다
doc = nlp("We understand the differences.")

spacy.displacy.serve(doc, style="dep")

displaCy를 사용한 의존 파서 예시

spaCy로 배우는 자연어 처리

의존 구문 분석과 spaCy

  • 토큰의 의존 레이블은 .dep_ 속성으로 확인합니다

 

doc = nlp("We understand the differences.")
print([(token.text, token.dep_, spacy.explain(token.dep_)) for token in doc])
[('We', 'nsubj', 'nominal subject'), ('understand', 'ROOT', 'root'),
('the', 'det', 'determiner'), ('differences', 'dobj', 'direct object'),
('.', 'punct', 'punctuation')]
spaCy로 배우는 자연어 처리

연습해 봅시다!

spaCy로 배우는 자연어 처리

Preparing Video For Download...