1. 자연어 처리(NLP)란?
- 자연어: 사람들이 사용하는 언어(예: 한국어, 영어)로, 의사소통의 수단입니다.
- 자연어 처리(NLP): 자연어를 컴퓨터가 이해하고 분석할 수 있도록 디지털화하는 기술입니다.
- 예: 이메일에서 스팸 여부를 자동으로 판단하기 위해 NLP를 활용.
NLP의 활용 분야:
- 텍스트 분석(Text Analytics): 주어진 텍스트에서 유용한 인사이트를 추출합니다.
- 자연어 이해(NLU): 컴퓨터가 문장을 이해하도록 만듭니다.
- 자연어 생성(NLG): 컴퓨터가 인간이 이해할 수 있는 자연어로 문장을 생성합니다.
2. 텍스트 분석 도구
- NLP 관련 라이브러리 및 도구:
- NLTK: 자연어 처리와 관련된 다양한 기능 제공.
- Gensim: 토픽 모델링에 유용한 라이브러리.
- SpaCy: 고성능 NLP 라이브러리.
- Stanford NLP: 강력한 품사 태깅과 파싱 기능 제공.
3. NLP의 주요 구성 요소
- 형태소 분석(Morphological Analysis):
- 단어의 구조를 분석해 의미 단위로 나눕니다.
- 어간(stem): 단어의 기본 형태(예: "walk"는 "walking"의 어간).
- 접사(affix): 어근에 추가되어 의미를 확장하는 요소(예: "-ing", "-ed").
- 어휘 분석(Lexical Analysis):
- 문장을 **토큰화(tokenization)**하여 단어로 분리하고, 각 단어의 **품사(PoS)**를 태깅합니다.
- 예: "I am reading a book" → ['I', 'am', 'reading', 'a', 'book'].
- 구문 분석(Syntactic Analysis):
- 문장의 문법 구조를 분석하여 주어, 동사, 목적어 등으로 나눕니다.
- 의미 분석(Semantic Analysis):
- 문장의 의미를 파악합니다.
- 모호성 처리: 같은 단어가 다른 의미로 쓰일 수 있는 경우를 해결합니다.
4. 전처리(Preprocessing) 과정
NLP에서는 데이터를 처리하기 전에 전처리를 통해 텍스트를 정리합니다.
1) 토큰화(Tokenization)
- 문장을 구성하는 단위(토큰)로 나누는 과정입니다.
- 예: "I am reading a book."
→ ['I', 'am', 'reading', 'a', 'book'] - N-그램(N-gram):
- Unigram: 한 단어씩 추출 (예: 'I', 'am', 'reading').
- Bigram: 두 단어씩 추출 (예: 'I am', 'am reading').
2) 품사 태깅(PoS Tagging)
- 각 단어에 **품사(PoS)**를 태깅하는 작업입니다.
- 예: "She promised to back the bill."
→ 'promised': VBD(과거형 동사), 'back': RB(부사), 'bill': NN(명사)
3) 불용어 제거(Stopword Removal)
- 문장의 의미에 큰 영향을 미치지 않는 단어를 제거합니다.
- 예: 'the', 'a', 'is' 등.
from nltk.corpus import stopwords
stop_words = stopwords.words('english')
print(stop_words)
4) 텍스트 정규화(Text Normalization)
- 같은 의미를 가지는 다른 형태의 단어를 통일합니다.
- 예: 'USA'와 'United States'를 동일하게 처리.
5) 어간 추출(Stemming)과 표제어 추출(Lemmatization)
- 어간 추출: 단어를 기본 형태로 변환(문맥 고려 안 함).
- 예: 'running' → 'run'
- 표제어 추출: 문맥을 고려하여 단어를 기본형으로 변환.
- 예: 'am', 'are', 'is' → 'be'
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize('running', pos='v'))
5. 개체명 인식(NER; Named Entity Recognition)
- 텍스트에서 **특정 이름이나 개체(사람, 장소, 시간)**를 인식합니다.
- 예: "오늘 오후 8시에 아주대학교에서 회의가 있습니다."
→ '아주대학교' → 조직 이름(Organization)
6. NLP의 응용
- 스팸 필터링: 이메일에서 스팸 여부를 판단합니다.
- 챗봇: 사용자의 질문에 자동으로 답변합니다.
- 감정 분석(Sentiment Analysis): 소셜 미디어에서 사용자 감정을 분석합니다.
7. Python 코드 예제: 간단한 NLP 처리
아래 코드는 NLTK 라이브러리를 사용하여 토큰화, 품사 태깅, 불용어 제거를 수행하는 예제입니다.
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
# 텍스트 데이터
text = "I am learning Natural Language Processing."
# 토큰화
tokens = word_tokenize(text)
print("Tokens:", tokens)
# 불용어 제거
stop_words = set(stopwords.words('english'))
filtered_tokens = [word for word in tokens if word.lower() not in stop_words]
print("Filtered Tokens:", filtered_tokens)
# 품사 태깅
pos_tags = nltk.pos_tag(filtered_tokens)
print("POS Tags:", pos_tags)
'소셜네트워크' 카테고리의 다른 글
[소셜네트워크] 정규 표현식 (Regular Expression, RE)에 대하여 (0) | 2024.11.10 |
---|---|
[소셜네트워크] 감성 분석(Sentiment Analysis)에 대하여 (4) | 2024.11.09 |
[소셜네트워크] 자연어 처리 #2 (0) | 2024.10.23 |
[소셜네트워크] 연결성&중심성에 대하여 (0) | 2024.10.23 |
[소셜네트워크] 소셜네트워크란 무엇인가 (5) | 2024.10.23 |