ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Bag of Words - BOW
    Python 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와 동일

Designed by Tistory.