Sultannn's picture
Upload app.py
ec4f2ef
raw
history blame
4.31 kB
#GPT2 FINE TUNE
# library
import gradio as gr
import tensorflow as tf
from transformers import pipeline, AutoTokenizer, TFGPT2LMHeadModel
# function to run
def run_model(input_text,
max_length,
length_penalty):
#MBART Transformer
model_gpt2 = TFGPT2LMHeadModel.from_pretrained("Sultannn/gpt2-ft-id-puisi")
token_gpt2 = AutoTokenizer.from_pretrained("Sultannn/gpt2-ft-id-puisi")
# preprocessing text input
input_text = str(input_text)
input_text = ' '.join(input_text.split()).upper() # hapus white space dan ubah judul kata ke huruf besar
#encode input to vector
text_prompt = token_gpt2.encode(input_text,add_special_tokens=True, return_tensors="tf")
#generate input
summary_ids = model_gpt2.generate(text_prompt, # raw token
# param penting
max_length = max_length + len(input_text), # max token to generate
do_sample = True, # to sampling text
length_penalty = length_penalty, #Atur ke nilai <1.0 untuk menghasilkan urutan yang lebih pendek, ke nilai > 1.0 untuk menghasilkan urutan yang lebih panjang)
# pencarian modern
top_k = 50, # ambil top kata dengan probability tertinggi / kata yang paling mungkin
top_p = 0.95, # ambil kata dan jumlah kan probalitiy nya sesuai yang di definisikan
# no_repeat_ngram_size=2 , # agar tidak ada 2 gram/kata yang muncul dua kali:
# temperature=1.0, # untuk mengatur probability next word
# trick / metode pencarian tradisional
# num_beams=3, # Pencarian mengurangi risiko hilangnya urutan kata probabilitas tinggi yang tersembunyi dengan menjaga hipotesis yang paling mungkin pada setiap langkah waktu dan akhirnya memilih hipotesis yang memiliki probabilitas tertinggi secara keseluruhan
# early_stopping=True, # gunakan jika pakai num_beams > 1
# repetition_penalty=1.0, # mencegah kata pengulangan
# jika ingin lebih dari 1 output
# num_return_sequences=3,# num_return_sequences <= num_beams! jumlah balok skor tertinggi yang harus dikembalikan ? jumlah sample yang ingin dikeluarkan sesuai yang didefinisikan
)
#decode output to text
output = token_gpt2.decode(summary_ids[0], clean_up_tokenization_spaces=False)
return output # get output to str
# end
#example
contoh = [["TAMPAN"],["TIDAK JELAS"]]
#judul
title = "Generate Puisi Indonesia"
#deskripsi
description = "Demo for Puisi Generator ID. Models are GPT-2"
#footer
article = "<p style='text-align: center'><a href='https://github.com/sultanbst123/Text_summarization-id2id' target='_blank'><u>Untuk penjelasan lihat di repo ku</u> 😁</a></p>"
#run gradio
gr.Interface(
fn=run_model,
#input text
inputs=[
gr.inputs.Textbox(
lines=2,
placeholder="Ketik disini...",
label="Text",
),
#fine tune
#max length
gr.inputs.Slider(
minimum=100,
maximum=150,
step=5,
default=100,
label="Max Length(panjang maksimum urutan)",
),
#length_penalty
gr.inputs.Slider(
minimum=1,
maximum=3,
step=1,
default=1,
label="Length Penalty(pilih 1 jika ingin yang panjang)",
),
],
#output text
outputs=
gr.outputs.Textbox(
label="Output text",
),
title=title,
description=description,
article=article,
examples=contoh).launch(debug = True)
## GOOD LUCK