CountVectorizer
는 Scikit-learn 라이브러리의 텍스트 데이터 전처리 도구 중 하나로, 텍스트 데이터를 벡터화하여 머신러닝 모델에 입력할 수 있는 형태로 변환하는 기능을 제공
주로 텍스트 데이터를 숫자 형태의 벡터로 변환하는 데 사용됨.
CountVectorizer
는 텍스트 데이터에서 단어의 출현 빈도를 세어, 각 단어를 벡터의 요소로 표현함.
예를 들어, 다음과 같은 문장이 있다고 가정해보자.
from sklearn.feature_extraction.text import CountVectorizer
corpus = [
"This is the first document.",
"This document is the second document.",
"And this is the third one.",
"Is this the first document?"
]
먼저 CountVectorizer
객체를 생성한 후, fit
또는 fit_transform
메서드를 사용하여 문장 데이터를 벡터화.
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
CountVectorizer
는 각 단어를 고유한 인덱스에 매핑하여, 문서-단어 행렬(Document-Term Matrix)을 생성.
행렬의 각 행은 문서를 나타내고, 각 열은 단어를 나타내며, 값은 해당 단어의 문서 내 출현 빈도를 나타냄.
# 단어 사전 출력
print(vectorizer.get_feature_names_out())
# 벡터화된 문서 출력
print(X.toarray())
위 코드에서 get_feature_names_out()
메서드는 단어 사전을 반환하며, toarray()
메서드는 벡터화된 문서를 배열 형태로 변환함.
Feature Names (단어 사전):
['and' 'document' 'first' 'is' 'one' 'second' 'the' 'third' 'this']
Document-Term Matrix (문서-단어 행렬):
[[0 1 1 1 0 0 1 0 1]
[0 2 0 1 0 1 1 0 1]
[1 0 0 1 1 0 1 1 1]
[0 1 1 1 0 0 1 0 1]]
각 행: 문서
각 열: 단어
EX) 첫 번째 문서는 'document', 'first', 'is', 'the', 'this'라는 단어를 각각 한 번씩 포함
max_df
: 특정 비율 이상 등장하는 단어를 무시
EX) max_df=0.95
로 설정하면 95% 이상의 문서에 등장하는 단어는 무시함.
min_df
: 특정 비율 이하로 등장하는 단어를 무시
EX) min_df=0.01
로 설정하면 1% 이하의 문서에만 등장하는 단어는 무시함.
stop_words
: 불용어(자주 등장하지만 유의미하지 않은 단어) 제거
'english'로 설정하면 영어 불용어 리스트를 사용함.
ngram_range
: 단어의 n-그램 범위를 설정
EX) ngram_range=(1, 2)
로 설정하면 유니그램(단어 하나)과 바이그램(단어 두 개) 모두를 고려함.
from sklearn.feature_extraction.text import CountVectorizer
corpus = [
"This is the first document.",
"This document is the second document.",
"And this is the third one.",
"Is this the first document?"
]
# CountVectorizer 객체 생성
vectorizer = CountVectorizer()
# 텍스트 데이터를 벡터화
X = vectorizer.fit_transform(corpus)
# 단어 사전 출력
print(vectorizer.get_feature_names_out())
# 벡터화된 문서 출력
print(X.toarray())
각 문서는 단어의 출현 빈도를 기반으로 벡터화되어, 모델 학습 및 예측에 필요한 입력 데이터로 활용됨.