-
Bag of Words - BOWPython Machine Learning/텍스트 분석 2020. 11. 14. 18:20
BOW 모델
: 문서가 가지는 모든 단어를 문맥이나 순서를 무시하고 일괄적으로 단어에 대해 빈도 값을 부여해 피처 값을 추출하는 모델
문장에 있는 모든 단어에서 중복을 제거하고 각 단어를 칼럼 형태로 나열하고 각 단어에 고유의 인덱스를 부여.
그 이후 해당 단어가 나타나는 횟수를 단어 인덱스에 기재하는 방식.
BOW 모델 장,단점
: 단어의 발생 횟수에 기반하지만 문서의 특징을 잘 나타낼 수 있으며 쉽고 빠른 구축.
: 문맥 의미 반영 부족, 회소 행렬 문제발생( 희소성, 회소 행렬 )
BOW 피처 벡터화
: 텍스트 데이터는 숫자형 피처가 아니기 때문에 머신러닝 알고리즘에 바로 입력할 수 가 없음. 따라서 텍스트는 특정 의미를 가지는 숫자형 값인 벡터 값으로 변환해야 하는데, 이러한 변환을 피처 벡터화라고 함. 즉 피처 벡터화를 수행한다는 것은 모든 문서에서 모든 단어를 칼럼 형태로 나열하고 각 문서에서 해당 단어의 횟수나 정규화된 빈도를 값으로 부여하는 데이터 세트 모델로 변경하는 것.
BOW 피처 벡터화 방식: 카운트 기반의 벡터화: TF-IDF( Term Frequency - Inverse Document Frequency )기반의 벡터화
카운트 벡터화
: 문서에서 해당 단어가 나타나는 횟수를 기반으로 하며, 카운트가 높을수록 중요한 단어로 인식
하지만 카운트만 부여할 경우 그 문서의 특징을 나타내기보다는 언어의 특성상 문장에서 자주 사용될 수밖에 없는 단어까지 높은 값을 부여
TF-IDF
: 카운트 벡터화의 단점을 보완한 것으로 개별 문서에서 자주 나타나는 단어에 높은 가중치를 주되, 모든 문서에서
자주 나타나는 단어에 대해서는 페널티를 주는 방식으로 값을 부여
카운트 벡터화 구현 CountVectorizer
: 피처 벡터화 뿐만 아니라 소문자 일괄 변환, 토큰화, 스톱워드 필터링등 텍스트 전처리도 수행.
fit( )과 transform( )을 통해 피처 벡터화된 객체 반환.
CountVectorizer 입력 파라미터
- max_df : 너무 높은 빈도수를 가지는 단어 피처를 제외하기 위한 파라미터
- min_df : 너무 낮은 빈도수를 가지는 단어 피처를 제외하기 위한 파라미터
- max_features : 추출하는 피처의 개수를 제한하며 정수로 값을 지정
- stop_words : 지정된 단어는 추출에서 제외
- n_gram_range : ( 범위 최솟값, 범위 최댓값) 으로 범위 지정
- analyzer : 피처추출을 수행한 단위, 기본값은 'word'
이 외에 token_pattern, tokenizer등이 존재
CountVectorizer를 이용한 피처 벡터화
사전 데이터 가공 -> 토큰화 -> 텍스트 정규화 -> 피처 벡터화
- 단어를 소문자로 변경하는등의 전처리 : 사전 데이터 가공
- 기본값 단어 기준으로 n_gram_range를 반영 : 토큰화
- stopword 필터링을 적용 : 텍스트 정규화 ( Stemming과 Lemmatization같은 어근 변환은 지원하지 않아
tokenizer파라미터에 커스텀 어근 변환 함수를 적용하여 어근 변환 수행 )
- max_df, min_df등의 파리미터를 이용해 토큰화된 단어를 피처로 추출하고 단어 빈도수 벡터 값 적용 : 피처 벡터화
TfidfVectorizer 클래스를 이용한 TF-IDF 벡터화는 CountVectorizer와 동일
'Python Machine Learning > 텍스트 분석' 카테고리의 다른 글
감성 분석 - IMDB 영화평 (0) 2020.12.24 텍스트 분류 실습 - 뉴스그룹 분류(2) (0) 2020.12.23 텍스트 분류 실습 - 뉴스그룹 분류 (0) 2020.11.27 텍스트 사전 준비 작업( 텍스트 전처리 ) - 텍스트 정규화 (0) 2020.11.14 텍스트 분석 (0) 2020.10.20