Home

Python - 00 (Python의 장점 및 자료형)

Python왜 Python을 배워야 할까? 프로그래밍 언어를 배우고 싶은데 어떤 언어를 배우면 될까? C, C++, C#, Java, Javascript, Python, Ruby, C#, Go, Rust, Scala Perl, Obj-C, PHP, R, Julia 등 여러가지 언어가 존재하지만 가장 진입장벽이 낮다. Python 언어의 장점 문법이

내가 정리하는 자료구조 00 (Node, List, Queue)

목표 기본 자료 구조/알고리즘 익히기 알고리즘 풀이를 위해, 기본적으로 알고 있어야 하는 자료구조와 알고리즘 정리 자료구조란? 용어: 자료구조 = 데이터 구조 = data structure 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미 코드상에서 효율적으로 데이터를 처리하기 위해, 데이터 특성에 따라, 체계적으로 데이터를 구조화해야

data engineering (데이터 모델링 및 챗봇 만들기)

Spotify 데이터 유사도 모델링 모든 track을 다 유클리디안 거리를 계산해서 유사도를 측정하기에는 많은 양이기 때문에 해당 Artist의 track들의 audio feature 데이터에 대해 평균을 낸 값을 사용하여 Artist 끼리의 유사도를 계산할 것이다. 해당 유사도를 계산하기 위해 아래와 같이 먼저 RDS에 접속하여 table을 생성해 준다.

data engineering (데이터 파이프라인 자동화)

데이터 워크 플로우 이전에도 언급했었듯이 데이터 파이프라인은 아래와 같은 서비스들을 S3에 모아 Athena같은 서비스로 분석해준 뒤 그 결과를 저장해놓은 일련의 데이터 작업의 흐름을 일컫는다. 하나의 job이 시작되거나 어떠한 event에 trigger가 됬을때, 또 다른 job으로 연결이 되는 이런 정보들을 DAGs(Directed Acyclic

data engineering (Presto란?)

Presto란? Spark의 단점이라 하면, 물론 Spark SQL도 있지만, 어느 정도 Scripting이 필요한 부분이 있다. MySQL 같이 RDS로 데이터 구축을 했을때에는 SQL을 통해서 쉽게 가져올 수 있었지만, Big data로 넘어 오면서 이전 필자의 글을 보았을 때 S3에서 두 곳에 나누어 저장을 했는데, 이런 경우 그럼 RDS와 다르게 어

data engineering (데이터 웨어하우스 vs 데이터 레이크)

데이터 웨어하우스 vs 데이터 레이크 데이터 레이크라는 개념은 비교적 최신의 개념이다. 데이터 웨어하우스라고 하는 MySQL, PostgreSQL 같은 RDBMS 프로그램들을 넘어서 데이터들이 너무나 방대해졌기 때문에 나온 시스템이라고 할 수 있다. 이전의 데이터 웨어하우스는 미리 짜여진 구조를 통해 가공해서 저장했기에 좀 더 접근하기 쉬었다. 반면에 데

NLP 실습 Chat bot 만들기

지금까지 두 가지 문제에 대해 실습을 진행하였다. 1) 텍스트를 분석해서 각 텍스트를 분류하는 문제를 실습했고, 2) 두 개의 텍스트가 있을 때 각 텍스트끼리의 유사도를 판단하는 문제를 실습했다. 마지막으로 이번에는 텍스트를 단순히 분석해서 분류나 유사도를 측정하는 것이 아닌 직업 문장을 생성할 수 있는 text generation 문제를 실습해 볼 것이

NLP 실습 유사도를 반영한 검색 키워드 최적화

이번 실습의 소개는 프로젝트성으로 진행 할 것이다. 프로젝트 소개더존 ICT 온라인 고객센터 키워드 검색 최적화 및 챗봇 구현 프로젝트를 하게 된 계기 먼저, 더존 온라인 고객센터 페이지 중 smart A에 관한 페이지에서 전체 탭을 클릭한 후, 살펴본 QnA 페이지를 살펴보았다. 필자는 고객들의 입장에서 생각해보았을때, 자신이 작성하는 질문(물론

NLP 실습 텍스트 유사도 - 02 (XGBoost, 1D-CNN, MaLSTM)

모델은 총 3가지를 종류를 만들어 볼 것이다. XGBoost CNN MaLSTM XGBoost 앙상블 모델 중 하나인 XGBoost 모델은 ‘eXtream Gradient Boosting’의 약자로 캐글 사용자에 큰 인기를 얻은 모델 중 하나이다. 앙상블 기법이란 여러 개의 학습 알고즘을 사용해 더 좋은 성능을 얻는 방법을 뜻한다. 앙상블 기법에는

NLP 실습 텍스트 유사도 - 01 (데이터 EDA 및 전처리)

텍스트 유사도 텍스트 유사도 문제한 두 문장(글)이 있을 때 두 문장 간의 유사도를 측정할 수 있는 모델을 만드는 것이다. 문제소개 데이터 이름 : Quora Question Pairs 텍스트 용도 : 텍스트 유사도 학습을 목적으로 사용 데이터 권한 : Quora 권한을 가지고 있으며 Kaggle 가입 후 데이터를 내려받으면 문제없다. 데이터 출처 : h

NLP 문장 수준 임베딩 - 02

ELMo(Embedding from Language Models) 미국 연구기관 Allen Institute for Artificial Intelligence와 미국 워싱턴대학교 공동연구팀이 발표한 문장 임베딩 기법이다. Computer vision 분야에서 널리 쓰이고 있었던 Transfer leaning을 자연어 처리에 접목하여 주목받았다. Transf

NLP 문장 수준 임베딩 - 01

참고로 이 모든 내용은 이기창 님의 한국어 임베딩이라는 책을 기반으로 작성하고 있다.문장 수준 임베딩 크게는 행렬 분해, 확률 모형, Neural Network 기반 모델 등 세 종류를 소개할 것이다. 행렬 분해 LSA(잠재 의미 분석) 확률 모형 LDA(잠재 디리클레 할당) Neural Network Doc2Vec ELMo GPT (tran

NLP - 단어 수준 임베딩

단어 수준 임베딩 예측 기반 모델 NPLM Word2Vec FastText 행렬 분해 기반 모델 LSA GloVe Swivel 단어 임베딩을 문장 수준 임베딩으로 확장하는 방법 가중 임베딩(Weighted Embedding) NPLM(Neural Probabilistic Language Model) NLP 분야에서 임베딩 개념을 널리 퍼뜨

NLP 실습 텍스트 분류(Conv1d CNN, LSTM) -03

순환신경망 분류 모델 앞선 모델들과 달리 이미 주어진 단어 특징 벡터를 활용해 모델을 학습하지 않고 텍스트 정보를 입력해서 문장에 대한 특징 정보를 추출한다. RNN은 현재 정보는 이전 정보가 점층적으로 쌓이면서 정보를 표현할 수 있는 모델이다. 따라서 시간에 의존적인 또는 순차적인 데이터에 대한 문제에 활용된다. 이 모델은 한단에 대한 정보를 입력하면

NLP 실습 텍스트 분류(TF-IDF, CountVectorizer, Word2Vec) -02

모델링 소개 선형모델 로지스틱회귀 모델 입력 벡터를 word2vec과 tf-idf를 사용해본다. 랜던포레스트 TF-IDF를 활용한 모델 구현 모델의 입력값으로 TF-IDF 값을 갖는 벡터를 사용할 것이기 때문에 scikit-learn의 TfidfVectorizer를 사용할 것이다. 이를 위해서는 입력값이 텍스트로 이뤄진 데이터 형태이어야 한다.

NLP 실습 텍스트 분류 -01

영어 텍스트 분류 한국어는 띄어쓰기를 기준으로 모든 단어를 처리할 수 없으므로 상대적으로 전처리하기 쉬운 영어 텍스트를 가지고 먼저 감각을 키워보겠다. 데이터 이름 : Bag of Words Meets Bags of Popcorn 데이터 용도 : 텍스트 분류 학습을 목적으로 사용 데이터 권한 : MIT 데이터 출처 : https://www.kaggle.c

Scrapy 웹 크롤링 04 - 실습

Scrapy PracticeDaum 크롤링하기 다음 디지털 뉴스 페이지에서 현재 URL, 기사 타이틀에 걸려있는 href URL, 기사 페이지로 이동한 후 기사 제목, 기사 내용을 크롤링하는 것을 목표로 크롤러를 만들것 items.py 먼저, 크롤링 대상을 items를 활용하기 위해 items.py에 Field를 생성한다. 위에서 언급했던 사항뿐만 아니라

Scrapy 웹 크롤링 03 - Exports, Settings, pipeline

Exports 우리가 실행후 크롤링한 데이터를 저장하는 path를 실행할때마다 지정하거나 실행했는데, 일종의 template같이 미리 만들어 놓을 수 있는 기능이 Exports이다. Exports 참조 사이트 : https://docs.scrapy.org/en/latest/topics/feed-exports.html 1234# 아래 2가지 방법은 동일

Attention mechanism을 사용한 Seq2seq 구현

Vallina Seq2seq tf.function을 사용하기 위해 tensorflow 2.0.0-beta1버전을 설치한다. 한글 텍스트의 형태소분석을 위해 konlpy에서 Okt(Original Korean tag, Twitter에서 공개한 오픈소스 라이브러리)를 사용하기 위해 설치해준다. 12!pip install tensorflow==2.0.0-b

Attention 기법

Attention 기법Sequence-to-sequence 우선, Attention 기법이 가장 먼저 적용되었던 모델인 Sequence-to-sequence 모델을 살펴보면서 간략하게 conception적인 것을 살펴보겠다. 아래 그림의 왼쪽 부분은 Encoder 구조로 되어 있어, Input에 번역하고자 하는 문장을 단어 하나씩 받는 형태로 되어있다.

순환신경망(Vanilla RNN 및 LSTM 구현)

순환 신경망 구현 및 학습Vanilla RNN1!pip install tensorflow==2.0.0-beta1 1import tensorflow as tf tensorflow version 확인1print(tf.__version__) 하이퍼 파라미터 설정1234EPOCHS = 10# 우리가 분석할 때 10000개의 단어만 사용하겠다는 의미로 설정하였다.N

NLP 전처리

형태소 Tokenizing 라이브러리영어 Tokenizing 라이브러리 1) NLTK 파이썬에서 영어 텍스트 전처리 작업을 하는데 많 쓰이는 라이브러리로, 이 라이브러리는 50여 개가 넘는 말뭉치 리소를 활용해 영어 텍스트를 분석할 수 있게 제공 한다. 직관적으로 함수를 쉽게 사용할 수 있게 구성돼 있어 빠르게 텍스트 전처리를 할 수 있다. 또한 단어

Regression(04) - Ridge and Lasso

회귀 게수를 축소해야 하는 이유 먼저, 회귀 분석하기 좋은 데이터의 조건에 대해서 이야기 해 볼 것이다. X와 Y의 관계가 명확해야하며 선형성을 가지면 가장 좋을 것이다. 또한, 독립변수의 개수가 많다면 학습의 시간도 상대적으로 오래걸리며 과적합이 될 확률이 높다. 이러한 문제들이 발생되기 때문에 Y와의 상관성은 높아야 하지만 독립변수들끼리의 상관성은 적은

임베딩이란?

컴퓨터가 바라보는 문자 아래와 같이 문자는 컴퓨터가 해석할 때 그냥 기호일 뿐이다. 이렇게 encoding된 상태로 보게 되면 아래와 같은 문제점이 발생할 수 있다. 이 글자가 어떤 글자인지를 표시할 수 있고 그에 따른 특성을 갖게 하려면 우선 계산할 수 있게 숫자로 만들어 주어야 할 것이다. 그러한 방법 중 가장 단순한 방법이 One-hot enc

Regression(03) - 회귀진단

교호작용 성별, 결혼여부, 혹은 소속 정치단체 등과 같은 질적(qualitative) 또는 범주형(categorical)요인들이 회귀분석에서 종속(반응)변수의 변화를 설명하는 데 매우 유용한 독립(설명) 변수 역할을 할 때가 있다. 이런 질적 독립(설명)변수로 이용할 경우 이들은 지시변수(Indicator variable) 또는 가변수(dummy varia

NLP란?

자연어란? NLP란? NLP의 어려움 우리가 실생활에서 사용하는 언어는 복잡성, 애매함, 그리고 의존성을 지니고 있기 때문이다. 복잡성이란 예를 들어 필자가 좋아하는 게임인 배틀그라운드로 예를 들어 보겠다. 몇 주전 PUBG에서는 배틀그라운드의 신맵인 카라킨에 대해 반응을 보기 위해 각 배틀그라운드 커뮤니티 사이트에 대한 댓글을 분석한다고 가정해보자. 그

순환 신경망(RNN) - 순차 데이터의 이해

순차 데이터의 이해 우리가 순환 신경망을 사용하는 이유는 입력을 순차데이터로 받거나 출력을 순차데이터으로 내기 위해서이다. 일정한 시간차를 갖는 Time Series라면, x축이 특정 시간을 의미하는 Temporal Sequence와는 다르게 하나하나의 Step으로 간주한다. 일반적으로는 위에서 보는 것과 같이 Temporal Sequence를

DenseNet 구현 및 학습

DenseNetwork 구현 및 학습 필자는 구글 colab을 통해 학습시켰으며, @tf.function을 사용하기위해 tensorflow 2.0 버젼을 시용하였다. 1!pip install tensorflow==2.0.0-beta1 사용할 라이브러리 import 12import tensorflow as tfimport numpy as np 위에서

Residual Network 구현 및 학습

Residual Network GoogLeNet 이후에 나온 모델로 Residual 구조를 Skip connection 구조를 갖으며, pre-activation을 갖는 Residual unit을 먼저 만든 후에서 Resnet Unit을 연결하야 만들 ResnetLayer를 만들어 Residual Layer를 구현할 것이다. 그 후 전체적인 ResNet M