Data Science/Machine Learning & Deep Learning
-
[Deep Learning] Bag-of-Words(BoW) - CountVectorizer, TF-IDF VectorizerData Science/Machine Learning & Deep Learning 2021. 4. 18. 23:36
머신러닝 모델에 텍스트를 이용하기 위해서는 텍스트를 토큰화한 것을 컴퓨터가 이해할 수 있도록 벡터화 해주어야 합니다. 벡터화 방법 중 BoW( Bag of Words )는 단어의 존재 여부와 그 빈도 정보만을 고려해 벡터화하는 모델입니다. CountVectorizer 단어의 출현 빈도로 여러 문서를 벡터화하는 방법 행에 문서, 열에 토큰, 그 값(value)으로 문서에서 토큰의 출현 횟수 모든 문자를 소문자로 전환하여 계산 from sklearn.feature_extraction.text import CountVectorizer # Count vectorizer. vect = CountVectorizer(stop_words = 'english', max_features = 20) # fit & trans..
-
[Deep Learning] NLP - 어간추출(stemming) & 표제어추출(lemmatization)Data Science/Machine Learning & Deep Learning 2021. 4. 16. 15:46
어간 추출과 표제어 추출은 token 의 수를 줄일 수 있습니다. apple, apples가 있다면 apple 하나로 하여 단어의 수를 줄일 수 있는 것입니다. 어간추출 Stemming 접사를 제거하고 단어의 의미가 포함된 핵심 부분만 남겨 변환 어간과 접사 분리( ing, ed, s 와 같은 것들을 제거 ) ex ) wolves -> wolv from nltk.stem import PorterStemmer ps = PorterStemmer() text = 'Wolves were feeding in the forest' words = text.split(" ") for word in words: print(ps.stem(word)) 표제어추출 Lemmatization 단어들은 기본 사전형 단어 형태인 l..
-
[Deep Learning] NLP - 통계적 트리밍(Trimming)Data Science/Machine Learning & Deep Learning 2021. 4. 15. 00:58
자연어 처리에서 불용어 사전을 이용해서 불용어를 직접 제거해주는 방법도 있지만, 통계적인 방법을 이용해서 전체 말뭉치에서 너무 많이 쓰였거나 너무 적게 쓰인 토큰을 제거해주는 방법도 있습니다. 위 왼쪽 그래프는 토큰화 후 토큰의 누적 분포를 나타낸 그래프입니다. 그래프를 통해 소수의 단어들이 전체 텍스트 데이터의 약 90%를 차지하고 있음을 알 수 있습니다. 이는 전체 말뭉치에서 자주 나타나는 단어들(그래프의 왼쪽)이거나 자주 나타나지 않는 단어들(그래프의 오른쪽)로 너무 많이 또는 너무 드물게 나타나기 때문에 텍스트 큰 의미를 가지지 못하고 통찰력을 제공하지 못할 확률이 높습니다. 따라서 통계적 트리밍으로 너무 많이 쓰인 토큰과 너무 적게 쓰인 토큰을 제거하여 우측 그래프와 같은 분포를 만들어 주겠습니..
-
[Deep Learning] NLP - 불용어 ( Stop Words ) 처리Data Science/Machine Learning & Deep Learning 2021. 4. 15. 00:12
어떠한 데이터를 토큰화한 후 문서에 많이 사용된 단어를 보면 'I', 'and', 'of' 등의 텍스트 내에서 큰 의미를 가지지 않는 것들을 볼 수 있습니다. 이는 그다지 텍스트의 내용을 이해하는데 도움이 되지 않는 것들로 불용어(Stop words) 라고 합니다. 대부분의 NLP 라이브러리는 불용어 사전을 내장하고 있습니다. spacy의 불용어 사전을 보겠습니다. import spacy # load the small english model nlp = spacy.load("en_core_web_sm") print(nlp.Defaults.stop_words) 먼저 데이터를 불러와 불용어를 제거하지 않고 토큰화를 해보았습니다. import spacy from spacy.tokenizer import Tok..
-
[Deep Learning] NLP - 텍스트 토큰화 ( Tokenization )Data Science/Machine Learning & Deep Learning 2021. 4. 13. 22:44
토큰(Token)은 보통 자연어 처리에서 최소단위로 사용되는데 단어, 형태소 등의 형태가 될 수 있습니다. 문서나 문장 등을 자연어 처리에 사용하기 위해 텍스트를 토큰으로 바꿔주는 토큰화(Tokenization)를 해야하는데, 토큰화를 올바르게 하기 위해서 아래와 같은 조건을 충족하는 것이 좋습니다. 반복 가능한 데이터 구조(list, generator 등)에 저장 가능하면 대문자 또는 소문자로 통일 가능하면 영문자, 숫자가 아닌 문자들을 제거해야함 - ex) 문장부호, 공백 등 NLP 라이브러리를 사용하기 앞서 파이썬을 이용하여 토큰화를 위한 함수를 만들어 보겠습니다. import re # 정규식 # []: [] 사이 문자를 매치, ^: not regex = r"[^a-zA-Z0-9 ]" # 치환할 문..
-
[Deep Learning] 손실함수(Loss Function)Data Science/Machine Learning & Deep Learning 2021. 4. 13. 00:15
신경망의 성능을 측정하기 위해서는 손실 함수를 계산해야 합니다. 출력층에서 나온 예측 값을 실제 타겟 값과 비교하여 그 차이를 계산하는 함수가 손실함수이며, 이 때 출력값과 실제 타겟 값의 차이가 크면 손실함수의 값이 커지며, 차이가 적다면 손실함수의 값도 작아집니다. 모델은 이러한 손실 함수의 값이 작아지는 방향으로 가중치를 업데이트 하게 됩니다. 다음 손실함수에 대해서 알아보겠습니다. MeanSquaredError BinaryCrossentropy CategoricalCrossentropy SparseCategoricalCrossentropy MeanSquareError - regression 손실 함수 - 연속형 변수의 예측 문제시 사용 - 예측값과 ..
-
[Deep Learning] 역전파 ( Back Propagation )Data Science/Machine Learning & Deep Learning 2021. 4. 11. 01:16
역전파를 설명하기 위한 신경망입니다. 입력층(input layer)과 은닉층(hidden layer), 출력층(output layer)을 가지고 있으며, 2개의 입력(입력 변수 두가지)을 받고 은닉층과 출력층에는 각각 노드를 두개씩 가지고 있습니다. 위 그림으로 순전파와 역전파의 진행 방향을 간단하게 알 수 있습니다. 순전파가 입력층에서 값을 입력 받아 은닉층 출력층으로 입력값에 가중치를 곱한 값을 가중합하여 출력층에서 출력값을 내어놓는 것을 말한다면, 역전파는 반대로 출력층에서 입력층의 방향으로 진행되며 손실함수를 해당 가중치로 미분한 값을 이용하여 가중치를 업데이트 하는 것을 말합니다. 인공 신경망 모델에서 학습이란 위의 순전파, 역전파 과정을 반복하며 적은 오차를 내는 가중치를 찾아 업데이트 하는 ..
-
[Deep Learning] 인공신경망( Artificial Neural Networks )과 퍼셉트론( Perceptron )Data Science/Machine Learning & Deep Learning 2021. 4. 6. 00:36
신경망 기본 구조 노드 (뉴런) - Node 가중치 (엣지, 연결) - Weight 입력/ 은닉/ 출력층 - Layer 퍼셉트론 ( Perceptron ) 하나의 노드로 이루어진 신경망 다수의 입력값을 받아 하나의 출력값 내보냄 노드 ( Node ) 값을 입력 받아 일정값이 넘으면 넘겨주는 역할 노드맵에서 동그라미 부분 레이어는 n개의 노드(뉴런)으로 구성 신체 신경계에서 뉴런의 역할 가중치 ( Weight) 노드로 입력 받은 값에 곱해지는 수치 가중치가 곱해진 값들은 모두 더해져 활성화 함수에 따라 그 결과를 다음 층의 노드로 전달 신경망에서 가중치를 찾는 과정을 학습이라고 하며, 가중치는 예측에 사용됨 신경망 층 ( Layer ) 입력층 ( Input Layers ) 데이터셋으로부터 입력받는 층 입력..