반응형

Python/NLP Code 24

ChatGPT API에서 이전 대화 기록을 반영하여 호출하는 방법

ChatGPT를 웹에서 직접 이용하는 경우에는 이전 대화를 기억하여 채팅을 이어나가지만, API를 통하여 호출하는 경우에는 기본적으로는 이전 대화를 기억해주지 않습니다. 그래도 API 함수의 기능에 이전 대화의 맥락을 바탕으로 새로운 답변을 생성하도록 만들어줄 수 있는 기능이 있는데요. 이번 글에서는 해당 내용에 대해서 살펴보도록 하겠습니다. 이전 대화 맥락 반영 ChatGPT API 호출 방법 ChatGPT API 호출 함수에서 이전 히스토리를 반영하는 방법은 messages 인자에 이전 맥락의 대화들을 순서대로 리스트로 묶어서 전달해주시면 됩니다. 여기서 role을 지정할 때, 제가 던진 질문은 user로, AI가 답변했던 내역은 assistant로 지정하여 순서대로 묶어서 전달해주어야 하는 점이 중..

Python/NLP Code 2023.10.07

ChatGPT, GPT-4 토큰 개수 카운팅 및 인코딩/디코딩 방법(파이썬 tiktoken 모듈 활용)

GPT-3.5(ChatGPT) 및 GPT-4 활용을 위하여 원하는 글의 토큰 개수를 세거나 Encoding 및 Decoding 과정이 필요할 때가 종종 있습니다. 이 과정은 파이썬의 tiktoken 라이브러리의 기능을 활용하면 해당하는 토크나이저를 쉽게 불러올 수 있고, 토큰 개수 카운팅 및 인코딩/디코딩도 쉽게 할 수 있습니다. 이번 글에서는 해당 모듈의 사용법을 중심으로 위의 방법들을 간략하게 정리해보도록 하겠습니다. 토크나이저 선언 방법 우선, !pip install tiktoken 명령어로 모듈 설치를 진행해줍니다. 이후, ChatGPT(gpt-3.5-turbo) 혹은 GPT-4에 대하여 토크나이저를 가져오려면 cl100k_base 인코딩 방법을 지정해주시면 됩니다. 이후 모델명을 지정하여 최종 ..

Python/NLP Code 2023.09.19

원하는 corpus를 기준으로 토크나이저 학습하기 파이썬 코드 예제

새로운 코퍼스에 대하여 커스터마이징된 Tokenizer를 파이썬으로 학습시키는 방법을 간략하게 정리해보도록 하겠습니다. 예시로, 제가 corpus txt 파일 여러 개를 다음과 같은 디렉토리 구조로 가지고 있다고 가정해보도록 하겠습니다. 위의 많은 코퍼스 파일들을 통하여 토크나이저를 직접 학습시켜 보겠습니다. Step 1. 디렉토리명 가져오기 먼저, 위의 텍스트 파일들을 불러오기 위하여 디렉토리 목록을 가져와야 합니다. 이 과정을 os 모듈을 활용하여 진행한 예시 코드는 아래와 같습니다. import os dir_name = 'my_corpus' paths = os.listdir(dir_name) # ['corpus_15.txt', 'corpus_02.txt', 'corpus_09.txt', 'corpu..

Python/NLP Code 2023.09.17

파이썬 개체명 태깅(NER Tagging) 방법 정리(nltk, spacy)

지난번에 nltk 및 spacy 모듈을 통하여 품사 태깅(POS Tagging) 방법을 다루었던 글에 이어 이번에는 두 모듈로 개체명 태깅(NER Tagging)을 진행하는 방법을 살펴보도록 하겠습니다. 품사 태깅 방법과 관련된 내용은 아래 글을 참고해주세요. 파이썬 품사 태깅(POS Tagging) 방법 정리(nltk, spacy) 파이썬에서 각 단어 토큰의 품사 종류를 찾는 pos tagging을 nltk와 spacy 모듈을 통하여 진행하는 방법에 대하여 정리해보도록 하겠습니다. nltk를 활용한 POS Tagging 방법 먼저, nltk 모듈 설치가 진행되 jimmy-ai.tistory.com nltk를 활용한 NER Tagging 방법 nltk에서 개체명 태깅을 진행하려면 품사 태깅이 선행되어야 ..

Python/NLP Code 2022.11.09

파이썬 품사 태깅(POS Tagging) 방법 정리(nltk, spacy)

파이썬에서 각 단어 토큰의 품사 종류를 찾는 pos tagging을 nltk와 spacy 모듈을 통하여 진행하는 방법에 대하여 정리해보도록 하겠습니다. nltk를 활용한 POS Tagging 방법 먼저, nltk 모듈 설치가 진행되지 않았다면 아래 명령어로 설치해줍니다. !pip install nltk 품사 태깅을 위해서는 영어 기준으로 아래의 내부 라이브러리를 설치하는 과정이 필요합니다. import nltk nltk.download('punkt') nltk.download('averaged_perceptron_tagger') 위 과정들을 마쳤다면 문장 토큰화 후 pos tagging을 다음과 같이 진행해주시면 됩니다. from nltk import word_tokenize, pos_tag senten..

Python/NLP Code 2022.10.29

NLP Question Answering 전처리, 학습 및 성능 평가 코드 예제

HuggingFace에서 제공하는 transformers 모듈을 활용하여 pre-train model을 불러와 자연어 처리의 대표 task 중 하나인 Question Answering에 대하여 학습하고 검증하는 과정들의 파이썬 실습 코드 예제를 다루어보도록 하겠습니다. Step 1. 데이터셋 로드 및 전처리 과정 먼저, 학습을 위하여 데이터셋을 불러오고 모델 학습을 위한 전처리 과정을 수행해주어야 합니다. 여기서는 QA task의 대표 벤치마크 데이터셋인 SQuAD를 사용해보도록 하겠습니다. 전처리 과정에 대해서는 아래 링크의 허깅페이스 공식 페이지를 참고하였으니, 상세한 내용이 필요하신 분들은 해당 글을 참고해주세요. Question answering - Hugging Face Course Time t..

Python/NLP Code 2022.10.19

CLS 토큰이란? / 파이썬 BERT CLS 임베딩 벡터 추출 예제

[CLS] 토큰이란? BERT, RoBERTa 등의 언어 모델에서 문장 토큰들이 인코딩된 결과를 활용하는 것이 유용한 경우가 많은데 가장 첫 위치에 문장 공통 토큰인 [CLS]를 두어 해당 위치의 임베딩 결과를 대표 임베딩으로 주로 사용하게 되었습니다. BERT-base 크기의 모델의 경우 토큰 길이는 512이고 각 토큰 위치에서의 임베딩 결과는 768 차원 벡터로, 문장 input 1개에 대한 총 output 텐서의 shape는 512 * 768이 됩니다. 이 중 가장 앞 위치의 768 차원 벡터를 가져와 해당 문장의 대표 임베딩 결과로 활용하는 것이고, 흔히 NLP 관련 논문에서 CLS 토큰 임베딩으로 일컫는 것이 바로 이것입니다. CLS 임베딩 벡터 추출 코드 예제 먼저, BERT-base 모델을 ..

Python/NLP Code 2022.09.03

트랜스포머 모델 텍스트 생성(Text Generation) 원리 설명, 코드 구현

Transformer text generation 원리, 코드 구현 예제 트랜스포머 구조의 모델에서 텍스트를 생성하는 원리를 간단히 정리해보고, 허깅페이스에서 지원하는 Transformers 모듈을 활용하여 텍스트를 생성하는 코드를 구현하는 과정에 대하여 다루어보도록 하겠습니다. 트랜스포머 모델 텍스트 생성 원리(인코더-디코더 기반) Transformer 구조 모델에서 텍스트를 생성하는 원리를 간단하게 먼저 정리해보겠습니다. Encoder-Decoder 기반 구조로 이루어져있는 트랜스포머 기반 모델의 특징을 활용하여 인코더에서 input text를 임베딩한 결과와 이전 단계까지에서 생성된 output token을 디코더에서 받아들여 예측된 토큰 확률 분포에서 가장 확률이 높은 토큰 or 확률에 따른 샘플..

Python/NLP Code 2022.07.03

파이썬 BERT 모델 활용 IMDB 데이터셋 감성 분석 classification 예제

허깅페이스 BERT 영화 리뷰 감정 분류 튜토리얼 파이썬에서 transformers 라이브러리를 활용하여 BERT 구조 모델을 감성 분석 classification 과정에서 이용하는 예제에 대하여 다루어보도록 하겠습니다. (데이터셋으로는 IMDB 영화 감성 분석 데이터셋을 사용하겠습니다.) 참고로, 이 글은 아래 링크의 허깅페이스 공식 사이트 글의 내용을 기반으로 작성되었으며, 여기서는 해당 공식 글의 해설을 위주로 글을 전개하도록 하겠습니다. Text classification To fine-tune a model in TensorFlow, start by converting your datasets to the tf.data.Dataset format with to_tf_dataset. Specify..

Python/NLP Code 2022.06.18

파이썬 텍스트 데이터 증강 모듈 : nlpaug

Text Augmentation 라이브러리 nlpaug 파이썬에서 텍스트 데이터를 augmentation해야할 때 유용하게 사용할 수 있는 nlpaug 모듈에 대해서 소개해보고 사용법을 간단하게 살펴보겠습니다. nlpaug에서 지원하는 텍스트 증강 종류 우선, nlpaug 라이브러리에 대한 내용이 정리된 공식 github 페이지의 링크는 아래와 같습니다. GitHub - makcedward/nlpaug: Data augmentation for NLP Data augmentation for NLP . Contribute to makcedward/nlpaug development by creating an account on GitHub. github.com 해당 페이지의 내용을 확인해보시면 텍스트 데이터뿐..

Python/NLP Code 2022.05.13
반응형