데이터로 Deep Dive

데이터 분석과 개발 경험을 공유합니다.

한경아카데미 64

금융 데이터 AI 챗봇 개발기: 4) 드디어 모델 배포! 사이트가 생기니 좋구만!

👇 이전 포스팅은 아래에서 확인할 수 있습니다. 👇  1️⃣ 금융 데이터 AI 챗봇 개발기: 1) 그래서 PDF를 어떻게 분석할건데? (기획부터 데이터 전처리까지)    - 출처: https://nanini.tistory.com/902️⃣ 데이터 AI 챗봇 개발기: 2) LLM 모델을 통한 챗봇 만들기 (RAG부터 Chain까지)   - 출처: https://nanini.tistory.com/913️⃣ 금융 데이터 AI 챗봇 개발기: 3) 추천 알고리즘, 개인 선호도를 반영한 레포트 추천 기능 만들기- 출처: https://nanini.tistory.com/92   앞에서 세 개 포스팅으로 모델을 구현한 이야기의 최종판, 기능들을 한데 모아서RePick이란 서비스를 만들었다.  - RePick (ht..

수료 후기 - [한국경제신문 with toss bank] Tech 우수인재 양성을 위한 (MLOps) 과정

장장 6개월의 기간이 느린듯 빠른듯 끝났다...! 혼자 파이썬을 해도, 데이터 공부를 해도 꽉 막힌 느낌이라 마지막 마음으로 도전한 부트캠프였는데 결론은참, 하길 잘했다. 그런데 역시나끝나면 아쉬움이 남는건 국룰인 듯나도 아쉬움이 백만개 남았다.  이 부트캠프에서 난 MLOps를 수료했고, MLOps 개념은 아직 대중화된 용어도 아닌지라우리의 챗지피티한테 물어봤을 때 아래와 같은 답변을 뱉어냈다. 맞다. 머신러닝을 운영하는 것으로 데브옵스와 유사한 개념으로써, 머신러닝 모델의 개발, 배포, 운영을 효율적으로 관리하는 것인데중요한건부트캠프 수료 만으로는...MLOps로의 취업은 힘들것 같다.  이건 어쩔 수 없는게6개월동안 데이터사이언스를 위한 수학(쪼금)+SQL+Python+Machine Learning..

etc 2025.01.14

자연어 숫자로 표현하기 - 정수 인코딩과 패딩(제로 패딩)

정수 인코딩이란? 전처리된 텍스트 데이터를 컴퓨터가 분석에 활용할 수 있게 하려면 숫자 데이터로 변환해야 한다. 이를 위한 여러 방법이 있는데, 대표적으로 정수 인코딩이 있다. 정수 인코딩은 토큰화된 각 단어에 특정 정수를 맵핑하여 고유 번호로 사용하는 방법이다. 단어 토큰에 정수 인덱스를 부여하는 방법은 다양한데, 그 중 가장 일반적인 방법은 단어의 등장 빈도를 기준으로 정렬한 다음 인덱스를 부여하는 방식이다.  정수 인코딩 하기더보기정수 인코딩을 하면 더 이상 추가적인 전처리를 할 수 없다. 때문에 모든 전처리 과정이 끝난 코퍼스를 가지고 정수 인코딩을 해야 한다. import nltkfrom nltk.tokenize import word_tokenizefrom nltk.tokenize import ..

문장 단위 - 자연어 전처리(문장 토큰화, 품사 태깅, 표제어 추출)

문장 토큰화(Sentence Tokenization)경우에 따라 코퍼스를 문장 단위로 토큰화한 다음에 문장의 의미를 살려서 분석을 해야 하는 경우가 있다. 대표적으로 '품사 태깅'이 그러한 경우인데, 어떠한 단어의 품사는 그 단어 자체의 의미와 함께 문장 안에서 사용된 위치에 따라 달라질 수 있다. 이런 경우에는 문장 간의 구분이 된 상태에서 단어의 품사를 정해야 하기 때문에 문장 단위로 먼저 토큰화한 후에 품사를 구분해야 한다.  예시 - sent_tokenize()더보기 punkt 모듈을 설치하면 마침표나 약어(Mr. , Dr.)와 같은 언어적인 특성을 고려해서 문장 토큰화가 되기 때문에 단순히 마침표가 있는 곳을 문장으로 나누는 것이 아니라 실제 문장을 잘 구분해 준다. # 필요한 패키지와 함수 불..

단어 단위 - 자연어 전처리(정제, 불용어, 정규화, 어간 추출)

자연어 전처리란?자연어 데이터를 사용할 때, 전처리를 어떻게 하냐에 따라 분석 결과가 크게 달라진다. 예를 들어, 'Oh, Hi helo. Nice to meetyou.' 문장에서 맞춤법과 띄어쓰기 수정, 그리고 의미 표현에 크게 기여하지 않는 'Oh' 제거, 중첩된 유의어 제거(Hi, Hello), 각 단어에 숫자 인덱스 부여 등의 작업을 거치고나면 {'Hi':0, 'Nice':1, 'to':2, 'meet':3, 'you':4} 와 같이 분석에 활용하기 좋은 형태가 된다. 이러한 과정을 자연어 전처리라고 한다.  자연어 전처리 과정토큰화: 자연어 데이터를 분석을 위한 작은 단위(토큰)로 분리한다.정제: 분석에 큰 의미가 없는 데이터들을 제거한다.정규화: 표현 방법이 다르지만 의미가 같은 단어들을 통..

자연어 처리(NLP)와 한국어 자연어 처리의 어려움

자연어 처리란?언어는 크게 인공어와 자연어로 나눌 수 있다.인공어는 정보 전달을 위해 인위적으로 만들어진 언어로, 대표적으로 사람과 컴퓨터의 소통을 위해 만들어진 프로그래밍 언어가 있다. 반대로 사람들의 일상 생활에서 자연 발생된 언어를 자연어라고 한다. 자연어에는 다양한 정보들이 담겨져 있으나 컴퓨터는 인공어로만 소통하므로 자연어를 다루려면 별도의 처리 과정이 필요하다. 그 과정을 자연어 처리(NLP: Natural Language Processing)이라고 한다.  자연어 처리 하위 분야에는 자연어 이해(NLU: Natural Language Understanding)와 자연어 생성(NLG: Natural Language Generation)이 있다. 자연어 처리 방법규칙 기반 접근법(Rule Bas..

대표적인 CNN 모델 - LeNet, ImageNet, AlexNet, VGGNet, GoogLeNet, ResNet

LeNetLeNet 이미지 분류 모델은 문서 인식을 위한 모델이며, 실용적인 응용분야에 CNN과 역전파 방법이 처음 적용된 모델이다. MNIST database미국 우편 공사의 우편번호 손글씨를 컴퓨터로 인식하기 위한 연구 과정에서 MNIST database가 구축되었는데,MNIST는 필기체 숫자 이미지를 모아놓은 데이터셋이다. 위의 이미지와 같이 다양한 스타일의 숫자 글씨들을 정확히 인식할 수 있는가에 대한 대표적인 Classification 문제다.  MNIST database는 28 x 28 픽셀의 흑백톤이미지로, 약 7만장의 이미지로 구성되어 있다. 손글씨는 사람마다 제각기 다른 형태로 쓰게 된다. 따라서 활자체를 인식하는 것보다 상당히 어려운 문제였다.  그러면 이제 LeNet의 모델 구조를 살..

Pooling Layer

Pooling Layer란?CNN에는 Convolutional Layer 외에도 Pooling Layer라는 특징적인 레이어가 있다. Pooling Layer는 단어 그대로 Pooling 연산이 이루어지는 레이어인데, Pooling Layer의 목적은 다운샘플링을 하는 것이다. 다운샘플링이미지에서 다운샘플링이란, 동일한 이미지를 좀 더 적은량의 정보로 표현하는 것이다.예를 들어 가로x세로 100px의 이미지를 50x50픽셀로 해상도를 절반으로 줄인다고 생각하면 된다. Pooling 연산Pooling 연산은 Convolution 연산과 비슷하게 이미지의 kernel을 옮겨 가면서 적용하는 데, 보통 stride를 2로 움직인다. 마찬가지로 이 영역을 대표하는 값 하나를 출력한다는 점에서 Convolutio..

Convolutional Layer(Feature Map, Kernel, Stride와 Padding)

Convolution Layer란?Convolution 연산이 수행되는 네트워크 레이어로, Convolution 연산은 결국 지역적 특성을 추출하는 과정이라고 볼 수 있다.Convolution 연산 방법Convoltion 연산은 어떻게 하는걸까? 간단히 말하자면 입력 데이터에 Kernel이라고 불리는 필터를 적용해서 값을 계산하는 과정이다.필터는 카메라의 렌즈와 비슷한 역할을 하는데, 카메라 필터는 렌즈앞에 씌워서 센서에 맺히는 상에 변화를 주는 역할로 어떤 입력이 필터를 통과하면 변형을 가하여 조금 바뀐 결과물이 나오는 것이다. 그럼 Convolution Filter는 어떤 계산을 하는걸까? Convolution Filter는 이미지 사이즈보다 작은 크기의 행렬이다. 아래 이미지에선 가로 3칸, 세로 ..

CNN(Convolutional Neural Network) 개념 잡기

CNN이란?강아지와 고양이를 구분하는 딥러닝을 만든다고 할 때, 이미지 데이터를 컴퓨터가 인식할 수 있는 형태로 표현하게 되는데 기본적으로 비트맵이란 형식으로 나타내게 된다.  비트맵은 가로x세로 크기가 있는 영역에 픽셀이라고 부르는 점을 찍어서 그림을 표현하는 방식이다. 각 픽셀은 픽셀값이라고 부르는 빛의 강도를 가지고 있다.  아래 숫자 1 이미지는 글씨 영역에 해당하는 윗 부분은 검은색으로 되어 있고 아래로 갈 수록 점점 밝은 회색으로 되어 있다. 흰색이 빛의 강도가 가장 강한 것으로 255, 검은색이 0으로 표현된다.  그렇다면컬러 이미지는 어떻게 표현할까? 빛의 삼원색인 빨강, 초록, 파랑을 각각 나눠서 표현하게 되는데 채널이라고 부르는 동일한 크기의 영역 각각에마찬가지로 빨강, 초록, 파랑 빛..