|
from transformers import RobertaTokenizerFast, EncoderDecoderModel |
|
import torch |
|
|
|
device = "cuda" if torch.cuda.is_available() else "cpu" |
|
tokenizer = RobertaTokenizerFast.from_pretrained("Chemsseddine/bert2gpt2SUMM-finetuned-mlsum") |
|
|
|
|
|
tokenizer.bos_token = tokenizer.cls_token |
|
tokenizer.eos_token = tokenizer.sep_token |
|
|
|
model = EncoderDecoderModel.from_pretrained("Chemsseddine/bert2gpt2SUMM-finetuned-mlsum").to(device) |
|
|
|
|
|
def generateSumm(input_texte,max,min): |
|
|
|
if input_texte and input_texte.strip(): |
|
if min<len(input_texte): |
|
|
|
if max>min: |
|
|
|
input_ids = tokenizer.encode(input_texte, return_tensors='pt') |
|
|
|
summary_ids = model.generate(input_ids, |
|
max_length=max, |
|
min_length=min, |
|
|
|
num_beams=5, |
|
repetition_penalty=2.5, |
|
length_penalty=1.0, |
|
early_stopping=True, |
|
no_repeat_ngram_size=2, |
|
use_cache=True, |
|
do_sample = True, |
|
|
|
temperature = 0.8, |
|
top_k = 50, |
|
top_p = 0.95) |
|
|
|
summary_text = tokenizer.decode(summary_ids[0], skip_special_tokens=True) |
|
return summary_text |
|
else: |
|
|
|
summary_text="La longueur minimale est grande que la maximale" |
|
return summary_text |
|
else: |
|
summary_text="La longueur de texte entré est inferieur que la minimale que vous avez choisis" |
|
return summary_text |
|
|
|
else : |
|
summary_text="Entrer votre Texte S'il vous plait" |
|
return summary_text |
|
|
|
|
|
from difflib import Differ |
|
import gradio as gr |
|
demo = gr.Blocks() |
|
|
|
def diff_texts(text1, text2): |
|
d = Differ() |
|
return [ |
|
(token[2:], token[0] if token[0] != " " else None) |
|
for token in d.compare(text1.split(), text2.split())] |
|
|
|
|
|
inp=gr.inputs.Textbox(label="Text Originale",placeholder="Entrer Texte ici...") |
|
out=gr.outputs.Textbox(label="Résumé") |
|
mx_length=gr.Slider(40, 512) |
|
mn_length=gr.Slider(10,120) |
|
|
|
with demo: |
|
gr.Markdown("***<center>Résumé Votre Text à l'aide de IA.</center>***\n\n Vous pouvez résumé votre texte par entrer le texte originale, et vous pouvez comparer le resultat avec votre texte originale en cliquant sur Comparer resultat ") |
|
|
|
with gr.Tabs(): |
|
|
|
with gr.TabItem("Résumé"): |
|
gr.Interface(fn=generateSumm, inputs=[inp,mx_length,mn_length], outputs=out ,cache_examples=True,allow_flagging=False |
|
) |
|
with gr.TabItem("Comparer resultat"): |
|
gr.Interface(diff_texts,[inp,out],gr.HighlightedText(label="Difference"),allow_flagging=False) |
|
|
|
demo.launch(share=True,debug=True) |