from transformers import RobertaTokenizerFast, EncoderDecoderModel import torch #initialisation de tokenizer device = "cuda" if torch.cuda.is_available() else "cpu" tokenizer = RobertaTokenizerFast.from_pretrained("Chemsseddine/bert2gpt2SUMM-finetuned-mlsum") #Chemsseddine/bert2gpt2SUMM-finetuned-mlsum #aider les token special tokenizer.bos_token = tokenizer.cls_token tokenizer.eos_token = tokenizer.sep_token #initialisation du modele model = EncoderDecoderModel.from_pretrained("Chemsseddine/bert2gpt2SUMM-finetuned-mlsum").to(device) #tf.random.set_seed(0) # generate summary def generateSumm(input_texte,max,min): # encoder le texte entrée if input_texte and input_texte.strip(): if minmin: input_ids = tokenizer.encode(input_texte, return_tensors='pt') #generation de resume a l'aide de texte encodé summary_ids = model.generate(input_ids,#le texte encodé max_length=max,#la longuer maximale du sequence de sortie min_length=min,#la longuer minimum du sequence de sortie num_beams=5, repetition_penalty=2.5, length_penalty=1.0, early_stopping=True,#pour que la génération soit terminée lorsque toutes les hypothèses de faisceau ont atteint le jeton EOS. no_repeat_ngram_size=2,#aucun 2 grammes n'apparaisse deux fois#Pour éviter les répétitions du même texte, use_cache=True, do_sample = True, # num_return_sequences=5, temperature = 0.8, top_k = 50, top_p = 0.95) #decodé la sequence de generé par le modele 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("***
Résumé Votre Text à l'aide de IA.
***\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(debug=True)