728x90
반응형
1. 말뭉치(Corpus)와 데이터 준비
- Corpus(말뭉치): 컴퓨터에 저장된 자연어 자료의 모음입니다.
- 예: Google Books Ngram, Brown Corpus, American National Corpus
- 파일 형식: .txt, .csv, .json, .xml
- 말뭉치 준비 과정:
- 데이터 선택 및 전처리: 의미 없는 데이터(노이즈)를 제거.
- 형식 변환: 데이터를 NLP에 적합한 형태로 변경 (예: JSON, CSV).
- 샘플링: 분석에 필요한 데이터 속성 추출.
- 숫자 데이터 변환(Encoding): 머신러닝 모델 학습을 위해 텍스트를 수치화.
2. NLP의 주요 전처리 단계
- 토큰화(Tokenization):
- 텍스트를 단어 또는 문장 단위로 분리.
- N-gram: 단어를 n개씩 묶어서 연결(예: Unigram, Bigram).
- 품사 태깅(PoS Tagging):
- 단어에 품사를 태깅해 문법적 의미 부여.
- 불용어 제거(Stopword Removal):
- "the", "is"와 같이 의미 없는 단어 제거.
- 어간 추출(Stemming)과 표제어 추출(Lemmatization):
- Stemming: 단어를 어간으로 변환(예: "running" → "run").
- Lemmatization: 문맥에 맞게 단어의 기본형으로 변환(예: "am", "is" → "be").
3. 단어 인코딩(Encoding) 방법
- Bag of Words (BoW):
- 단어의 출현 빈도를 기반으로 벡터 생성.
- 순서가 아닌 빈도만 고려합니다.
from collections import Counter
tokens = ["소설", "네트워크", "분석", "자연어"]
bow = Counter(tokens)
print(bow)
One-Hot Encoding:
- 단어를 벡터로 변환할 때 한 단어만 1, 나머지는 0으로 표시.
def one_hot_encoding(word, word_to_index):
vector = [0] * len(word_to_index)
index = word_to_index[word]
vector[index] = 1
return vector
TF-IDF (Term Frequency-Inverse Document Frequency):
- TF: 특정 단어가 문서에서 등장한 빈도.
- IDF: 단어가 전체 문서에 등장한 정도의 역수
TF-IDF = TF * IDF
4. Word2Vec과 임베딩(Embedding)
- Word2Vec:
- 단어를 벡터 공간에 매핑하여 단어 간 유사도를 반영합니다.
- 두 가지 방식:
- CBOW (Continuous Bag of Words): 주변 단어로 중심 단어 예측.
- Skip-Gram: 중심 단어로 주변 단어 예측.
- Embedding:
- 단어를 고차원 공간의 벡터로 표현해 문맥적 의미를 반영합니다.
from gensim.models import Word2Vec
sentences = [["소설", "네트워크", "분석"], ["자연어", "처리"]]
model = Word2Vec(sentences, vector_size=50, window=3, min_count=1, sg=0)
print(model.wv["소설"])
5. 한국어 NLP와 KoNLPy
- KoNLPy: 한국어 NLP 라이브러리.
- 지원되는 형태소 분석기:
- Okt (Open Korea Text), Mecab, Komoran, Hannanum, Kkma.
- 지원되는 형태소 분석기:
from konlpy.tag import Okt
okt = Okt()
print(okt.morphs("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))
728x90
반응형
'소셜네트워크' 카테고리의 다른 글
[소셜네트워크] 자연어 처리 #1 (1) | 2024.10.23 |
---|---|
[소셜네트워크] 연결성&중심성에 대하여 (0) | 2024.10.23 |
[소셜네트워크] 소셜네트워크란 무엇인가 (4) | 2024.10.23 |