본문 바로가기

자연어 처리(NLP)16

RNN/LSTM/GRU 의 구조를 이해해보자 Sequential data 시퀀셜 데이터(sequential data)란, 순서 정보가 있는 데이터를 말합니다. 주식 시장을 예로 들면 시간 경과에 따른 주가의 변화를 생각해볼 수 있습니다. 이 예시는 많이 언급되므로 이번에는 다른 예를 들어보겠습니다. 아래 그림은 제 블로그의 월별 방문자수를 나타낸 그래프 입니다. 시간이 지남에 따라 방문자의 수가 증가하는 양상을 보이고 있습니다. 이러한 양상은 데이터의 순서 정보를 이용하여 파악할 수 있습니다. 10월 방문자수 1014명이 9월 방문자수 634명보다 많으며, 대체적으로 특정 달의 방문자 수가 그 전 달보다 방문자 수 보다 많기 때문에 우리는 전체적으로 방문자수가 증가 추세에 있다고 말할 수 있습니다. 만약 아래 데이터의 순서 정보를 섞게 된다면 방문.. 2022. 11. 8.
Tokenizer : 한국어 형태소 분석기의 종류와 사용 방법 1. 형태소 분석기의 필요성 한국어는 영어와는 다르게 토큰화(Tokenization)가 어렵습니다. 그 이유는 한국어에는 '조사', '어미' 등이 있기 때문입니다. 예를 들어, '사과' 라는 단어에 대해 조사가 붙는다고 하면 '사과가', '사과는', '사과를', '사과와' 등처럼 붙게 됩니다. 모두 '사과'를 지칭하는 말이지만, 단순히 띄어쓰기 기준(어절)으로 모두 다른 단어로 취급하게 됩니다. 또한, 띄어쓰기 기준으로 토큰화를 진행하게 된다면 띄어쓰기가 잘 되어있지 않은 문장에 대해 제대로 된 토큰화를 수행할 수 없다는 단점이 있습니다. 예를 들면, 다음과 같이 띄어쓰기 기준으로 토큰화를 한다고 하였을 때, 띄어쓰기가 제대로 되어있지 않은 문장에 대해서는 토큰화가 이루어지지 않습니다. '나는 사과를 좋.. 2022. 7. 26.
Transformer를 이용한 번역모델 구축 이전글 1 : Transformer를 이해하고 구현해보자! (1) 이전글 2 : Transformer를 이해하고 구현해보자! (2) 이번 포스팅에서는 이전에 구현한 모델을 이용하여 간단히 한-영 번역기를 만들어 보도록 하겠습니다. 전체 코드를 보고 싶으신 분은 아래 깃허브를 참고해주세요. Github Link : (정리되면 링크 업로드 예정입니다!) 1. Data 데이터는 AI-Hub에서 공개한 '한국어-영어(병렬) 말뭉치' 데이터를 사용하였습니다. 해당 사이트에 회원가입을 진행 한 후, 전체 160만쌍의 데이터를 다운 받을 수도 있지만, 본 포스트에서는 오직 '샘플 데이터' 만 사용하였습니다. 샘플 데이터에 대해 간단히 요약하면 다음과 같습니다. 샘플 데이터는 총 6개의 파일로 구성되어 있으며 각각 다.. 2022. 1. 22.
Transformer를 이해하고 구현해보자! (2) 이전글 : Transformer를 이해하고 구현해보자! (1) 다음글 : Transformer를 이용한 번역모델 구축 저번 포스팅에서는 Transformer의 구성요소인 Positional Encoding, Multi-Head Attention, LayerNorm, Feed-Forward에 대해 알아보고 구현해보았습니다. 이번 포스팅에서는 저번 포스팅에 이어 Encoder와 Decoder를 구현한 뒤, 전체 모델인 Transformer를 구현해보겠습니다. 사실 구현에 필요한 핵심적인 부분은 모두 저번 포스트에서 다루었기 때문에 이번 포스트에서는 전에 구현한 클래스들을 이어붙이는 작업이 주를 이룹니다. +) 다음 포스팅에서는 이번에 구현한 Transformer 모델을 이용하여 한-영 번역기 모델도 학습을 .. 2022. 1. 21.
Transformer를 이해하고 구현해보자! (1) 다음 글 : Transformer를 이해하고 구현해보자! (2)이번 포스트에서는 Transformer의 시초(?)인 'Attention is all you need' 라는 논문에서 나온 모델에 대해 나름대로 이해한 내용을 정리하며 그 내용을 토대로 Pytorch로 구현해보고자 합니다.Transformer는 크게 Encoder(왼쪽) 와 Decoder(오른쪽) 으로 구성되어 있습니다. 이번 포스트에서는 Encoder와 Decoder에서 모두 사용하는 Positional Encoding, Multi-Head Attention, Add&Norm 그리고 Feed-Forward에 대해 설명하며, 다음 포스트에서는 본격적으로 Encoder layer와 Decoder Layer를 정의하고 학습까지 진행해보도록 하곘습.. 2021. 10. 25.
[Pytorch] CNN을 이용한 문장 분류 모델 구현하기 이전 포스트에 설명한 CNN을 기반으로, 이번엔 직접 데이터 전처리부터 시작해서 CNN을 이용한 문장 분류까지의 이야기를 해보려고 합니다! 데이터는 한글 데이터 중 널리 알려진 "네이버 영화 리뷰"를 사용합니다! 우선 제가 구현한 컴퓨터의 라이브러리 버전들은 다음과 같습니다. OS : Linux Ubuntu 20.04 LTS python = 3.8.5 pytorch = 1.8.0 torchtext = 0.9.0 #Step 1. 데이터 다운받기 '네이버 영화 리뷰' 데이터는 https://github.com/e9t/nsmc/ 에서 다운받을 수 있습니다! 다운 받으시면 모델 훈련에 사용할 'ratings_train.txt' 파일과 모델 테스트에 사용할 'ratings_test.txt' 를 보실 수 있습니다... 2021. 8. 12.
CNN(Convolutional Neural Network) 이해하기 #1. Introduction 이번 포스트에서는 CNN에 대해 설명드리려고 합니다. CNN은 이미지 처리나 음성인식등의 분야에서 널리 쓰이는 기법입니다. 기존의 DNN같은 경우엔 Fully-connected된 계층을 사용하였지만, CNN같은 경우엔 Convolution layer(합성곱 계층)과 pooling layer(풀링 계층)이 추가되는것이 특징입니다. 아래 예시는 일반적인 CNN의 구조를 나타내고 있습니다.(중간에 Activation은 생략되었습니다.) 그림을 살펴보면 Convolution layer와 Pooling layer가 한세트로 묶여서 여러번 층을 구성한것을 확인할 수 있으며, 마지막으로는 Fully connected layer로 마무리하는 구조입니다. 그렇다면 Convolution 계층.. 2020. 2. 5.