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는 영어 기반의 자연어 처리에 적합하며, 한국어 처리를 위해서는 다른 라이브러리를 사용하는 것이 좋습니다.
참고 자료
Mission
0 / 1
다음 중 빈칸에 들어갈 가장 적절한 단어는 무엇인가요?
품사 태깅은 각 단어의 를 분석하는 과정입니다.
의미
문법적 역할
문장 구조
형태
학습 자료
AI 튜터
디자인
업로드
수업 노트
즐겨찾기
도움말