Professional Field

ETL : Airflow / DW(Snowflake) | AI : Python | BI : Tableau / Power BI

Scientist 15

[LangChain] OpenAI 모델을 이용한 URL 챗봇 개발

우선, 언어 모델을 만들기 위해 해야 하는 절차는 다음과 같다. 1. 가져올 뉴스데이터 URL를 확보한다.2. TEXT를 추출한 후 파라미터를 조정해 스플릿한다.3. 임베딩을 진행한다.4. 벡터저장소에 저장한다.5. 리트리버를 구성한다. 6. 프롬프트를 작성한다. 7. 모델에 적용한다. 1번 랭체인 라이브러리를 사용하였으며, URL 이 아니더라도 PDF, Log, Json 등 데이터 형태에 따라 변경한다.from langchain.document_loaders import WebBaseLoaderimport bs4from langchain.schema import Documentloader = WebBaseLoader( web_paths=("https://www.news1.kr/industry/di..

Scientist/ML.DL 2024.11.20

[LangChain] Text Splitter 종류

PDF에 소제목이 존재한다면, 분할을 하지 않고 가져오는 것이 중요하다. 1. CharacterTextSplitter- 분할 가능한 최소의 단위로 분할- 소제목의 텍스트가 잘릴 수 있음. (소제목이 없는 PDF에서 사용)- chunk_overlap을 충분히 설정해도 해결 불가from langchain.text_splitter import CharacterTextSplittertext_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=100)chunks = text_splitter.split_text(text) 2. RecursiveCharacterTextSplitter (추천)- 주로 많이 사용되는 분할 방식- 청크가 충분히 작아질 때까지 ..

Scientist/ML.DL 2024.08.09

[LangChain] PDF Loader 종류

1. fitz - 매우 빠르다.- 복잡한 글을 잘 읽어오지 못한다.- 메타데이터중 페이지번호는 제공하지만 그 외 메타 데이터 제공은 하지 않는다. # Fitz (PyMuPDF)!pip install pymupdfimport fitzdoc = fitz.open('example.pdf')page = doc.load_page(0)text = page.get_text() 2. PyPDFLoader - 메타데이터의 source 파일명과 page 단위로 읽기가 가능하다.- 한글이 제일 인코딩이 잘 된다.- 속도가 평범하다.# PyDPFLoader (LangChain)!pip install langchain pypdffrom langchain.document_loaders import PyPDFLoader# PyPD..

Scientist/ML.DL 2024.08.09

[ML/DL] LangChain이란?

LangChain 랭체인이란 대규모 언어 모델(LLM)을 기반으로 애플리케이션을 구축하기 위한 오픈 소스 프레임워크이다.이는 다양한 언어 모델, 데이터 소스, 그리고 워크플로우를 결합하여 사용자 정의 가능한 NLP 파이프라인을 쉽게 만들 수 있게 하고 주로 챗봇, 텍스트 분석, 자동화된 데이터 처리 등의 분야에서 사용한다. 랭체인 패키지는 파이썬으로 사용이 가능하다.주요 특징모듈화된 구성 요소: 여러 NLP 작업을 모듈화하여 필요에 따라 조합하고 재사용할 수 있습니다.확장성: 새로운 언어 모델이나 데이터 소스를 쉽게 통합할 수 있는 구조를 가지고 있어 확장성이 높습니다.사용자 정의 가능: 사용자가 필요에 따라 파이프라인을 자유롭게 커스터마이즈할 수 있습니다.다양한 언어 모델 지원: BERT, GPT, T..

Scientist/ML.DL 2024.07.18

[ML/DL] NLP TF-IDF / Word2Vec

1. TF-IDF 임베딩TF-IDF (Term Frequency-Inverse Document Frequency)는 텍스트 데이터를 수치 벡터로 변환 – 핵심어 추출 위해 단어의 특정 문서 내 중요도 산출– TF: 단어의 문서내 빈도, IDF: 문서 빈도 수(DF)의 역수import pandas as pdfrom sklearn.feature_extraction.text import TfidfVectorizerfrom nltk.tokenize import word_tokenize# TF-IDF 임베딩vectorizer = TfidfVectorizer(tokenizer=lambda x: x, lowercase=False) # 이미 토크나이즈 했으므로 tokenizer와 lowercase 옵션 조정tfidf..

Scientist/ML.DL 2024.07.18

[ML/DL] NLP 토크나이저 종류

Dacon에서 주최하는 재정정보 AI 검색 알고리즘 경진대회의 데이터로 토크나이저 종류를 알아보려고한다. 먼저, 데이터는 40개의 columns과 60만개의 Train set 으로 구성을 확인해보았다. 토크나이저는 텍스트 나누기를 진행하는데, 모델에 학습시키는 구성으로 변경을 하기 위해서이다.교육을 진행할 때 단어들의 조합을 통해 더미데이터로 변환시켜 모델을 완성하고, 텍스트 분류모델을 생성할 수 있다. 토크나이저는 대표적으로 4가지로 분류가 된다.단어 토크나이징 (Word Tokenization):텍스트를 단어 단위로 분할합니다.예시: "I love Python programming." -> ["I", "love", "Python", "programming", "."]문장 토크나이징 (Sentence ..

Scientist/ML.DL 2024.07.17

[Python] 대용량 데이터 로드하는 방법

아래 대용량 데이터 손쉽게 로드하는 방법에 대해 pickle을 포스팅했는데,메모리가 부족하거나 분산환경이 아니라 아예 첫 1회조차 불러오지 못하는 상황이라면 Chunksize 를 사용하면 된다. 1. chunksize: loop마다 csv 데이터를 읽어올 양이다. 10 ** 6은 100000인데요, 이는 한 번에 1000개의 데이터를 가져온다는 뜻이다.2. pd.read_csv(chunk_size): Python pandas에서 read_csv에는 chunksize라는 옵션이 존재한다.  이를 통해서 chunk 라는 dataframe이 생긴다. 이를 데이터셋으로 이용하면 된다.  chunksize = 10**6 # 청크 크기 조절for chunk in pd.read_csv('open/train.csv'..

Scientist/Code 2024.07.15

[Python] 대용량 데이터 임시 저장 Pickle 사용법

컴퓨터 사양이 안좋거나, 대용량 데이터를 다룰 때 Cloud DB 나 직접 서버에서 가져오는 데이터가 아닌 이상 엑셀로 데이터프레임을 불러오는 경우가 대다수이다. 이 때, 데이터가 크다보니 로딩이 오래걸리는 경우가 많았다.프로젝트가 하루만에 끝나는 것이 아니기 때문에 진도를 나갈 때마다 새로 불러와줘야 했지만pickle 을 사용하게 되면 최초의 1회만 가져올 수 있다면 그 후부터는 오래걸리지 않는다. pickle 파일 형식은 파이썬 객체 자체를 저장할 때 유용하고, 데이터를 직렬화하여 저장해놓고 필요할 때 역직렬화로 불러오는 형태이다.  예시는 다음과 같다.import pickle# 데이터 (예시 데이터)data = {'Name': ['John', 'Anna', 'Peter'], 'Age':..

Scientist/Code 2024.07.15

[ML/DL] NLP BERT 감정분석

감정분석이란 텍스트 내에는 사람의 감정이 표현되지 않지만 어떠한 특정 단어와 문장의 흐름을 통해 식별할 수 있다.이를 분석하는 것이 감정분석이며, 감정 및 평가를 식별하는 자연어 처리의 한 분야이다.  이번에는 감정분석 라이브러리 중 하나인 BERT에 대해 공부해보려고 한다. BERT의 주요 특징은  1. 양방향 인코딩이 가능한 점이 있다. 텍스트의 앞뒤 문맥을 고려해서 해당 단어가 문장에서 어떤 의미를 가지고 있는지를 구별한다. 예를 들어 동음이의어인 사과가 있다면, 너에게 사과할게 / 사과는 빨개  같은 서로 다른 의미를 해석할 수 있다. 2. 대규모 데이터셋이 이미 훈련되어 있기 때문에 사용자가 잘 조절한다면 효율적으로 사용이 가능하다. 3. NLP에는 RNN/LSTM 구조가 들어가게 되는데 여기서..

Scientist/ML.DL 2024.07.15

[ML/DL] NLP 단어 가방 모형

단어가방모형이란 bag-of-words model이라고 하며,Bag of Words란 단어들의 순서와 관계없이, 가방안에서 단어들의 출현 빈도(frequency)에만 집중하는 텍스트 데이터의 수치화 표현 방법이다.   단어를 벡터로 표현하기 위해서는 주어진 문장에 쓰인 단어들을 사전 혹은 집합(Vocabulary) 형태로 만들어서 인덱스를 할당해야한다. 단어들의 중복을 허용하지 않아야 한다. (순열, 중복순열, 조합, 중복조합 등) 저장된 단어들은 각각 유니크한 카테고리 변수(Categorical variable)이므로, 원-핫 인코딩(One-hot Encoding)를 이용해 벡터로 표현할 수 있다. 이를 통해 주어진 문장을 원-핫 벡터의 합, 즉 숫자로 표현할 수 있게 된다.   https://wiki..

Scientist/ML.DL 2024.07.15