반응형

Python/NLP Code 16

파이썬 OPENAI 텍스트 임베딩 모델 사용 및 유사도 구하기 예제

Python으로 OPENAI에서 제공하는 text embedding 모델을 활용하여 텍스트의 임베딩 벡터를 구해보고, 문서 간 코사인 유사도를 구하는 예제를 간략하게 다루어보도록 하겠습니다. OPENAI 텍스트 임베딩 모델 사용 코드 예시 현재 비교적 최신 모델인 text-embedding-3-small, text-embedding-3-large와 기존 모델인 text-embedding-ada-002에 대한 임베딩 API를 OPENAI에서 제공 중입니다. (모델 상세 정보는 해당 링크의 openai 공식 document 페이지를 참고해주세요.) 우선, 문자열 1개에 대한 텍스트 임베딩 벡터를 구하는 파이썬 코드 예시는 다음과 같습니다. from openai import OpenAI # !pip insta..

Python/NLP Code 2024.02.14

GPT 이미지+텍스트 멀티모달 API 활용 파이썬 코드 예제(gpt-4-vision-preview)

OPENAI에서 최근 공개된 gpt-4-vision-preview 모델을 활용하여 이미지의 정보를 같이 활용하여 GPT에게 질문을 하는 Python 코드 예시를 간략하게 다루어보도록 하겠습니다. 이 예제에서 사용한 이미지는 다음과 같은 고양이, 강아지가 2마리씩 있는 사진입니다. (출처는 pixabay 입니다.) OPENAI 이미지 활용 모델 사용 예제 이미지 input을 지원하는 gpt-4-vision-preview 모델로 이미지에 대한 질문을 던진 예시 파이썬 코드 스니펫은 다음과 같습니다. import openai # pip install openai OPENAI_API_KEY = "sk-..." # API KEY client = openai.OpenAI(api_key=OPENAI_API_KEY) ..

Python/NLP Code 2024.01.31

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
반응형