본문 바로가기
자연어처리(NLP) & CHAT GPT/NLP

[NLP] GPT, KoGPT - 실습

by 11car28z 2023. 8. 22.

KoGPT를 이용한 문장 생성

이전 단어로 부터 다음 단어 예측하기

 

1. KoGPT-2로 문장 생성하기

import numpy as np
import random
import tensorflow as tf
from transformers import AutoTokenizer
from transformers import TFGPT2LMHeadModel


model = TFGPT2LMHeadModel.from_pretrained('skt/kogpt2-base-v2', from_pt=True)
tokenizer = AutoTokenizer.from_pretrained('skt/kogpt2-base-v2')

 

 

sent = '근육이 커지기 위해서는'

#텍스트 인코딩 해주기
input_ids = tokenizer.encode(sent)
input_ids = tf.convert_to_tensor([input_ids])#tensor: 다차원 배열
print(input_ids)

 

output = model.generate(input_ids,
                        max_length=128,
                        repetition_penalty=2.0,
                        use_cache=True)
output_ids = output.numpy().tolist()[0]
print(output_ids)

 

tokenizer.decode(output_ids)

 

2. Numpy로 Top 5 뽑기

output = model(input_ids)
top5 = tf.math.top_k(output.logits[0, -1], k=5)

tokenizer.convert_ids_to_tokens(top5.indices.numpy())

 

3. Numpy Top 5로 문장 생성하기

sent = '근육이 커지기 위해서는'
input_ids = tokenizer.encode(sent)

while len(input_ids) < 50:
    output = model(np.array([input_ids]))
    # Top 5의 단어들을 추출
    top5 = tf.math.top_k(output.logits[0, -1], k=5)
    # Top 5의 단어들 중 랜덤으로 다음 단어로 선택.
    token_id = random.choice(top5.indices.numpy())
    input_ids.append(token_id)

tokenizer.decode(input_ids)

 

'자연어처리(NLP) & CHAT GPT > NLP' 카테고리의 다른 글

[NLP] BERT+ Fine-tuning, KoBERT - 실습  (2) 2023.08.23
[NLP] Transformer, BERT - 실습  (0) 2023.08.10
[NLP] BERT  (0) 2023.08.09
[NLP] Seq2Seq - 실습  (0) 2023.08.08
[NLP] Seq2eq에서 BERT까지  (0) 2023.08.07