NLTK를 활용한 고급 자연어 처리 기법
이번 수업에서는 NLTK를 활용한 품사 태깅, 개체명 인식, 문법 구조 분석과 같은 고급 기능을 살펴보겠습니다.
1. 품사 태깅(Part-of-Speech Tagging)
품사(POS, Part-of-Speech)는 단어의 문법적 역할을 뜻합니다.
예를 들어 "I am a student."
에서 I
는 대명사, am
은 동사, a
는 관사, student
는 명사입니다.
품사 태깅은 문장에서 동사, 명사 등 각 단어의 품사를 분석하는 과정입니다.
품사 태깅 예시
import nltk
from nltk.tokenize import word_tokenize
from nltk import pos_tag
nltk.download('averaged_perceptron_tagger')
text = "NLTK provides powerful NLP tools."
tokens = word_tokenize(text)
tagged = pos_tag(tokens)
print(tagged)
위 코드에서 NNP
(고유명사), VBZ
(현재형 동사), JJ
(형용사) 등 각 단어의 품사가 태깅됩니다.
2. 개체명 인식(Named Entity Recognition, NER)
개체명 인식(NER)은 텍스트에서 사람, 조직, 위치 등 특정 개체를 식별하는 작업입니다.
개체명 인식 예시
import numpy
from nltk.chunk import ne_chunk
nltk.download('maxent_ne_chunker')
nltk.download('words')
sentence = "I live in California."
tokens = word_tokenize(sentence)
tagged = pos_tag(tokens)
ner_tree = ne_chunk(tagged)
print(ner_tree)
출력 결과는 다음과 같이 나타납니다.
(S I/PRP live/VBP in/IN (GPE California/NNP) ./.)
여기서 GPE
는 지명(Geopolitical Entity)을 나타내며, NNP
는 고유명사를 의미합니다.
한국어 지원은 어떻게?
NLTK는 주로 영어 기반의 자연어 처리 라이브러리이므로 한국어 지원이 제한적입니다.
한국어 자연어 처리를 위해서는 KoNLPy
, spaCy
등의 라이브러리를 함께 활용하는 것이 일반적입니다.
KoNLPy 예시
from konlpy.tag import Okt
okt = Okt()
text = "파이썬은 자연어 처리를 쉽게 해줍니다."
print(okt.morphs(text)) # 형태소 분석
print(okt.nouns(text)) # 명사 추출
print(okt.pos(text)) # 품사 태깅
위 코드로 한국어 문장에서 형태소를 분리하고 품사를 태깅할 수 있습니다.
NLTK는 영어 기반의 자연어 처리에 적합하며, 한국어 처리를 위해서는 다른 라이브러리를 사용하는 것이 좋습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!