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 |