본문 바로가기

AI/자연어처리25

Anaconda 아나콘다 & streamlit(1) anaconda를 관리자권한으로 실행후 conda env listconda env list를 입력하면 아나콘다의 환경이 보이게됩니다.저는 base밖에없고 또 작업할 환경은 NLPEnv입니다.conda activate NLPEnv를해주면 내가 들어가 있는곳으로 위치가 맞춰지게 됩니다. 그다음 Langchain과 strealit을 설치하면 됩니다.conda install langchain streamlit설치할거냐고 물어보면 y 치면됩니다.그러면 모두 설치된것을 확인할 수 있습니다. ✔️ 폴더 만들기이후에 사용할 폴더를 넣어줍니다.✔️ VSCode실행 ctrl + p를 해서 선택하고인터프리터를 선택하는데 python에서는 Native와 conda와 함꼐 사용하지않는것을 추천합니다.나중에 깨질수있기때문에 나중.. 2025. 1. 22.
Hello Langchain (39) 랭체인은 파이썬만 알면 다룰 수 있습니다.이미 나와있는 LLM모델을 다루고 접근방식을 좀 다르게 한 프레임워크입니다!😀 Hello Langchain코랩에는 기본 설치되어있습니다!import langchainlangchain.__version__자연어처리(NLP)및 언어 모델을 활용한 어플리케이션을 개발하기 위한 도구를 제공하는 라이브러리입니다.텍스트생성, 검색, 대화형 인터페이스 구축 등 다양한 기능을 지원합니다공식 API레퍼런스는 아래 링크입니다.https://python.langchain.com/api_reference/ LangChain Python API Reference — 🦜🔗 LangChain documentationlangchain-google-vertexai 2.0.10python... 2025. 1. 13.
GPT 를 이용한 영화 리뷰 분류 (38) GPT를 이용한 네이버 영화 리뷰 분류!pip install tensorflow==2.12.0tensorflow를 다운그레이드하게되고 2.12.0으로 합니다.import tensorflow as tftf.__version__버전 확인까지 한 번 다시해주고GPT를 이용한 네이버 영화 리뷰 분류import pandas as pdimport numpy as npimport urllib.requestimport osfrom tqdm import tqdmimport tensorflow as tffrom transformers import AutoTokenizer, TFGPT2Modelfrom tensorflow.keras.preprocessing.sequence import pad_sequences텐서플러우 허그.. 2025. 1. 10.
GPT (37) GPT(Generative Pre-trained Transformer)1. ChatGPT의 역사BERT가 트랜스포머의 '인코더'로 설계된 모델이라면, GPT는 트랜스포머의 '디코더'로 설계된 모델. Open AI는 2019년에 GPT-1을 공개한 이후로, 2019년 GPT-2, 2020년 GPT-3, 2022년 ChatGPT(GPT 3.5), 2023년에는 GPT-4, 2024년에는 GPT-4o를 공개하며 GPT 시리즈를 발전시켜 왔습니다.  GPT-1GPT-2GPT-3GPT-3.5GPT-4 Models GPT-1GPT-2GPT-3GPT-3.5GPT-4 Model파라미터 개수1억 1700만개15억1,750억?1조 8천억(추정)디코더의 층124896??처리 가능한 토큰 개수51210242048?128,00.. 2025. 1. 9.
한국어 BERT 를 이용한 네이버 영화 리뷰 분류 (36) KoBERT를 이용한 네이버 영화 리뷰 분류를해보려고 합니다.import pandas as pdimport numpy as npimport urllib.requestimport osfrom tqdm import tqdmimport tensorflow as tffrom transformers import BertTokenizer, TFBertModel 기본임포트를 해주고 링크에서 받아온것을 파일로 다운받도록 하겠습니다.# 네이버 영화 리뷰 데이터 학습을 위해 훈련 데이터와 테스트 데이터를 다운로드합니다.urllib.request.urlretrieve("https://raw.githubusercontent.com/e9t/nsmc/master/ratings_train.txt", .. 2025. 1. 8.
BERT 의 MLM, NSP (35) 1. 구글 BERT의 MLM1.마스크드 언어 모델과 토크나이저- 기본 임포트!pip install transformersfrom transformers import TFBertForMaskedLMfrom transformers import AutoTokenizermodel = TFBertForMaskedLM.from_pretrained('bert-large-uncased')tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased')https://huggingface.co/google-bert/bert-large-uncased영어에 대한 사전 학습된 모델로, 마스크 언어 모델링(MLM) 목적을 사용합니다. 소개된 논문: https://arxiv.org/.. 2025. 1. 7.
BERT(Bidirectional Encoder Representations from Transformers)_(34) ■ BERT(Bidirectional Encoder Representations from Transformers)BERT는 트렌스포머에서 인코더쪽의 구조를 사용해서 만든 구조입니다.결국 트랜스포머의 파생입니다. ▶ NLP에서의 사전 훈련(Pre-training)- 사전 훈련된 모델에 약간의 조정해서 TASK에 사용할 수 있는 모델입니다- 요즘 보통은 다 사전모델을 사용하고 있습니다.  ▶사전 훈련된 워드 임베딩- 워드 임베딩 방법론들 (Word2Vec, FastText, GloVe...)어떤 테스크를 수행할때 임베딩을 사용하는 방법으로는 크게 두가지가있다.1. 임베딩 층을 랜덤 초기화해서 처음부터 학습하기2. 방대한 데이터로 word2vec등과 같은 임베딩 알고리즘으로 '사전훈련된' 임베딩 벡터들을 가져.. 2025. 1. 6.
Transformer (33-4 한국어 챗봇 구현하기) ■ 트랜스포머를 이용한 한국어 챗봇(Transformer Chatbot Tutorial)앞서 구현한 트랜스포머 코드를 사용하여 일상 대화 챗봇을 구현해보려고합니다.물론 성능이나 대화흐름이 엄청 자연스럽지는않지만 어느정도 트랜스포머로 구현하는것이 목표입니다.데이터로더 & 전처리import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport reimport urllib.requestimport timeimport tensorflow_datasets as tfds ## !! -> 파이토치중 데이터로더를 통해서 테스트,학습 분리해주는것인데 그런 비슷한것.import tensorflow as tfurllib.request.urlretrieve.. 2025. 1. 3.
Transformer (33-3) Position-wise FFNN포지션 와이즈 FFNN은 인코더와 디코더에서 공통적으로 가지고 있는 서브층입니다.FFNN은 완전연결(Fully-connected FFNN)입니다.식으로 표현하면 아래 그림과 같습니다.여기서 x 는 앞서 멀티 헤드 어텐션의 결과로 나온 (seq_len,dmodel) 의 크기를 가지는 행렬을 말합니다.가중치 행렬 W1 은 (dmodel,dff) 의 크기를 가지고가중치 행렬 W2 은 (dff,dmodel) 의 크기를 가집니다.논문에서 은닉층의 크기인 dff 는 앞서 하이퍼파라미터를 정의할 때 언급했듯이 2,048의 크기를 가집니다.여기서 매개변수 W1 , b1 , W2 , b2 는 하나의 인코더 층 내에서는 다른 문장, 다른 단어들마다 정확하게 동일하게 사용됩니다.하지만 인코더.. 2025. 1. 2.
Transformer (33-1) 지난 33번에 이어~스케일드 닷-프로덕트 어텐션을 구현해보겠습니다.  5) 스케일드 닷-프로덕트 어텐션 구현하기위의 식을 이용해서 구현해본 함수는 아래에있습니다.def scaled_dot_product_attention(query, key, value, mask): # query 크기 : (batch_size, num_heads, query의 문장 길이, d_model/num_heads) # key 크기 : (batch_size, num_heads, key의 문장 길이, d_model/num_heads) # value 크기 : (batch_size, num_heads, value의 문장 길이, d_model/num_heads) # padding_mask : (batch_size, 1.. 2025. 1. 1.
Transformer (33) ▶ Transformer 트랜스포머-2017년 구글브레인이 발표한 논문인 "ATTENTION is all you need"에서 나온 모델입니다.https://proceedings.neurips.cc/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf - 트랜스포머는 RNN을 사용하지않고 '인코더'와 '디코더'를 설계하였고 성능도 RNN보다 우수합니다.처음에는 자연어 처리 분야에서만 사용되었으나 이후에는 컴퓨터비전분야까지 확정되고있고 지금은 다양한 분야에서 채택되고있음! - 기존의 seq2seq의 구조인 인코더-디코더를 따르면서도 논문의 이름처럼 (attention)만으로 구현한 모델입니다.- 이후 등장한 BERT , GPT, AlphaFold2 등이 .. 2024. 12. 31.
[AI활용 자연어처리 챗봇프로젝트] 인코더 디코더 Seq2Seq 여러개 인풋 -> 1개 ,  여러개 인풋 - >여러개의 아웃풋sequence to sequence 는 many to many에 대한 모델입니다.Sequence-to-sequence(Seq2Seq)-입력도 sequence고 출력도 sequence인것을 seq2seq라고 합니다.-새로운 모델이 아니라 2개의 RNN 모델이라는점! Sequence-to-sequence(Seq2Seq)는 입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력하는 모델 대표적인 응용분야 1.기계번역 (machine translation) '한국어 도메인' 을 가지는 문장을 입력하면 '영어 도메인' 에 해당하는 문장을 얻을수 있다. 구글 번역기, 파파고... 2.내용 용약 (Text Summarization) : 상대적으로 큰 원문의 핵심.. 2024. 12. 30.
[AI활용 자연어처리 챗봇프로젝트] bi-LSTM, bi-LSTM 실습 LSTM GRU bi-LSTM 데이터가 앞,뒤 에서 필요한 경우도 있습니다. 그럴때 사용할 수 있는 양방향  LSTM이 bi-LSTM입니다. RNN 이나 LSTM 은 일반 신경망과 다르게 시퀀스 또는 시계열 데이터 처리에 특화되어 은닉층에서 과거의 정보를 기억할 수 있습니다.   그러나, 순환 신경망의 구조적 특성상 데이터가  입력 순 으로 처리되기 때문에 이전 시점의 정보만 활용할 수 밖에 없는 단점이 존재합니다.   문장이 길어 질수록(시퀀스가 길어질수록) 성능이 저하될 수 밖에 없습니다. 다음 예문을 봅시다 > ios 앱 [   ]은 맥북이 필요합니다 > ios 앱 개발은 맥북이 필요합니다 한국어를 사용하는 우리에겐 어렵지 않게 빈칸에 들어가는 단어를 유추해낼수 있다.  그러나 일반적인 RNN 이나.. 2024. 12. 23.
[AI활용 자연어처리 챗봇프로젝트] GRU, GRU실습 LSTM GRU bi-LSTM이번엔 LSTM보다 좀 더 가벼운 GRU모델에 대해서 학습해보겠습니다.LSTM을 좀 더 간소화 한 버전이라고 볼 수 있습니다. LSTM 보다 가중치가 적어서 '계산량'이 적지만, LSTM 못지 않은 좋은 성능을 내는것으로 알려져 있습니다.    텐서플로의 기본적으로 구현된  GRU는 GRU 초기 버전입니다 '이론' vs. '구현'TF 가 이와 같은 계산 방식을 사용하는 이유는  GPU를 좀더 잘 활용하기 위함.그러나, 대부분 GRU셀을 소개할때는 전자의 그림을 사용합니다널리 통용되는 '이론'과  실질적인 '구현' 에는 차이 나는 경우가 종종 있습니다.이로 인해 GRU 층의 모델 파라미터 개수를 혼동하진 맙시다GRU 신경망# ■ GRU 신경망Gated Recurrent Unit.. 2024. 12. 20.
[AI활용 자연어처리 챗봇프로젝트] LSTM 실습 이번 실습은 GPU사용 권장합니다.LSTM GNN bi-LSTM LSTM (Long Short-Term Memory)  기본임포트 + 데이터 준비!import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport osimport tensorflow as tffrom tensorflow import kerastf.keras.utils.set_random_seed(42) # 랜덤 시드 사용tf.config.experimental.enable_op_determinism() 이번에도 IMDB를 사용할것입니다.!# 이전 예제 처럼 IMDB 리뷰 데이터를 로드하고 훈련세트와 검증세트로 나눔from tensorflow.keras.datasets.. 2024. 12. 19.
[AI활용 자연어처리 챗봇프로젝트] LSTM이란? LSTM GNN bi-LSTM 이번에는 위 모델에 관해서 학습을 했습니다. 사람같은경우는 빈칸이나 다음 말 자체를 빠르게 예측할 수 있습니다. 기계같은경우는 한 문장이 있으면 한 토큰단위로 기계?모델에 쭉쭉 들어가게되겠죠?그렇지만 지금 전에 배운 기본 RNN의 한계는 먼저 입력했었던 입력값들이 계산이 되면서 희미해지는 단점이 있습니다.즉 타임스텝이 길어질수록! 중요한 정보가 앞쪽에있을경우에는 시퀀스 학습이어려워지게되겠죠? 일반적으로 기본 순환층은 '긴 시퀀스'를 학습하기 어렵고시퀀스가 길어질수록 순환되는 은닉상태에 담긴 정보가 희석되기때문입니다.따라서 멀리 떨어져있는 단어 정보를 인식하는데 어려울 수 있습니다. 그래서 등장한것이 LSTM, GRU셀 입니다. 위 두 모델은 SimpleRNN보다 훨씬 계싼이.. 2024. 12. 17.
[AI활용 자연어처리 챗봇프로젝트] 순차데이터, 순환데이터 댓글을 분석하면서 긍정인지 부정인지 딥러닝을 통해서 판단해보려고 합니다!글(텍스트 or 자연어)를 분석하는것은 순환신경망을 통해서 알 수 있습니다. 만약 회사라면? 하나하나 다 읽을 수 없겠죠? 그럴때 쓰기 좋을것같았습니다.이런걸 활용해서 사람들의 평가를 미리 확인해볼수있겠죠?  순차 데이터(Sequential Data) : 순서에 의미가 있는 데이터를 의미한다. 예를들면 텍스트나 시계열 데이터!텍스트 : i am a girl, girl am i 시계열 데이터 (time series data): 내일의 온도를 예측하기 위해서 온도 날짜 가 순서대로 있어야하고 주가를 예측하기 위해서 일별로 주가순서가 있어야된다! 만약 순서가 뒤죽박죽이라면...내일의 값을 예측할 수 없겠죠?근데 지금까지 했던 CNN이랑MN.. 2024. 12. 13.
[AI활용 자연어처리 챗봇프로젝트] Word2Vec, 단어유사도 확인 / 완료 Word2Vec란?단어의 의미나 연관성을 벡터로 표현하는것을 의미합니다.단어의 의미를 벡터로 표현하면 연관된 단어나 단어의 유사도에게 확인할 수 있어요.그리고 의미 선형관계를 계산할 수 있기때문에 왕자-남성 + 여성=>공주 와 같은 계산을 할 수 있습니다. Word2Vec는 즉! 문장 내부의 단어를 벡터로 변환해주는 도구이고,단어의 연결을 기반으로 단어의 연관성을 벡터로 만들어줍니다 결국! 단어를 벡터로 표현해주는거죠유사도를 쉽게확인하기 위해서도 쓰입니다. 아래처럼 어떤 txt를 가져오고 보면어떤 txt를 가져오고 보면 \n제1편 어둠의 발소리\n서(序)\n1897년의 한가위.\n까치들이 울타리 안 감나무에 와서 아침 인사를 하기도 전에, 무색 옷에 댕기꼬리를 늘인 아이들은 송편을 입에 물고 마을길을 쏘.. 2024. 12. 11.
순환신경망을 이용한 IMDB 리뷰 분류해보기(28) CNN에서의 대표적인 실습 할 수 있는것이 MNUST같은건데!RNN으로 가장 대표적인 데이터셋은 IMDB 영화리뷰입니다. https://www.imdb.com/ IMDb: Ratings, Reviews, and Where to Watch the Best Movies & TV ShowsIMDb is the world's most popular and authoritative source for movie, TV and celebrity content. Find ratings and reviews for the newest movie and TV shows. Get personalized recommendations, and learn where to watch across hundreds of stream.. 2024. 12. 10.
[AI활용 자연어처리 챗봇프로젝트] Padding, 원핫인코딩 ■ padiing(패딩)문자마다 인코딩된길이가 다르고, 우리는 입력데이터에 대한 쉐이프를 정해놓기때문에 그 모양을 맞추어야합니다.그래서 비워있는 부분들을 다른 숫자로 채워넣는데 그 과정을 padding이라고 합니다.왼쪽은 패딩이 뒤쪽, 오른쪽은 앞쪽! 즉! 앞쪽 뒤쪽 모두 다 붙이기 가능하다는점 기억해야합니다~ 그러면 케라스로 패딩하는것을 한번 해봤는데preprocessed_sentences를 하게되면 지난번에 했던 변수를 가져오게 됩니다. 이런식으로 구성이 되어있고 케라스 그리고 pad_sequences는 앞으로도 많이 사용될 예정이기에 꼭 숙지해둬야한다고 했습니다. # 파라미터 https://www.tensorflow.org/api_docs/python/tf/keras/utils/pad_sequenc.. 2024. 12. 9.
[AI활용 자연어처리 챗봇프로젝트] OOV란? oov인덱스 번호는? OOV란? (Out Of Vocbulary)- 단어 집합에 존재하지 않는 단어- 이것 또한 정수인코딩을 할 필요가 있을 수 있다! 숫자 0과 oov토큰을 고려하여 단어 집합의 크기를 +2함oov_token = 단어집합에 없는 단어들을 OOV로 간주하여 보존합니다.vocab_size = 5tokenizer =Tokenizer(num_words = vocab_size + 2, oov_token='OOV')tokenizer.fit_on_texts(preprocessed_sentences)Keras의 Tokenizer은 'OOV'를 인덱스 1로 합니다.그래서 한번 출력해보자면tokenizer.word_index출력결과{'OOV': 1, 'barber': 2, 'secret': 3, 'huge': 4, 'kept.. 2024. 12. 6.
[AI활용 자연어처리 챗봇프로젝트] 케라스를 이용한 전처리 ■ keras의 텍스트 전처리 케라스에서도 텍스트에 대한 전처리가 가능합니다. https://www.tensorflow.org/api_docs/python/tf/keras/preprocessing/text/Tokenizertf.keras.preprocessing.text.Tokenizer( num_words=None, filters='!"#$%&()*+,-./:;?@[\\]^_`{|}~\t\n', lower=True, split=' ', char_level=False, oov_token=None, analyzer=None, **kwargs)  역시나 먼저 임포트를 해줍니다.위에있는 매개변수들은 자연어처리하면서 굉장히 많이 봐야하는 것들임으로 눈.. 2024. 12. 5.
[AI활용 자연어처리 챗봇프로젝트] 정제 · 정규화 ■ 정제(cleaning), 정규화(normalizing)* 정제: 갖고있는 코퍼스로부터 노이즈 데이터를 제거한다* 정규화 : 표현방법이 다른 단어들을 통합시켜서 같은 단어로 만들어준다. 영어로 보면 USA , US '하나의 단어'로 보는것이 정규화 라고 합니다~ 어간추출하거나 표제어 추출할때는 대소문자를 통합해주어야합니다! 대소문자 통합Automobile, automobile  무조건 통합도 안됨 -> 'US', 'us'영어권같은경우는 단어의 개수를 확 줄일 수 있습니다. 대표적인 정규화 방법중 하나입니다.대문자는 문장의 앞이나 특정한 상황에서 쓰기때문에 대체로 소문자로 통합합니다!불용어(stop word)제거- 불필요한 단어를 제거합니다.영향없고 노이즈를 줄주는것! 그런것들은 예를들어서 등장빈도가 .. 2024. 12. 4.
[AI활용 자연어처리 챗봇프로젝트] 토큰화 및 문장처리 토큰화 및 문장처리■ 자연어 처리를 위한 설치 패키지는 아래와 같습니다!import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport tensorflow as tffrom tensorflow import kerasimport osimport re■  토큰화- 주어진 코퍼스에서 토큰이라 불리는 단위로 나누는 작업을 토큰화 라고 합니다!토큰의 단위는 상황에 따라서 다르지만 보통 의미가 있는 단위로 토큰을 정의합니다. 단어 토큰화(word Tokenization)- 주어진 코퍼스(corpus)에서 토큰(token)이라 불리는 단위로 나누는 작업을 토큰화(tokenization)라고 합니다 - 토큰의 단.. 2024. 12. 3.
[AI활용 자연어처리 챗봇프로젝트] 자연어처리(NLP)란? ■ 자연어 처리 (NLP) / Natural Language Processing 이란자연어 처리(NLP, Natural Language Processing)는 컴퓨터가 인간의 언어를 이해하고, 해석하고, 생성하는 기술을 말합니다. NLP는 언어학과 컴퓨터 과학의 융합 분야로, 언어를 처리하고 분석하는 다양한 작업을 포함합니다. 그 목적은 사람과 컴퓨터 간의 상호작용을 원활하게 만들어 주는 것입니다. 자연어 처리의 주요 작업1.형태소 분석 (Morphological Analysis): 문장에서 단어를 나누고, 각 단어의 형태를 분석합니다. 예를 들어, 한국어에서 "사랑한다"라는 단어는 "사랑"과 "한다"로 나누어집니다. 2.구문 분석 (Syntactic Parsing): 문장의 구조를 분석하고, 문법적 관.. 2024. 12. 2.