Downloads · 30 days
694
25% of all-time downloads
skytnt/gpt2-japanese-lyric-medium
gpt2-japanese-lyric-medium is a text generation model from skytnt. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as mit.
The model is used to generate Japanese lyrics.
Downloads · 30 days
694
25% of all-time downloads
All-time downloads
2.7K
Public
Parameters
361M
6.8 GB on disk
Likes
0
Public
Click a slice to open those files.
.bin1.4 GB · 34%
How the weights are stored.
F32336M · 93%
From the Hugging Face model README
The model is used to generate Japanese lyrics.
import torch
from transformers import T5Tokenizer, GPT2LMHeadModel
device = torch.device("cpu")
if torch.cuda.is_available():
device = torch.device("cuda")
tokenizer = T5Tokenizer.from_pretrained("skytnt/gpt2-japanese-lyric-medium")
model = GPT2LMHeadModel.from_pretrained("skytnt/gpt2-japanese-lyric-medium")
model = model.to(device)
def gen_lyric(title: str, prompt_text: str):
if len(title)!= 0 or len(prompt_text)!= 0:
prompt_text = "<s>" + title + "[CLS]" + prompt_text
prompt_text = prompt_text.replace("\n", "\\n ")
prompt_tokens = tokenizer.tokenize(prompt_text)
prompt_token_ids = tokenizer.convert_tokens_to_ids(prompt_tokens)
prompt_tensor = torch.LongTensor(prompt_token_ids)
prompt_tensor = prompt_tensor.view(1, -1).to(device)
else:
prompt_tensor = None
# model forward
output_sequences = model.generate(
input_ids=prompt_tensor,
max_length=512,
top_p=0.95,
top_k=40,
temperature=1.0,
do_sample=True,
early_stopping=True,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=tokenizer.pad_token_id,
num_return_sequences=1
)
# convert model outputs to readable sentence
generated_sequence = output_sequences.tolist()[0]
generated_tokens = tokenizer.convert_ids_to_tokens(generated_sequence)
generated_text = tokenizer.convert_tokens_to_string(generated_tokens)
generated_text = "\n".join([s.strip() for s in generated_text.split('\\n')]).replace(' ', '\u3000').replace('<s>', '').replace('</s>', '\n\n---end---')
title_and_lyric = generated_text.split("[CLS]",1)
if len(title_and_lyric)==1:
title,lyric = "" , title_and_lyric[0].strip()
else:
title,lyric = title_and_lyric[0].strip(), title_and_lyric[1].strip()
return f"---{title}---\n\n{lyric}"
print(gen_lyric("桜",""))
Training data contains 143,587 Japanese lyrics which are collected from uta-net by lyric_download