CountVectorizer

xhaktm·2024년 5월 29일
0

TIL

목록 보기
6/9

CountVectorizer는 Scikit-learn 라이브러리의 텍스트 데이터 전처리 도구 중 하나로, 텍스트 데이터를 벡터화하여 머신러닝 모델에 입력할 수 있는 형태로 변환하는 기능을 제공

주로 텍스트 데이터를 숫자 형태의 벡터로 변환하는 데 사용됨.

주요 기능과 사용 방법

1. 텍스트 데이터 벡터화

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?"
]

2. CountVectorizer 사용

먼저 CountVectorizer 객체를 생성한 후, fit 또는 fit_transform 메서드를 사용하여 문장 데이터를 벡터화.

vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)

3. 특성(feature) 추출

CountVectorizer는 각 단어를 고유한 인덱스에 매핑하여, 문서-단어 행렬(Document-Term Matrix)을 생성.

행렬의 각 행은 문서를 나타내고, 각 열은 단어를 나타내며, 값은 해당 단어의 문서 내 출현 빈도를 나타냄.

# 단어 사전 출력
print(vectorizer.get_feature_names_out())

# 벡터화된 문서 출력
print(X.toarray())

위 코드에서 get_feature_names_out() 메서드는 단어 사전을 반환하며, toarray() 메서드는 벡터화된 문서를 배열 형태로 변환함.

4. 벡터화된 결과

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())

각 문서는 단어의 출현 빈도를 기반으로 벡터화되어, 모델 학습 및 예측에 필요한 입력 데이터로 활용됨.

profile
"Done is better than Perfect"

0개의 댓글