Bag of Words

Bag of Words

소개


Bag of Words란 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도에만 집중하는 텍스트 데이터의 수치화 표현 방법이다.

예시


세개의 문장이 있다고 가정하고 위의 문장을 Bag of Words로 표현하면 다음과 같다.

  • sentence_list = [‘오늘은 즐거운 하루입니다’, ‘오늘은 비가 올 것 같은데 내일은 비가 안 왔으면 좋겠네요.’, ‘내일도 비가 올 것 같아요’ ]

위 세 문장의 전체 단어수는 14개이다.

  • ( 오늘은 / 즐거운 / 하루입니다 / 비가 / 올 / 것 / 같은데 / 내일은 / 안 / 왔으면 / 좋겠네요 / 내일도 / 것 /같아요 )

세 문장의 단어 사전은 아래와 같다.

  • [ 오늘은 : 1 / 즐거운 : 2 / 하루입니다 : 3 / 비가 : 4 / 올 : 5 / 것 : 6 / 같은데 : 7 / 내일은 : 8 / 안 : 9 / 왔으면 : 10 / 좋겠네요 : 11 / 내일도 : 12 / 것 : 13 / 같아요 : 14 ]

위의 세 문장을 Vector로 표현하면 다음과 같다.

1 1 1 0 0 0 0 0 0 0 0 0 0 0
1 0 0 2 1 1 1 1 1 1 1 0 0 0
0 0 0 1 1 0 0 0 0 0 0 1 1 1

한 문장내에서 중복되는 단어는 카운트하여 표시해준다.

생각


사실 BoW를 공부하면서 가장 이해가 안 되었던 것은 One hot encoding과의 차이점이였다.

  • 빈도 수 카운트
  • 차원 수

첫번째, one hot encoding은 중복 단어를 카운팅하지 않는다.
즉, 0과 1로만 표현한다.
하지만 BoW는 중복되는 단어를 카운트하기 때문에 빈도수를 측정할 수 있다.

두번째, one hot encoding으로 문장을 표현하면 n x m 과 같이 2차원으로 표현된다.
( n은 문장에 있는 단어 개수 / m은 사전에 있는 단어의 개수 )
BoW는 1 x m 과 같이 1차원으로 표현된다.
( m은 사전에 있는 단어의 개수 이다. )

#

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×