본문 바로가기

개발/NLP

(19)
NLP Load : 맨땅에 헤딩하는 NLP 공부일지 (8) 앞선 선형회귀(Linear Regression), 로지스틱 회귀(Logistic Regression)에 이어 오늘은 Softmax Regression과 ANN(Artificial Neural Network)에 대해 공부해보자! Ⅰ. 이진 분류와 다중 클래스 분류 두 개의 선택지 중에서 정답을 고르는 문제를 이진 분류 문제(Binary Classification)이라고 한다. 세 개 이상의 선택지 중에서 정답을 고르는 문제에 사용하는 모델을 다중 클래스 분류 문제(MultiClass Classification)이라고 한다. 그리고 요때 사용하는 알고리즘이 Softmax Regression이다!! Ⅱ. Softmax Regression 한 가지 예시를 들어서 이야기를 이어가보도록 하자. 음... 쉽게 얘기하..
NLP Load : 맨땅에 헤딩하는 NLP 공부일지 (7) 이전 포스팅에 이어 로지스틱 회귀(Logistic Regression)에 대해 알아보자. Ⅰ. 로지스틱 회귀 (Logistic Regression) 로지스틱 회귀는 2개의 선택지 중에서 정답을 고르는 문제에 사용되는 모델이다. 스팸 메일 분류나 합격, 불합격을 분류하는게 대표적인 예시라고 할 수 있다. 흔히 Binary Classification(이진분류)이라고 부르기도 하는데 막간을 이용해서 잠깐 설명해보면 Binary Classification은 분류문제의 종류중 하나이고 주어진 데이터를 2가지 label중 하나로 분류하는 task를 의미합니다! 그에 비해 Logistic Regression은 딥러닝 뿐 아니라 머신러닝/딥러닝을 통틀어서 가장 잘 사용되는 알고리즘이고, 주로 분류 task에 사용되는 ..
NLP Load : 맨땅에 헤딩하는 NLP 공부일지 (6) 오늘은 본격적인 워드 임베딩에 들어가기 앞서 가장 기초적인 몇가지 신경망에 대해 알아보고 정리하는 시간을 가지도록 하겠다~~ 그중에서도 선형회귀(Linear Regression)에 대해 알아볼 예정인데 (물론, 소프트맥스 회귀, 로지스틱 회귀, MLP 까지는 정리하려고 한다), 섬세한 내용은 머신러닝 카테고리에서 자세히 다룰예정이기 때문에 NLP 카테고리에서는 기본개념를 이해하는 정도로만 다루도록 하겠다. 자 가보자고~~ Ⅰ. 머신러닝? 기존의 프로그래밍은 원하고자 하는 프로세스가 명확하게 규정되어있고 이를 프로그래밍 언어로 옮긴 것이다. 즉, input이 있고, 명시적인 프로세스를 따라 ouput이 나온다는 말이다. 예를들자면 "더하기를 만드는 프로그램"은 a라는 변수와 b라는 변수가 왔을 때 2개의 ..
NLP Load : 맨땅에 헤딩하는 NLP 공부일지 (5) 0. 이전까지의 학습내용 컴퓨터는 데이터 속 문장의 경계, 단어의 경계, 어떤 내용은 포함하고 그렇지 않은지 기준을 명시에 주어야 한다. 주어진 데이터에 대해서 위와 같은 목적으로 특정 단위기준을 가지고 구분하는 작업을 "토큰화" 또는 "토크나이징"이라고 하고, 단위에 따라 단어 토큰화(Word Tokenization), 문장 토큰화(Sentence Tokenization)로 나누기도 한다. 토큰화는 직접 하는것 보다 만들어져있는 토크나이저를 사용하는 것이 효율적이며 그 중에서 Mecab이 보편적으로 빠르고 준수한 성능을 보인다. 토큰화가 끝난 데이터를 하나의 집합으로 담게 되는데 이를 Vocabulary, 혹은 vocab이라고 말하고 이 안에 든 단어들은 중복되지 않는다. 이들 각각의 단어에는 고유한 ..
NLP Load : 맨땅에 헤딩하는 NLP 공부일지 (4) 정수 인코딩 (Integer Encoding) 주어진 데이터셋에 대해 단어/형태소 토큰화를 수행한 이후 각 단어에 고유한 정수를 부여하는 작업을 말한다. 단, 중복이 허용되지 않는 모든 단어들의 집합을 만드는 것! 이를 단어 집합(Vocabulary)라고 하며 "Vocab"이라고 부르기도 한다. 이를 기반으로 문서를 정수로 인코딩한다!! 특수 토큰 및 데이터셋의 소소한 이야기 데이터셋을 다룰때 보통 pandas 라이브러리를 자주 사용하는데, df.info() 를 사용하면 각 데이터의 타입을 볼 수 있다. 여기서 Dtype이 object로 보인다면 문자열을 의미한다고 이해하면 된다. 데이터셋의 분할을 할땐 train_test_split()을 이용하면 쉽게 훈련 셋과 테스트 셋을 나눌 수 있다. collec..