Skip to content

spaCy

설치

!pip install spacy

영어 모델 설치

!python -m spacy download en_core_web_sm

품사 태깅

import spacy

nlp = spacy.load("en_core_web_sm")

text = "All work and no play makes Jack a dull boy."
doc = nlp(text)

for token in doc:
    print(token.text,
          token.lemma_,  # 표제어
          token.pos_,    # 단어의 품사
          token.tag_,    # 자세한 품사
          token.is_stop) # 불용어 여부
All all DET DT True
work work NOUN NN False
and and CCONJ CC True
no no DET DT True
play play NOUN NN False
makes make VERB VBZ False
Jack Jack PROPN NNP False
a a DET DT True
dull dull ADJ JJ False
boy boy NOUN NN False
. . PUNCT . False

용어 설명

spacy.explain('PROPN')
'proper noun'

문장 구조

from IPython.display import SVG
SVG(spacy.displacy.render(doc))
All DET work NOUN and CCONJ no DET play NOUN makes VERB Jack PROPN a DET dull ADJ boy. NOUN det nsubj cc det conj nsubj det amod ccomp
<IPython.core.display.SVG object>
for token in doc:
    print(token.text,
          token.dep_,   # 의존 관계
          token.head)   # 지배소
All det work
work nsubj makes
and cc work
no det play
play conj work
makes ROOT makes
Jack nsubj boy
a det boy
dull amod boy
boy ccomp makes
. punct makes

한국어 처리

한국어 모델 설치

!python -m spacy download ko_core_news_sm
nlp = spacy.load("ko_core_news_sm")

text = "일만 하고 놀지 않으면 바보가 된다."
doc = nlp(text)

for token in doc:
    print(token.text,
          token.lemma_,  # 표제어
          token.pos_,    # 단어의 품사
          token.tag_,    # 자세한 품사
          token.is_stop) # 불용어 여부
일만 일+만 ADV ncpa+jxc False
하고 하+고 CCONJ pvg+ecc False
놀지 놀+지 VERB pvg+ecx False
않으면 않+으면 SCONJ px+ecs False
바보가 바보+가 VERB pvg+ecx False
된다 되+ㄴ다 AUX px+ef False
. . PUNCT sf False
SVG(spacy.displacy.render(doc))
일만 ADV 하고 CCONJ 놀지 VERB 않으면 SCONJ 바보가 VERB 된다. AUX advcl ccomp ccomp aux aux
<IPython.core.display.SVG object>