728x90
반응형

reference

 

Vector Space Models

VSM(벡터 공간 모델, Vector Space Model)에서 object들은 multi-dimension 연속 공간에서 vector로 표현된다.

NLP에서 공간이란 일반적으로 의미 공간(semantic space)라고 하며, object의 표현을 분산표현(distributed representation)이라고 부른다.

여기서 object는 words, documents, sentences, concepts, entity가 될 수도 있고, similarity를 정의할 수 있는 어떤 의미 전달에 대한 항목이 될 수도 있다.

similarity between “desk”, “desks”, and “table”

즉, 각 documents들은 word vector로 표현되며, vector는 정보 검색(information Retrieval)의 기초가 된다.

 

Information Retrieval (IR)

query에 대한 응답으로 관련 documents를 찾는 작업

documents를 찾기 위해서는 우선 문서의 topic이 무엇인지를 알아야 하고, 즉 "topic modeling" 이라고 알려진 작업이 필요하다.

 

term frequency(tf)

가장 simple한 idea는 term frequency일 것이다.

특정 용어가 문서에 나타나는 횟수로 정의되며, 100개의 단어가 있는 문서에 특정 단어 하나가 10번 나타난다면, term frequency는 10이 될 것이다. 하지만 실제로 자주 사용되지는 않는다. 왜냐하면 문서에서 자주 등장하는 단어가 항상 문서의 주제와 관련이 있는 것은 아니기 때문이다.

 

Inverse document frequency(idf)

단어가 전체 말뭉치(corpus)에서 얼마나 흔하거나 드문지에 대해 측정한 척도를 idf라 한다.

idf(t, D) = log(N / (df(t) + 1))
- t: 단어
- D: 전체 문서 집합
- N: 전체 문서의 수
- df(t): 단어 t가 포함된 문서의 수

즉, $idf(t,D) = log\frac{TotalDocumnets}{NumDocumentsContaining(word)}$ 를 의미

 

전체 문서 집합에서 자주 등장하는 단어의 idf 값은 낮아지고, 드문 단어의 idf 값은 높아 지게 된다.

+ log 안의 식에서 분모에 1을 더해주는 이유는 첫번째 이유로는 특정 단어가 전체 문서에서 등장하지 않을 경우에 분모가 0이 되는 상황을 방지하기 위함

 

TF-IDF

tf와 idf를 함께 곱하여 문서에서 어떤 단어가 중요한지 순위를 매기는 방법이라 할 수 있다.

tf-idf 점수는 문서 내에서 자주 등장하지만 전체 문서 집합에서는 드문 단어에 높은 가중치를 부여한다.

문서 내에 자주 등장하지만, tf-idf 점수가 낮은 경우를 예를 들면 “the”, “is”, "and"와 같은 불용어들이 있다.
(알다시피, 이러한 단어들은 문서의 주제를 파악하는 데 큰 도움이 되지 않는다)

 

Word Embedding

그러면, 정보 검색(information Retrieval)에서 query와 documents의 유사성을 측정하는 방법엔 무엇이 있을까?

Word embedding은 단어의 의미를 vector로 표현하는 방법으로, 단어 간의 의미적 관계를 Vector Space에서의 거리로 나타낸다.

(일반적으로 vector space에서 거리는 cosine similarity를 사용한다)

 

Embedding?

말뭉치(corpus)에서 단어가 동시에 출현한다는 의미는 때로는 비슷하다는 의미일 수 있고, 때로는 반대라는 의미일 수 있다.

Space에 embedded되어 있기 때문에 "embedding"이라고 부르며, "Word Embedding"은 NLP에서 의미를 표현하는 표준 방법이라 할 수 있다.

최근 사용되는 NLP 알고리즘은 단어의 의미를 표현할 때 모두 embedding을 사용하고 있다.

 

Word2vec

참고 : https://code.google.com/archive/p/word2vec/

Word2vec은 Neural network를 사용하는 가장 인기있는 embedding 방법이며, train 속도가 매우 빠르다.

또한 web에서 code 사용이 가능하고, count 보다는 predict에 중점을 둔다.

 

Neural networks는 많은 양의 text를 처리하는 효율성과 속도, 밀도가 높은 표현을 학습하는 능력이 좋아,

text corpora로 부터 low-dimensional 한 벡터들을 학습하는데 강점이 있다.

초반에는 하드웨어 및 소프트웨어 한계로 인해 사용되기 힘들었으나, 딥러닝(deep learning) 의 성장과 함께 neural network 기반의 표현 (즉, embeddings)은 기존의 count 기반 모델을 거의 완전히 대체할 수 있게 되었다.

neural word embeddings은 일반적으로 단어 예측과 같은 일종의 언어 모델링을 목표로 훈련되므로, predictive models이라고 불리기도 하며, Word embedding은 Word2vec 에 의해 대중화될 수 있었다.

 

Learning architecture of the CBOW and Skipgram models of Word2vec [Mikolov et al., 2013a]

 

CBOW(Continuous Bag-Of-Words)

주변 컨텍스트를 사용하여 현재 단어를 예측하고 다음 손실 함수를 최소화하는 것을 목표로 함

 

Skip-Gram

대상 단어 자체를 예측하는 것이 아니라 대상 단어가 주어진 주변 컨텍스트에서 단어를 예측함

 

GloVe(Global Vectors)

GloVe는 Word2vec과는 다른 word embedding 방법 (신경망을 사용하지 않음)

말뭉치(corpus)에서 global word의 동시 발생 횟수를 집계하여 word embedding을 생성

 

 

 

728x90
반응형