본문 바로가기
NLP

[NLP] 기본 개념 : Bag-Of-Words(BOW), Distributed hypothesis

by 방구석 몽상가 2019. 1. 6.
2019-01-06-bow-distributed

1. Bag Of Words(BOW)

간단히 말하면, 특정 문서에서 단어의 순서들을 생각하지 않고 그저 단어가 출현하는 빈도 수만을 보는 방법입니다.

다음은 NLP 기본 가정 중 하나인 Bag of words hypothesis입니다.

Turney & Pantel (2010:153): Bag of words hypothesis

"The frequencies of words in a document tend to indicate the relevance of the document to a query (Salton et al., 1975). – If documents and pseudo-documents (queries) have similar column vectors in a term–document matrix, then they tend to have similar meanings."

먼저, 첫 문장의 의미는 특정 문서의 단어 빈도 수는 쿼리와 문서의 연관성을 가리킨다는 의미입니다.

논문 Google AI Language, BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding의 첫 문단을 예로 들어보겠습니다.

R로 대략적인 처리를 하여 상위 5개 단어를 보면 다음과 같습니다.

representationBERTlanguagemodela
32221

첫 문단의 단어 빈도 수만으로도 이 문서가 말하고자 하는 중요 포인트인 BERT, language model 등을 짐작할 수 있습니다. 이러한 포인트로 딥러닝 언어 모델에 대해 설명하고 있는 문서라고 추측할 수 있습니다.

두 번째 문장은 어떤 두 문서가 term-document matrix(단어-문서 행렬)에서 비슷한 열 벡터를 가진다면, 그 문서들은 비슷한 의미를 가지는 경향이 있다는 말입니다. (term-document matrix = word-document matrix)

Term-document matrix(단어-문서 행렬)

Bag of words 기반의 방법론으로, 위에 설명한대로 특정 문서의 단어들을 순서에 상관 없이 섞어서 빈도 수만을 보여준 행렬입니다. 여기서 기본적으로 행은 단어가, 열은 문서의 bag-of-words representation이 될 것입니다.

  • doc1 : 밀크티,인,데자와,는,맛있다
  • doc2 : 로열,밀크티,중,데자와,가,제일,맛있다
  • doc3 : 데자와,는,전지분유,가,들어갔다

위와 같은 세 개의 문서로 대략적인 term-document 행렬을 만들면 다음과 같이 될 것입니다.

-doc1doc2doc3
밀크티110
데자와111
맛있다110
로열010
제일010
전지분유001
들어갔다001

먼저, 각 문서들의 의미를 살펴보겠습니다. doc1과 doc2는 "데자와는 맛있다" 라는 공통된 의미를 포함하고 있습니다. 하지만 doc3는 데자와의 성분에 대한 이야기를 하고 있습니다. 이제, term-document 행렬의 열 벡터를 보면 doc1, doc2의 열 벡터가 doc3보다는 비슷한 경향을 보이고 있습니다. {밀크티, 데자와, 맛있다} 라는 세 개의 공통된 요소가 있죠. 즉, 열 벡터가 비슷한 것을 보고 서로 비슷한 의미라는 것을 간접적으로 알 수 있습니다.

참고 문헌 및 관련 자료

1: https://en.wikipedia.org/wiki/Bag-of-words_model

2: https://wikidocs.net/22650

3: https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/03/10/frequency/

4: https://web.stanford.edu/class/linguist236/materials/ling236-handout-05-09-vsm.pdf

 

2. Distributional hypothesis

NLP의 또 다른 기본 가정을 살펴보겠습니다.

Turney & Pantel (2010:153): Distributional hypothesis

"Words that occur in similar contexts tend to have similar meanings (Harris, 1954; Firth, 1957; Deerwester et al., 1990). – If words have similar row vectors in a word–context matrix, then they tend to have similar meanings."

해석하면, "비슷한 문맥에서 발생하는 단어들은 비슷한 의미를 가지는 경향이 있다. 만약, 단어들이 word-context matrix(단어-문맥 행렬)에서 비슷한 열 벡터들을 가지고 있다면, 그 단어들은 비슷한 의미를 가지는 경향을 보인다." 입니다. 먼저, word-context matrix에 대해서 자세히 살펴보겠습니다.

Word-context matrix(단어-문맥 행렬)

위의 term-document matrix와 달리 단어의 등장 순서를 어느 정도 고려한 행렬입니다. 어떤 단어를 기준으로 window size만큼의 좌우 범위 내에 특정 단어가 몇 번 나타나는지를 카운트합니다.

  • sen1 : I enjoy flying
  • sen2 : I liked NLP
  • sen3 : I like deep learning

위 세 문장이 있을 때, window size = 1로 가정하고 행렬을 만들면 다음과 같습니다.

-IlikeenjoydeeplearingNLPflying
I0210000
like2001010
enjoy1000000
deep0100101
learning0001000
NLP0100000
flying0010010

위 가정에서는 비슷한 열 벡터들을 가지고 있다면 그 단어들의 의미는 비슷하다고 하였습니다. 여기서 비슷한 단어라는 의미가 난해하게 다가옵니다. 가정에 따르면, I와 like는 다른 단어들보다 강한 유사성을 가지고 있다고 말할 수 있습니다. 하지만, "나는"과 "좋아한다"는 전혀 다른 의미입니다.

단어의 의미가 비슷한 것이라고 하면 동의어를 먼저 떠올릴 수 있습니다. 그 다음, 반대되는 의미인 반의어(antonyms)를 떠올릴 수 있습니다. 반의어는 서로 반대되는 의미를 가진 단어의 집합이지만, 서로 연관성을 가지고 있습니다. 예를 들면, "춥다"와 "덥다"는 기온이라는 공통된 관계로 엮여있습니다. 즉, 여기서 말하는 비슷한 단어라는 건 관련성이 높다는 것을 의미합니다. NLP 분야에서는 상위어(hypernym)를 공유하는 단어들이 의미적 유사성(semantic similarity)을 지닌다고 말합니다. 위 예시는 적은 데이터를 가지고 행렬을 만들었지만 세 문장 중 두 문장에서 I, like가 붙어다니므로 문장에서 자주 쓰이는 표현이라는 점에서 어느 정도 연관이 있다고 말할 수 있습니다. 위에서 설명한 행렬들을 바탕으로 문서 간 유사도: cosine 유사도를 구할 수 있습니다.

참고 문헌 및 관련 자료

1: https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/03/10/frequency/

2: https://web.stanford.edu/class/linguist236/materials/ling236-handout-05-09-vsm.pdf

 

 


댓글