본문 바로가기

DataScience/NLP4

RNN으로 스팸 메일 분류하기 RNN의 기본 컨셉은 현재 결과(state)을 다음 노드에 전달하는 것입니다. 이를 통해 시계열 데이터와 같이 순서가 있는 데이터를 처리할 수 있습니다. RNN 중 SimpleRNN 또는 Vanila RNN이라 불리는 모델을 사용해 스팸 메일을 분류하는 모델을 만들어봤습니다. 이 과정을 통해 제가 배운 것은 Embedding layer의 구조입니다. 아래에서 자세히 설명하겠지만, Embedding layer를 만들 때 설정하는 파라미터와 작동하는 원리가 헷갈렸는데, 이부분을 정리할 수 있었습니다. 1. 데이터셋 준비 1.1 데이터 살펴보기 더보기 데이터셋은 캐글에 있는 데이터셋을 사용했습니다. 스팸여부와 메일의 내용이 담겨져 있고, null이 없어 5572개의 row를 모두 사용할 수 있습니다. 데이터의.. 2023. 7. 30.
Word Embedding 이란? Word Embedding은 분산표현(distributed representation)과 같은 의미로, 단어를 표현하는 벡터를 의미합니다. 이는 추론과정에서 얻어지는 부산물로 이해할 수 있습니다. word2vec는 맥락으로부터 해당 단어를 유추하는 신경망을 뜻합니다. 대표적으로 CBOW와 skip-gram이 있는데요, 그 중 CBOW를 통해 word embedding에 대해 설명해보겠습니다. 먼저 맥락이 입력값으로 들어갑니다. 이 때 맥락이란 타겟 단어의 주위에 있는 단어를 의미합니다. 예를 들면 "나는 밥을 먹었고 배가 너무 부르다" 라는 문장이 있다면 이는 [ "나는", "밥을", "먹었고", "배가", "너무", "부르다"] 와 같이 띄어쓰기 단위로 아주 단순하게 토큰화할 수 있습니다. 이때 타겟을.. 2023. 7. 18.
분포가설 자연어를 처리하는데 가장 기본이 되는 가설입니다. 분포 가설은 "단어의 뜻은 주위 단어와의 관계, 맥락에 의해 결정된다"를 말합니다. 이를 기반으로 단어를 벡터로 표현한, 분산표현을 얻고자 하며 여기에는 통계적 방법과 추론적 방법(word2vec)가 있습니다. 그 중 통계적 방법에 대해 정리해보겠습니다. 통계적 방법은 수를 세는 것입니다. "You say goodby and I say hello" 와 같은 문장이 있다면 다음과 같은 동시발생행렬을 얻을 수 있습니다. 그리고 이를 바탕으로 유사도를 계산해볼 수 있습니다. 자연어를 다루는데 가장 중요한 것은 단어들을 벡터(분산표현)로 표현하는 것입니다. 여기서 가정하는 가설이 분포가설이며, 맥락이 단어의 의미를 결정한다는 것입니다. 분산표현을 얻기 위한 방법.. 2023. 7. 18.
영어에 비해 한국어에서 자연어처리가 더 어려운 이유 먼저 Corpus는 말뭉치라는 의미로, 데이터의 집합정도로 이해할 수 있고, Token은 의미를 가지는 단위로 의미할 수 있습니다. 자연어를 처리하기 위해서는 Corpus를 Token으로 나누는 Tokenize과정이 필요합니다. 이 과정에서 영어에 비해 한국어가 더 어렵습니다. 그 이유는 단어의 구조에 있습니다. 먼저 영어의 경우 특수한 경우를 제외하고 띄어쓰기 단위로 쉽게 tokenize할 수 있습니다. 입력 Time is an illusion. Lunchtime double so! 출력 "Time", "is", "an", "illustion", "Lunchtime", "double", "so" 하지만 한국어는 다릅니다. 한국어는 교착어로 어간과 어미가 합쳐져 하나의 어절을 구성합니다. 실질적인 의미를.. 2023. 7. 15.