AI를 이용해 코로나 확진자를 예측 해보자! (1)
·
머신러닝/AI 프로젝트
요즘 코로나 바이러스가 엄청나게 유행이다. 파이썬을 이용해서 코로나 바이러스 확진자를 예측해보자. 1. Technology Python3 google colab pandas plotly facebook Prophet Data 1-1. google colab 코딩의 가상 환경을 코랩으로 잡았다. 그 이유는 크게 3가지다. 첫 번째는 개인적으로 편해서이다. 개발은 파이참(Pycharm), 연구는 코랩, 주피터 노트북을 많이 사용한다. 그렇기 때문에 딥러닝은 물론 전반적인 파이썬 프로그래밍에 가장 많이 사용되는 코랩을 가상환경으로 잡았다. 두 번째는 GPU가 약한 PC에서도 무료로 GPU, TPU를 사용할 수 있기 때문이다. 다만, 내 컴퓨터가 아니므로 새로 설치한 패키지가 저장되지 않는다는 점과 사용한 예제..
Bag of Words(BoW)
·
머신러닝/딥러닝을 이용한 자연어처리 입문
1. Bag of Words란? Bag of Words란 단어들의 순서는 전혀 고려하지 않고, 오직 단어들의 출현 빈도에만 집중하는 텍스트 데이터의 수치화 표현 방법이다. 직역하면 단어들의 가방이라는 의미이다. 단어들이 들어있는 가방이있다. 갖고있는 텍스트 문서에 있는 단어들을 가방에 전부 넣어 흔들고 섞었다 만약 문서에 특정 단어가 N번 등장 했다면, 이 가방에는 그 특정 단어가 N개있게 된다. 가방을 흔들어서 단어를 섞었기 때문에 순서는 중요하지 않다. BoW 만드는 과정 (1) 우선, 각 단어에 고유한 정수 인덱스를 부여한다. (2) 각 인덱스의 위치에 단어 토큰의 등장 횟수를 기록한 벡터를 만든다. ※예시※ 문서: 정부가 발표하는 물가상승률과 소비자가 느끼는 물가상승률은 다르다. from konl..
원-핫 인코딩(One-hot encoding)
·
머신러닝/딥러닝을 이용한 자연어처리 입문
1. 원-핫 인코딩(One-hot encoding)이란? 자연어 처리에서는 문자를 숫자로 바꾸는 여러 가지 기법들이 있습니다. 그중에서도 가장 기본적인 표현방법이 바로 원-핫 인코딩이라는 표현방법이다. 단어 집합의 크기를 벡터으 차원으로 하고, 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 다른 인덱스에는 0을 부여하는 단어의 벡터 표현 방식이다. 이렇게 표현된 벡터를 원-핫 벡터(One-hot vector)라고 한다. 원-핫 인코딩의 두 가지 과정 (1) 각 단어에 고유한 인덱스를 부여합니다. (정수 인코딩) (2) 표현하고 싶은 단어의 인덱스의 위치에 1을 부여하고, 다른 단어의 인덱스의 위치에는 0을 부여한다. ※예시※ 문장: 나는 자연어 처리를 배운다 from konlpy.tag import..
RNN(Recurrent Neural Network)
·
머신러닝/딥러닝을 이용한 자연어처리 입문
RNN은 sequence data를 처리하는 모델이다. sequence는 순서대로 처리해야 하는 것을 뜻하고, 이런 데이터에는 음성인식, 자연어 처리 등이 포함된다. 자연어의 경우 단어 하나만 안다고 해서 처리될 수 없고, 앞뒤 문맥을 함께 이해해야 해석이 가능하다. 순차적으로 들어오는 입력을 그림으로 표현하면 위와 같이 된다. 똑같은 모양이 오른쪽으로 무한하게 반복된다. 이걸 간단하게 표현하려고 하니까, 그림 왼쪽과 같은 형태가 된다. A에서 나온 화살표가 다시 A로 들어간다. 프로그래밍에서는 이런 걸 재진입(re-enterence) 또는 재귀(recursion)라고 부른다. 이쪽 세계에서는 recurrent라는 용어를 쓰고, "다시 현재"라는 뜻이고 정확하게는 "되풀이"라고 해석한다. 예문 : "wh..
데이터의 분리(Splitting Data)
·
머신러닝/딥러닝을 이용한 자연어처리 입문
1. 지도 학습(Supervised Learning) 지도 학습의 훈련 데이터는 문제지를 연상케 한다. 지도 학습의훈련 데이터는 정답이 무엇인지 맞춰 하는 '문제'에 해당되는 데이터와 레이블이라고 부르는 '정답'이 적혀있는 데이터로 구성되어 있다.게 비유하면, 기계는 정답이 적혀져 있는 문제지를 문제와 정답을 함께 보면서 열심히 공부하고, 향후에 정답이 없는 문제에 대해서도 정답을 예측해서 대답하게 되는 메커니즘이다다. 이해를 쉽게 하기위해서 우리는 기계를 지도하는 선생님의 입장이 되어볼것이다. 기계를 가르치기 위해서 데이터를 총 4개로 나눈다. 우선 메일의 내용이 담긴 첫번째 열을 X에 저장합니다. 그리고 메일이 스팸인지 정상인지 정답이 적혀있는 두번째 열을 y에 저장한다. 이제 문제지에 해당되는 20..
불용어(Stopword)
·
머신러닝/딥러닝을 이용한 자연어처리 입문
갖고 있는 데이터에서 유의미한 단어 토큰만을 선별하기 위해서는 큰 의미가 없는 단어 토큰을 제거하는 작업이 필요하다. 여기서 큰 의미가 없다는 것은 자주 등장하지만 분석을 하는 것에 있어서는 큰 도움이 되지 않는 단어들을 말한다. 예를 들면, I, my, me, over, 조사, 접미사 같은 단어들은 문장에서는 자주 등장하지만 실제 의미 분석을 하는 데는 거의 기여하는 바가 없다. 이러한 단어들을 불용어(stopword)라고 한다. 1. NLTK에서 불용어 확인하기 from nltk.corpus import stopwords stopwords.words('english')[:10] ['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', ..
어간 추출(Stemming) and 표제어 추출(Lemmatization)
·
머신러닝/딥러닝을 이용한 자연어처리 입문
규화 기법 중 코퍼스에 있는 단어의 개수를 줄일 수 있는 기법인 표제어 추출(lemmatization)과 어간 추출(stemming)의 개념에 대해서 알아볼 것이다. 이 두 작업이 갖고 있는 의미는 눈으로 봤을 때는 서로 다른 단어들이지만, 하나의 단어로 일반화시킬 수 있다면 하나의 단어로 일반화시켜서 문서 내의 단어 수를 줄이겠다는 것이다. 1. 표제어 추출(Lemmatization) 표제어(Lemma)는 한글로는 '표제어' 또는 '기본 사전형 단어' 정도의 의미를 갖습니다. 표제어 추출은 단어들로부터 표제어를 찾아가는 과정이다. 표제어 추출은 단어들이 다른 형태를 가지더라도, 그 뿌리 단어를 찾아가서 단어의 개수를 줄일 수 있는지 판단한다. 예를 들어서 am, are, is는 서로 다른 스펠링이지만 ..
정제(Cleaning) 과 정규화(Normalization)
·
머신러닝/딥러닝을 이용한 자연어처리 입문
코퍼스에서 용도에 맞게 토큰을 분류하는 작업을 토큰화(tokenization)라고 하며, 토큰화 작업 전, 후에는 텍스트 데이터를 용도에 맞게 정제(cleaning) 및 정규화(normalization)하는 일이 항상 함께합니다. 정제 및 정규화의 목적은 각각 다음과 같다. 정제(cleaning) : 갖고 있는 코퍼스로부터 노이즈 데이터를 제거한다. 정규화(normalization) : 표현 방법이 다른 단어들을 통합시켜서 같은 단어로 만들어준다. 정제 작업은 토큰화 작업에 방해가 되는 부분들을 배제시키고 토큰화 작업을 수행하기 위해서 토큰화 작업보다 앞서 이루어지기도 하지만, 토큰화 작업 이후에도 여전히 남아있는 노이즈들을 제거하기 위해 지속적으로 이루어지기도 한다. 사실 완벽한 정제 작업은 어려운 편..
토큰화(Tokenization)
·
머신러닝/딥러닝을 이용한 자연어처리 입문
1. 단어 토큰화 토큰의 기준을 단어(word)로 하는 경우, 단어 토큰화(word tokenization)라고 한다. 다만, 여기서 단어(word)는 단어 단위 외에도 단어 구, 의미를 갖는 문자열로도 간주되기도 한다. 예를 들어보면, 구두점(punctuation)과 같은 문자는 제외시키는 간단한 단어 토큰화를 해보자. *구두점이란, 온점(.), 컴마(,), 물음표(?), 세미콜론(;), 느낌표(!) 등과 같은 기호를 말한다. 입력:Time is an illusion. Lunchtime double so! 이러한 입력으로 구두점을 제외 시킨 토큰화 작업을 한 결과는 다음과 같다. 출력 : "Time", "is", "an", "illustion", "Lunchtime", "double", "so" 이 예..
자연어 처리(NLP)란?
·
머신러닝/딥러닝을 이용한 자연어처리 입문
자연어(natural language)란 우리가 일상 생활에서 사용하는 언어를 말합니다. 자연어 처리(natural language processing)란 이러한 자연어를 의미를 분석하여 컴퓨터가 처리할 수 있도록 하는 일을 말합니다. 자연어 처리는 음성 인식, 내용 요약, 번역, 사용자의 감성 분석, 텍스트 분류 작업(스팸 메일 분류, 뉴스 기사 카테고리 분류), 질의 응답 시스템, 챗봇과 같은 곳에서 사용되는 분야입니다. 또한 텍스트에서 의미있는 정보를 분석, 추출하고 이해하는 일련의 기술집합이라고도 합니다. 일상 생활속 예 텍스트 요약 (ex: Summly) 자동 질의응답 시스템 (ex: Wolfram Alpha) 대화 시스템 (ex: Apple Siri) 기계 번역 (ex: Google Trans..