spaCy란 무엇인가?
spaCy는 최고 수준의 텍스트 분석 라이브러리 중 하나입니다. 대규모 정보 추출 작업에 특히 뛰어난 성능을 보이며, 세계에서 가장 빠른 NLP(자연어 처리) 라이브러리로 평가받고 있습니다. 또한 딥러닝 모델에 입력할 텍스트 데이터를 사전에 준비하는 데에도 가장 효과적인 도구입니다. spaCy는 NLTK Tagger나 TextBlob 같은 기존 도구보다 훨씬 빠르고 정확한 결과를 제공합니다.
설치 방법
spaCy는 pip를 통해 간단하게 설치할 수 있습니다. 영어 텍스트를 처리하려면 영어 모델(en_core_web_sm)도 함께 다운로드해야 합니다.
pip install spacy python -m spacy download en_core_web_sm
품사 태깅(PoS Tagging) 예제
품사 태깅은 문장 내 각 단어가 명사, 동사, 형용사 등 어떤 품사에 속하는지 식별하는 자연어 처리의 기본 작업입니다. 아래 예제는 spaCy로 문서 전체를 처리하고, 각 토큰의 품사를 출력하며, 동사(VERB) 토큰만 별도의 리스트로 추출하는 과정을 보여줍니다.
# 라이브러리 임포트 및 로드
import spacy
# python -m spacy download en_core_web_sm
nlp = spacy.load("en_core_web_sm")
# 품사 태깅(PoS Tagging)
# 문서 전체 처리
text = ("""My name is Vishesh. I love to work on data science problems. Please check out my github profile!""")
doc = nlp(text)
# 토큰과 품사 태그 출력
for token in doc:
print(token, token.pos_)
# 동사(VERB) 토큰만 리스트로 추출
print("Verbs:", [token.text for token in doc if token.pos_ == "VERB"])표제어 추출(Lemmatization) 예제
표제어 추출(Lemmatization)은 단어의 굴절된 여러 형태들을 하나의 기본 항목으로 묶어 분석할 수 있도록 하는 과정입니다. 이때 각 단어는 원형(lemma), 즉 사전에 등재된 기본형을 기준으로 식별됩니다. 예를 들어 'running'은 'run'으로, 'better'는 'good'으로 통합됩니다.
import spacy
# 영어 토크나이저, 태거,
# 파서, NER, 단어 벡터 로드
nlp = spacy.load("en_core_web_sm")
# 문서 전체 처리
text = ("""My name is Vishesh. I love to work on data science problems. Please check out my github profile!""")
doc = nlp(text)
for token in doc:
print(token, token.lemma_)