Deep Learning/Natural Language Processing 9

[NLP] Pointwise Mutual Information (PMI)

전통적인 자연어처리 방식에서는 동시발생 행렬(Co-occurrence Matrix), 즉, 각 단어가 동시에 출현한 빈도를 측정한 행렬을 사용하였다. 그러나, 발생 횟수를 기반으로 하기 때문에 많이 출현하는 The, A, An 등과 같은 단어로 인해 해당 단어와의 유사도가 높게 측정될 수 있다. 이와 같은 문제를 해결하고자 점별 상호정보량(Pointwise Mutual Information, PMI)이라는 척도가 도입된다. \[ \text{PMI} (x, y) = \log_2 \frac{P(x, y)}{P(x) \cdot P(y)} \] $P(x)$는 x가 발생할 확률, $P(y)$는 y가 발생할 확률, $P(x,y)=P(x \cap y)$는 x와 y가 동시에 발생할 확률을 의미한다. 이때 PMI 값이 ..

[NLP] BERT의 종류

Contents BERT는 Transformer의 Encoder 부분을 사용한 모델이다. 현재까지도 BERT의 파생 모델이 많이 제안되고 있으며, 우수한 모델로써 인정받고 있다. BERT에는 가장 기본적인 BERT와 RoBERTa, ALBERT 등 다양한 파생 모델이 존재하는데, 각각의 모델들이 어떠한 차이점을 가지고 있는지 간략하게 알아보자. BERT BERT는 2018년 구글에서 기계 번역을 위해 제안한 모델이며 "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding"에서 처음 발표하였다. 이는 Supervised Learning 뿐만 아니라 Self-Supervised Learning이 가능하다고 언급하고 있..

Sequence-to-Sequence (Seq2Seq)

Sequence-to-Sequence (Seq2Seq)는 문장을 입력으로 받고 문장을 출력하는 구조를 가지고 있다. 이는 한국어를 영어로 번역하는 것과 같은 기계번역 문제에 주로 사용된다. 또한, 문서를 입력으로 받고 요약하는 형태로도 사용된다. [논문] Seq2Seq에 가장 많이 쓰이는 모델 구조는 RNN이다. 문장의 임베딩 값을 입력으로 사용하여 Encoder를 구성한다. Encoder는 하나의 Context라는 정보를 출력하고 이는 Decoder의 초기값으로 사용된다. Context Vector는 입력으로 들어간 문장의 요약 정보라 할 수 있다. 입력의 시작은 $x_0$이며 일반적으로 토큰을 사용한다. 토큰은 문장을 시작을 알려주는 토큰이며, 문장의 끝을 알려주는 토큰으로는 를 사용한다. 토큰을 맨..

[NLP] Stemming and Lemmatization

Stemming은 어간 추출이라 부르고 Lemmatization은 표제어 추출이라 부른다. 이론적인 부분을 조금 더 상세하게 알고 싶다면 여기로 가면 상세하게 작성해두었다. Stemming from nltk.stem import PorterStemmer from nltk.tokenize import word_tokenize stemmer = PorterStemmer() sentence = "This was not the map we found in Billy Bones's chest, but an accurate copy, \ complete in all things--names and heights and soundings--with the single exception of the red \ cros..

[NLP] Tokenization

Tokenization. 토큰화라고 불리는 이것은 단어를 작은 단위로 쪼개주는 역할을 한다. 영어를 토큰화 할 때에는 nltk를 사용하고, 한국어를 토큰화 할 때에는 konlpy를 사용한다. from nltk.tokenize import word_tokenize from nltk.tokenize import WordPunctTokenizer from torchtext.data import get_tokenizer sentence = "Don't be fooled by the dark sounding name, \ Mr. Jone's Orphanage is as cheery as cheery goes for a pastry shop." print('word_tokenize', word_tokenize(se..

[NLP] Transformer

Sequential Model을 처리하는데 있어서 다루기에 많은 문제들이 발생한다. 끝이 잘리거나, 중간중간 생략이 되거나, 밀리거나 하는 등의 문제가 생기기 때문에 RNN처럼 Sequential 하게 input이 들어가면 Permuted되거나 Omitted 되는 경우 단어를 다루기 힘들어진다. 이와 같은 문제로 인해 기존의 RNN의 문제를 보완하려고 self-attention이라는 것을 타이틀로 Transformer가 등장하게 되었다. (Attention is All you Need, NIPS, 2017) [논문] Recurrent Neural Network(RNN)의 경우 input을 받아 hidden state를 거쳐 output이 나오며 many-to-one의 경우 이전 cell의 정보를 받아서 ..

[NLP] Lexical Analysis

Lexical Analysis Lexical Analysis(어휘 분석) 이라함은 말 그대로 단어수준 토큰 수준으로 의미를 보존할 수 있는 최소한의 수준에서 분석을 하는 것을 의미한다. 어떠한 일정한 순서가 있는 characters 들의 조합을 tokens으로 변화하는 것을 의미한다. 이 tokens은 의미를 가지고 있는 character string이다. NLP에서는 morpheme(형태소)가 가장 기본적인 유닛이 되고, text mining에서는 단어 관점에서도 tokens을 사용하기도 한다. process of lexical analysis - Tokenizing - Part-of-Speech (POS) tagging - Additional analysis : NER, noun phrase reco..

[NLP] INTRODUCTION

NLP를 활용할 수 있는 분야에 대해서 공부해보는 파트이다. 자연어 처리를 활용할 수 있는 사례 자연어 처리는 질문에 대한 응답을 얻기 위하여 사용 음성을 인식하여 음성을 다른 언어로 바꿔주는 번역 및 소리로 변형(파파고, 구글 번역기, 아프리카TV 도네이션 등) image understanding : 이미지를 보여주고 그 이미지에 대해 질응 Linguistic structure : 문장이 주어졌을 경우 알맞은 단어를 찾는 경우 단어에 대해서 분석을 하려면 단어들을 숫자들의 vector로 변형해주어야 한다. 주로 one hot vector로 변형을 해준다. 하지만 one hot vector 에는 여러가지 문제점이 존재한다. Sparsity : 굉장히 정보가 적다. Orthgonal representati..

[NLP] BERT

BERT는 Bidirectional Encoder Representations from Transformers의 약자이며, 이름에서부터 BERT는 Transformers의 Bidirectional Encoder임을 알 수 있다. Bidirectional은 양방향을 의미하고 Encoder는 입력값을 숫자 형태로 바꾸는 모듈을 의미하기 때문에 BERT는 문맥을 양방향으로 이해해서 숫자의 형태로 바꿔주는 딥러닝 모델이다라고 할 수 있다. Transformer는 2017년에 구글에서 발표한 Encoder, Decoder구조를 가진 딥러닝 모델이며 Machine Translation(MT)에서 우수한 성능을 보여준 모델이다. BERT에서 Encoder는 양방향으로 처리하고 Decoder는 왼쪽에서 오른쪽으로 단방..

반응형