ouiame commited on
Commit
64cb683
·
1 Parent(s): 544c1ab

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +81 -0
app.py CHANGED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers import RobertaTokenizerFast, EncoderDecoderModel
2
+ import torch
3
+ #initialisation de tokenizer
4
+ device = "cuda" if torch.cuda.is_available() else "cpu"
5
+ tokenizer = RobertaTokenizerFast.from_pretrained("Chemsseddine/bert2gpt2SUMM-finetuned-mlsum")
6
+ #Chemsseddine/bert2gpt2SUMM-finetuned-mlsum
7
+ #aider les token special
8
+ tokenizer.bos_token = tokenizer.cls_token
9
+ tokenizer.eos_token = tokenizer.sep_token
10
+ #initialisation du modele
11
+ model = EncoderDecoderModel.from_pretrained("Chemsseddine/bert2gpt2SUMM-finetuned-mlsum").to(device)
12
+ #tf.random.set_seed(0)
13
+ # generate summary
14
+ def generateSumm(input_texte,max,min):
15
+ # encoder le texte entrée
16
+ if input_texte and input_texte.strip():
17
+ if min<len(input_texte):
18
+
19
+ if max>min:
20
+
21
+ input_ids = tokenizer.encode(input_texte, return_tensors='pt')
22
+ #generation de resume a l'aide de texte encodé
23
+ summary_ids = model.generate(input_ids,#le texte encodé
24
+ max_length=max,#la longuer maximale du sequence de sortie
25
+ min_length=min,#la longuer minimum du sequence de sortie
26
+
27
+ num_beams=5,
28
+ repetition_penalty=2.5,
29
+ length_penalty=1.0,
30
+ early_stopping=True,#pour que la génération soit terminée lorsque toutes les hypothèses de faisceau ont atteint le jeton EOS.
31
+ no_repeat_ngram_size=2,#aucun 2 grammes n'apparaisse deux fois#Pour éviter les répétitions du même texte,
32
+ use_cache=True,
33
+ do_sample = True,
34
+ # num_return_sequences=5,
35
+ temperature = 0.8,
36
+ top_k = 50,
37
+ top_p = 0.95)
38
+ #decodé la sequence de generé par le modele
39
+ summary_text = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
40
+ return summary_text
41
+ else:
42
+
43
+ summary_text="La longueur minimale est grande que la maximale"
44
+ return summary_text
45
+ else:
46
+ summary_text="La longueur de texte entré est inferieur que la minimale que vous avez choisis"
47
+ return summary_text
48
+
49
+ else :
50
+ summary_text="Entrer votre Texte S'il vous plait"
51
+ return summary_text
52
+
53
+
54
+ from difflib import Differ
55
+ import gradio as gr
56
+ demo = gr.Blocks()
57
+
58
+ def diff_texts(text1, text2):
59
+ d = Differ()
60
+ return [
61
+ (token[2:], token[0] if token[0] != " " else None)
62
+ for token in d.compare(text1.split(), text2.split())]
63
+
64
+
65
+ inp=gr.inputs.Textbox(label="Text Originale",placeholder="Entrer Texte ici...")
66
+ out=gr.outputs.Textbox(label="Résumé")
67
+ mx_length=gr.Slider(40, 512)
68
+ mn_length=gr.Slider(10,120)
69
+
70
+ with demo:
71
+ 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 ")
72
+
73
+ with gr.Tabs():
74
+
75
+ with gr.TabItem("Résumé"):
76
+ gr.Interface(fn=generateSumm, inputs=[inp,mx_length,mn_length], outputs=out ,cache_examples=True,allow_flagging=False
77
+ )
78
+ with gr.TabItem("Comparer resultat"):
79
+ gr.Interface(diff_texts,[inp,out],gr.HighlightedText(label="Difference"),allow_flagging=False)
80
+
81
+ demo.launch(share=True,debug=True)