Spaces:
Sleeping
Sleeping
import gradio as gr | |
from summarizer import TransformerSummarizer, Summarizer | |
title = "Summarizer" | |
description = """ | |
This is a demo of a text summarization NN - based on GPT-2, XLNet, BERT, | |
works with English, Ukrainian, and Russian (and a few other languages too, these are SOTA NN after all). | |
""" | |
NN_OPTIONS_LIST = ["mean", "max", "min", "median"] | |
NN_LIST = ["GPT-2", "XLNet", "BERT"] | |
def start_fn(article_input: str, reduce_option="mean", model_type='GPT-2') -> str: | |
""" | |
GPT-2 based solution, input full text, output summarized text | |
:param model_type: | |
:param reduce_option: | |
:param article_input: | |
:return summarized article_output: | |
""" | |
if model_type == "GPT-2": | |
GPT2_model = TransformerSummarizer(transformer_type="GPT2", transformer_model_key="gpt2-medium", | |
reduce_option=reduce_option) | |
full = ''.join(GPT2_model(article_input, min_length=60)) | |
return full | |
elif model_type == "XLNet": | |
XLNet_model = TransformerSummarizer(transformer_type="XLNet", transformer_model_key="xlnet-base-cased", | |
reduce_option=reduce_option) | |
full = ''.join(XLNet_model(article_input, min_length=60)) | |
return full | |
elif model_type == "BERT": | |
BERT_model = Summarizer(reduce_option=reduce_option) | |
full = ''.join(BERT_model(article_input, min_length=60)) | |
return full | |
face = gr.Interface(fn=start_fn, | |
inputs=[gr.inputs.Textbox(lines=2, placeholder="Paste article here.", label='Input Article'), | |
gr.inputs.Dropdown(NN_OPTIONS_LIST, label="Summarize mode"), | |
gr.inputs.Dropdown(NN_LIST, label="Selected NN")], | |
outputs=gr.inputs.Textbox(lines=2, placeholder="Summarized article here.", label='Summarized ' | |
'Article'), | |
title=title, | |
description=description, ) | |
face.launch(server_name="0.0.0.0", share=True) | |