본문 바로가기

[NLP] Doc2Vec 이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다. Doc2Vec이란 이름에서 유추할 수 있듯이, Word2Vec을 문장 단위로 확장한 문서 임베딩 기법이다. (논문 pdf : https://cs.stanford.edu/~quocle/paragraph_vector.pdf) Doc2Vec 기법은 문장 전체에 대해 단어 k개씩 슬라이딩해가며 단어 k개가 주어졌을 때 다음 단어를 맞추는 과정을 학습한다. 예를 들어, 'The cat sat on the mat'라는 문장에서 k=3일 때 아래 알고리즘 그림처럼 the, cat, sat으로 on을 예측한다. 이 과정을 한 단어씩 sliding하며 문장 내..
[NLP] 가중 임베딩 이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다. word2vec, fast text 등 이전까지는 워드 임베딩에 대해 다뤄보았다. 그렇다면 문장을 기준으로는 어떻게 할까? 이러한 단어 임베딩을 문장으로 확장시키는 방법 중에 가중 임베딩이 있다. (pdf 링크 : https://openreview.net/pdf?id=SyK00v5xx) 가중 임베딩 방식에는 '문서 안의 단어는 글쓴이가 생각한 주제에 의존한다'는 내용이 기반되어 있다. 즉, 주제에 따라 단어 사용 양상이 달라진다는 것이다. 주제 벡터 c_s가 있을 때, 임의의 단어 w가 나타날 확률은 다음과 같다. P(w) : 주제와 상관없이 ..
[Linux] bash shell 변수 이용 bash 명령어를 변수로 받아오기 : 변수명=`명령어` 변수 길이 : ${#변수명} for문 : for 변수 in ${변수명} do echo ${변수} done if문 : if [ 조건문 ]; then bash ~~~ fi
[NLP] Swivel (Submatrix-Wise Vector Embedding Leamer) 이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다. Swivel (Submatrix-Wise Vector Embedding Leamer)이란 2016년 구글에서 발표한 행렬 분해 기반 단어 임베딩 기법이다. (논문 pdf : https://arxiv.org/pdf/1602.02215.pdf) GloVe가 단어-문맥 행렬을 분해하는 반면, Swivel은 PMI 행렬을 분해하여 PMI의 단점을 커버할 수 있도록 설계되었다. 점별 상호 정보량 (PMI : Pointwise Mutual Information) 두 확률변수 사이 상관성을 수치화할 때 사용하는 단위로, 여기에서는 두 단어가 같이 등장하는 ..
[NLP] GloVe (Global Word Vectors) 이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다. GloVe (Global Word Vectors)는 2014년 미국 스탠포드대에서 개발된 워드 임베딩 기법이다. (논문 pdf : https://www-nlp.stanford.edu/pubs/glove.pdf) 기존의 임베딩 기법인 Word2Vec은 단어 간 유사도 측정은 잘 할 수 있었으나, 사용자가 지정한 window size 내 문맥만 학습하기 때문에 말뭉치 전체에 대해 학습하기에는 어려웠다. 또한, LSA는 말뭉치 전반적인 통계량은 잘 파악되었지만 단어간 유사도 측정은 잘 하지 못한다는 단점이 있었다. GloVe는 이러한 Word2Vec..
[NLP] 잠재 의미 분석 (LSA) 이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다. 잠재 의미 분석 (LSA : Latent Semantic Analysis)이란, 특이값 분해를 통해 단어-문서 행렬, TF-IDF 등의 행렬 차원 수를 줄이고 잠재적 의미를 이끌어내는 방법론이다. 단어-문서 행렬 등에 잠재 의미 분석을 하여 나온 결과를 워드 임베딩으로 사용할 수 있다. 특이값 분해 특이값 분해 (SVD : Singular Value Decomposition)이란 행렬을 직교 행렬들과 대각 행렬로 분해하는 것을 말하며, 아래와 같이 나타난다. U와 V는 각각 AA^T와 A^TA를 고유값 분해하여 얻어진 행렬이며, Σ의 대각성분을..
[NLP] FastText 이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다. FastText는 Word2Vec에서 단어 대신 문자 단위로 n-gram을 한 모델로, 페이스북에서 2017년에 개발했다. (공식 github : https://github.com/facebookresearch/fastText) Word2Vec과 대부분 내용이 동일하며, 사용하는 단위가 다르다는 차이점이 있다. 예를 들어, "카카오톡"이라는 단어를 n=3인 n-gram을 나타낼 때, 이 끝을 의미하는 기호라면, 으로 나타내며, n-gram으로 나누지 않은 도 포함하여 나타낸다. 단어 임베딩은 아래와 같이 n-gram 벡터의 합으로 나타낸다. 이..
[NLP] Word2Vec (Skip-gram & CBOW) 이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다. 자연어처리 쪽에 관심이 있는 사람이라면 한번쯤 들어봤을 Word2Vec은 2013년 구글에서 발표한, 가장 보편적인 단어 임베딩 모델이다. CBOW와 Skip-Gram 모델이 제안된 Efficient Estimation of Word Representations in Vector Space 논문과, negative sampling 등의 최적화 기법을 제시한 Distributed Representations of Words and Phrase and their Compositionality 논문을 통해 발표되었다. Word2Vec의 종류를 나누자..