Python 튜토리얼

Lv1 전처리 10/14 python 파이썬 Bag of Words

2021.10.01 11:56 3,131 조회

안녕하세요 여러분👩‍🌾👨‍🌾 오늘은 Bag of Words의 개념에 대해 알아보겠습니다.

머신러닝 모델은 텍스트로 된 변수를 바로 사용할 수 없습니다. 텍스트를 특정 의미가 있는 숫자형 값인 벡터 값으로 변환해야 되는데, 이를 피처 벡터화라고 합니다.🏑🏏

텍스트 데이터를 벡터화 하는 방법은 여러가지가 있지만 그중 가장 단순한 방법인 Bag of Words에 대해 알아 보겠습니다.


Bag of Words(BOW) ? ?

Bag of Words란 단어들의 문맥이나 순서를 무시하고, 단어들에 대한 빈도 값을 부여해 변수를 만드는 방법입니다.


BOW를 이용하여 텍스트 데이터를 숫자형 값으로 변환해 보겠습니다.

문장 1 : 나는 축구 하는 것을 좋아합니다.

문장 2 : 나는 주말에 친구들을 만나 함께 축구 하는 것을 좋아합니다. 그리고 나는 친구들을 만나 축구 보는 것을 좋아합니다.


#1 문장1 과 문장2에 있는 모든 단어(중복을 제거한)에 고유의 인덱스를 부여 합니다.

'나는' : 0 , '축구' : 1, '하는' : 2, '것을' : 3, '좋아합니다' : 4, '주말에' : 5 ,' 친구들을' : 6, '만나' : 7 , '함께' : 8, '그리고' : 9 ,' 보는' :10


#2 개별 문장에서 해당 단어가 나타나는 횟수를 각 단어에 표시합니다.

위와 같은 방식으로 텍스트로 된 변수를 숫자형으로 변환 시킬 수 있습니다.


BOW는 단순히 단어의 발생 빈도에 기반하여 텍스트를 숫자형으로 변환 시켜주지만 문장에서 단어의 특징을 나타 낼 수 있어 여러 분야에서 활용도가 높습니다. 하지만 다음과 같은 단점도 존재 합니다.


  • 문맥 의미를 완벽하게 반영 할 수 없다 : BOW는 단어의 순서를 고려하지 않기 때문에 문맥적인 의미가 완전히 무시 됩니다. 이를 보완하기 위해 n_gram 기법을 활용 할 수 있지만 제한적입니다.
  • 희소 행렬 문제 : 단어가 굉장히 많은 데이터에서 BOW로 텍스트 데이터를 벡터화 하면 행렬 대부분의 값이 0 으로 채워진 희소 행렬 형태로 변환 됩니다. 희소 행렬은 일반적으로 머신러닝의 성능을 떨어뜨립니다.



BOW의 피처 벡터화는 다음과 같이 두 가지 방식이 있습니다.

카운트 기반 벡터화(CountVectorizer), TF-IDF(Term Frequency - Inverse Document Frequency) 기반 벡터화 다음 시간에는 카운트 기반 벡터화에 대해 알아보겠습니다.👨‍💻👩‍💻


감사합니다.🤴👸


↩️ 오늘의 파이썬 리스트


#데이콘_101 #AI #머신러닝 #딥러닝 #파이썬 #파이선 #데이터분석 #데이터사이언티스트 #코랩 #Python #colab #kaggle #pandas #numpy #sckit-learn  #텍스트 제거

로그인이 필요합니다
0 / 1000
왼쪽눈썹왁싱
2021.11.03 11:33

페드로
2021.11.18 15:16

moran
2022.01.04 15:35

dbnoid
2022.01.20 13:09

acebed
2022.03.11 14:51

done

비회원
2022.04.07 10:53

krooner
2022.05.20 00:59

pysung
2022.09.18 11:05

done

baeksh0330
2022.10.02 17:52

highllight
2023.02.12 16:28